#1 Le 13/05/2006, à 19:29
- lost-in-the-shell
[Résolu][SDL] Test d'abscisse foireux
Bonjour,
Je développe (ou du moins j'essaie) un jeu à la Space Invaders en C/SDL.
Pour prendre en compte l'élimination des ennemis, j'ai créé une fonction testRencontreEnnemi, dont voici la définition :
int testRencontreEnnemi(SDL_Rect positionProjectile, SDL_Rect positionEnnemi, int * boolTir)
{
int compteurTRE = 0, rencontreOK = 1;
if(positionProjectile.y <= positionEnnemi.y + positionEnnemi.h)
{
for(compteurTRE = 0; compteurTRE <= positionEnnemi.w; compteurTRE++)
{
if(positionProjectile.x == positionEnnemi.x + compteurTRE)
{
rencontreOK = 0;
*boolTir = 0;
}
}
}
return rencontreOK;
}
Je l'ai ensuite utilisée dans mon jeu de la manière suivante :
if(boolTir)
SDL_BlitSurface(tir, NULL, ecran, &positionProjectile);
Pour information, boolTir vaut 1 si un projectile a été lancé, et vaut 0 si rien n'a été lancé.
Dans un cas de figure pareil :
Pourquoi testRencontreEnnemi retourne 0 ? Comment faire pour qu'il ne retourne pas cette valeur lors d'un cas pareil ?
Merci de vous pencher sur mes questions
lost-in-the-shell
PS : Pour installer la SDL / compiler avec la SDL : http://doc.ubuntu-fr.org/applications/sdl
PS 2 : Tarball des sources et des fichiers nécessaires au jeu ici. Désolé si c'est pas commenté, mais j'ai fait de mon mieux pour que le code soit compréhensible.
EDIT : Résolu.
Dernière modification par lost-in-the-shell (Le 14/05/2006, à 19:59)
Linux user #401253 - Ubuntu user #3023 .
Nick sur IRC : naji.
Pensez à adhérer au Comité de lutte contre le SMS.
Hors ligne
#2 Le 13/05/2006, à 21:40
- ffomnislash
Re : [Résolu][SDL] Test d'abscisse foireux
int testRencontreEnnemi(SDL_Rect positionProjectile, SDL_Rect positionEnnemi, int * boolTir)
{
int compteurTRE = 0, rencontreOK = 1;
if(positionProjectile.y >= positionEnnemi.y && positionProjectile.y <= positionEnnemi.y + positionEnnemi.h)
{
for(compteurTRE = 0; compteurTRE <= positionEnnemi.w; compteurTRE++)
{
if(positionProjectile.x == positionEnnemi.x + compteurTRE)
{
rencontreOK = 0;
*boolTir = 0;
}
}
}
return rencontreOK;
}
Ce ne serait pas ca le pb ?
Dernière modification par ffomnislash (Le 13/05/2006, à 21:41)
-- Mon blog --
Hors ligne
#3 Le 14/05/2006, à 19:58
- lost-in-the-shell
Re : [Résolu][SDL] Test d'abscisse foireux
Mais oui bien sûr ! J'avais pas fixé de limite minimale !
C'est certainement dû au fait que dans la première version, l'ennemi était blitté à y = 0, donc le test n'avait pas de grande importance.
Conclusion : un bout de code change, le reste suit.
PS : Merci .
Linux user #401253 - Ubuntu user #3023 .
Nick sur IRC : naji.
Pensez à adhérer au Comité de lutte contre le SMS.
Hors ligne