Collision dans sdl
Fermé
riri785
Messages postés
13
Date d'inscription
jeudi 13 août 2009
Statut
Membre
Dernière intervention
22 janvier 2012
-
4 juil. 2011 à 16:18
riri785 Messages postés 13 Date d'inscription jeudi 13 août 2009 Statut Membre Dernière intervention 22 janvier 2012 - 9 juil. 2011 à 20:46
riri785 Messages postés 13 Date d'inscription jeudi 13 août 2009 Statut Membre Dernière intervention 22 janvier 2012 - 9 juil. 2011 à 20:46
A voir également:
- Collision dans sdl
- Probleme collision - Forum Réseau
- Collision pygame - Forum Python
- Pygame collision ✓ - Forum Python
- Probleme collision avec tkinter - Forum Python
- SDL ou SDL2 !?! - Forum C
5 réponses
freesta
Messages postés
591
Date d'inscription
mercredi 26 novembre 2008
Statut
Membre
Dernière intervention
12 avril 2012
26
Modifié par freesta le 5/07/2011 à 08:04
Modifié par freesta le 5/07/2011 à 08:04
déclare ta structure AABB avant le main
a+
N'attribuez jamais à la malveillance ce qui s'explique très bien par l'incompétence.Le logiciel, c'est comme le sexe, c'est meilleur quand c'est libre/gratuit
a+
N'attribuez jamais à la malveillance ce qui s'explique très bien par l'incompétence.Le logiciel, c'est comme le sexe, c'est meilleur quand c'est libre/gratuit
freesta
Messages postés
591
Date d'inscription
mercredi 26 novembre 2008
Statut
Membre
Dernière intervention
12 avril 2012
26
4 juil. 2011 à 16:22
4 juil. 2011 à 16:22
ne saute pas des étape si tu poursuit les cours sur le site du zerro, il vont te montrer comment faire un mini jeux avec mario et la tu a tout dedans pour la gestion de colision
riri785
Messages postés
13
Date d'inscription
jeudi 13 août 2009
Statut
Membre
Dernière intervention
22 janvier 2012
4 juil. 2011 à 16:24
4 juil. 2011 à 16:24
Oui c'est justement la que je ne comprend plus la collision.
riri785
Messages postés
13
Date d'inscription
jeudi 13 août 2009
Statut
Membre
Dernière intervention
22 janvier 2012
4 juil. 2011 à 18:58
4 juil. 2011 à 18:58
bon j'ai un peut avancer depuis maintenant j'ai sa :
#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
#define true 1
#define false 0
int main(int argc, char *argv[])
{{
SDL_Surface *ecran = NULL , *box1 = NULL , *box2 = NULL;
SDL_Rect positionZozor;
SDL_Rect positionb;
SDL_Event event;
int continuer = 1;
SDL_Rect AABB;
SDL_Init(SDL_INIT_VIDEO);
ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
SDL_WM_SetCaption("Gestion des évènements en SDL", NULL);
box2 = SDL_LoadBMP("icon.bmp");
box1 = SDL_LoadBMP("cb.bmp");
SDL_SetColorKey(box1, SDL_SRCCOLORKEY, SDL_MapRGB(box1->format, 0, 0, 255));
/* On centre Zozor à l'écran */
positionZozor.x = ecran->w / 2 - box1->w / 2;
positionZozor.y = ecran->h / 2 - box1->h / 2;
positionb.x = 0;
positionb.y = 0;
SDL_EnableKeyRepeat(10, 10);
struct AABB
{
int x;
int y;
int w;
int h;
};
struct AABB box;
box.x = 50;
box.y = 500;
box.w = 800;
box.h = 101;
while (continuer)
{
SDL_WaitEvent(&event);
switch(event.type)
{
case SDL_QUIT:
continuer = 0;
break;
case SDL_KEYDOWN:
switch(event.key.keysym.sym)
{
case SDLK_UP: // Flèche haut
positionZozor.y--;
break;
case SDLK_DOWN: // Flèche bas
positionZozor.y++;
break;
case SDLK_RIGHT: // Flèche droite
positionZozor.x++;
break;
case SDLK_LEFT: // Flèche gauche
positionZozor.x--;
break;
}
break;
}
SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255)); /* On efface l'écran */
SDL_BlitSurface(box1, NULL, ecran, &positionZozor);
SDL_BlitSurface(box2, NULL, ecran, &positionb);
SDL_Flip(ecran); /* On met à jour l'affichage */
}
SDL_FreeSurface(box1);
SDL_Quit();
return EXIT_SUCCESS;
}
return 0;}
bool Collision(AABB box1,AABB box2)
{
if((box2.x >= box1.x + box1.w) // trop à droite
|| (box2.x + box2.w <= box1.x) // trop à gauche
|| (box2.y >= box1.y + box1.h) // trop en bas
|| (box2.y + box2.h <= box1.y)) // trop en haut
return false;
else
return true;
}
mais il met comme problème :
C:\Users\harry\Documents\testsdl - Copie\main.cpp|117|error: 'AABB' was not declared in this scope|
#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
#define true 1
#define false 0
int main(int argc, char *argv[])
{{
SDL_Surface *ecran = NULL , *box1 = NULL , *box2 = NULL;
SDL_Rect positionZozor;
SDL_Rect positionb;
SDL_Event event;
int continuer = 1;
SDL_Rect AABB;
SDL_Init(SDL_INIT_VIDEO);
ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
SDL_WM_SetCaption("Gestion des évènements en SDL", NULL);
box2 = SDL_LoadBMP("icon.bmp");
box1 = SDL_LoadBMP("cb.bmp");
SDL_SetColorKey(box1, SDL_SRCCOLORKEY, SDL_MapRGB(box1->format, 0, 0, 255));
/* On centre Zozor à l'écran */
positionZozor.x = ecran->w / 2 - box1->w / 2;
positionZozor.y = ecran->h / 2 - box1->h / 2;
positionb.x = 0;
positionb.y = 0;
SDL_EnableKeyRepeat(10, 10);
struct AABB
{
int x;
int y;
int w;
int h;
};
struct AABB box;
box.x = 50;
box.y = 500;
box.w = 800;
box.h = 101;
while (continuer)
{
SDL_WaitEvent(&event);
switch(event.type)
{
case SDL_QUIT:
continuer = 0;
break;
case SDL_KEYDOWN:
switch(event.key.keysym.sym)
{
case SDLK_UP: // Flèche haut
positionZozor.y--;
break;
case SDLK_DOWN: // Flèche bas
positionZozor.y++;
break;
case SDLK_RIGHT: // Flèche droite
positionZozor.x++;
break;
case SDLK_LEFT: // Flèche gauche
positionZozor.x--;
break;
}
break;
}
SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255)); /* On efface l'écran */
SDL_BlitSurface(box1, NULL, ecran, &positionZozor);
SDL_BlitSurface(box2, NULL, ecran, &positionb);
SDL_Flip(ecran); /* On met à jour l'affichage */
}
SDL_FreeSurface(box1);
SDL_Quit();
return EXIT_SUCCESS;
}
return 0;}
bool Collision(AABB box1,AABB box2)
{
if((box2.x >= box1.x + box1.w) // trop à droite
|| (box2.x + box2.w <= box1.x) // trop à gauche
|| (box2.y >= box1.y + box1.h) // trop en bas
|| (box2.y + box2.h <= box1.y)) // trop en haut
return false;
else
return true;
}
mais il met comme problème :
C:\Users\harry\Documents\testsdl - Copie\main.cpp|117|error: 'AABB' was not declared in this scope|
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
riri785
Messages postés
13
Date d'inscription
jeudi 13 août 2009
Statut
Membre
Dernière intervention
22 janvier 2012
9 juil. 2011 à 20:46
9 juil. 2011 à 20:46
Un grand merci pour la réponse maintenant j'ai plus de message d'erreur mais... sa ne marche toujours pas, svp aider moi je n'arrive vraiment pas...
voila se que j'ai:
#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
#define true 1
#define false 0
struct AABB
{
int x;
int y;
int w;
int h;
};
int main(int argc, char *argv[])
{{
SDL_Surface *ecran = NULL , *box1 = NULL , *box2 = NULL;
SDL_Rect positionZozor;
SDL_Rect positionb;
SDL_Event event;
int continuer = 1;
SDL_Rect AABB;
SDL_Init(SDL_INIT_VIDEO);
ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
SDL_WM_SetCaption("Gestion des évènements en SDL", NULL);
box2 = SDL_LoadBMP("icon.bmp");
box1 = SDL_LoadBMP("cb.bmp");
SDL_SetColorKey(box1, SDL_SRCCOLORKEY, SDL_MapRGB(box1->format, 0, 0, 255));
/* On centre Zozor à l'écran */
positionZozor.x = ecran->w / 2 - box1->w / 2;
positionZozor.y = ecran->h / 2 - box1->h / 2;
positionb.x = 0;
positionb.y = 0;
SDL_EnableKeyRepeat(10, 10);
struct AABB box;
box.x = 50;
box.y = 500;
box.w = 800;
box.h = 101;
while (continuer)
{
SDL_WaitEvent(&event);
switch(event.type)
{
case SDL_QUIT:
continuer = 0;
break;
case SDL_KEYDOWN:
switch(event.key.keysym.sym)
{
case SDLK_UP: // Flèche haut
positionZozor.y--;
break;
case SDLK_DOWN: // Flèche bas
positionZozor.y++;
break;
case SDLK_RIGHT: // Flèche droite
positionZozor.x++;
break;
case SDLK_LEFT: // Flèche gauche
positionZozor.x--;
break;
}
break;
}
SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255)); /* On efface l'écran */
SDL_BlitSurface(box1, NULL, ecran, &positionZozor);
SDL_BlitSurface(box2, NULL, ecran, &positionb);
SDL_Flip(ecran); /* On met à jour l'affichage */
}
SDL_FreeSurface(box1);
SDL_FreeSurface(box2);
SDL_Quit();
return EXIT_SUCCESS;
}
return 0;}
bool Collision(AABB box1,AABB box2)
{
if((box2.x >= box1.x + box1.w) // trop à droite
|| (box2.x + box2.w <= box1.x) // trop à gauche
|| (box2.y >= box1.y + box1.h) // trop en bas
|| (box2.y + box2.h <= box1.y)) // trop en haut
return false;
else
return true;
}
voila se que j'ai:
#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
#define true 1
#define false 0
struct AABB
{
int x;
int y;
int w;
int h;
};
int main(int argc, char *argv[])
{{
SDL_Surface *ecran = NULL , *box1 = NULL , *box2 = NULL;
SDL_Rect positionZozor;
SDL_Rect positionb;
SDL_Event event;
int continuer = 1;
SDL_Rect AABB;
SDL_Init(SDL_INIT_VIDEO);
ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
SDL_WM_SetCaption("Gestion des évènements en SDL", NULL);
box2 = SDL_LoadBMP("icon.bmp");
box1 = SDL_LoadBMP("cb.bmp");
SDL_SetColorKey(box1, SDL_SRCCOLORKEY, SDL_MapRGB(box1->format, 0, 0, 255));
/* On centre Zozor à l'écran */
positionZozor.x = ecran->w / 2 - box1->w / 2;
positionZozor.y = ecran->h / 2 - box1->h / 2;
positionb.x = 0;
positionb.y = 0;
SDL_EnableKeyRepeat(10, 10);
struct AABB box;
box.x = 50;
box.y = 500;
box.w = 800;
box.h = 101;
while (continuer)
{
SDL_WaitEvent(&event);
switch(event.type)
{
case SDL_QUIT:
continuer = 0;
break;
case SDL_KEYDOWN:
switch(event.key.keysym.sym)
{
case SDLK_UP: // Flèche haut
positionZozor.y--;
break;
case SDLK_DOWN: // Flèche bas
positionZozor.y++;
break;
case SDLK_RIGHT: // Flèche droite
positionZozor.x++;
break;
case SDLK_LEFT: // Flèche gauche
positionZozor.x--;
break;
}
break;
}
SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255)); /* On efface l'écran */
SDL_BlitSurface(box1, NULL, ecran, &positionZozor);
SDL_BlitSurface(box2, NULL, ecran, &positionb);
SDL_Flip(ecran); /* On met à jour l'affichage */
}
SDL_FreeSurface(box1);
SDL_FreeSurface(box2);
SDL_Quit();
return EXIT_SUCCESS;
}
return 0;}
bool Collision(AABB box1,AABB box2)
{
if((box2.x >= box1.x + box1.w) // trop à droite
|| (box2.x + box2.w <= box1.x) // trop à gauche
|| (box2.y >= box1.y + box1.h) // trop en bas
|| (box2.y + box2.h <= box1.y)) // trop en haut
return false;
else
return true;
}