redrum261
Messages postés4Date d'inscriptionlundi 27 mars 2006StatutMembreDernière intervention30 mai 2006
-
30 mai 2006 à 17:13
redrum261
Messages postés4Date d'inscriptionlundi 27 mars 2006StatutMembreDernière intervention30 mai 2006
-
30 mai 2006 à 19:40
Je ne comprens pas pourquoi le snake que j'ai programmé n'est pas en mouvement
si vous aviez des suggestions, des conseils je suis à votre écoute.
merci d'avance
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 30 mai 2006 à 17:55
Mais enfin deck_bsd, tu n'est pas bien réveillé?
Il est évident que redrum261 s'est trompé à la ligne 123, il faut remplacer if(!x) par if(!y), enfin je crois
int affiche(int taille, Coord p, Coord snak[],int score,int nb_pomme)
{
int i, j, MAX_SCORE;
//si snake mange sa queue
for(i = 2; i < taille; i++)
{
if(snak[0].x == snak[i].x && snak[0].y == snak[i].y)
{
gameOver();
return 0;
}
}
//teste les collisions avec des paroies
for(i=0; i<23; i++)
{
for(j=0; j<80; j++)
{
if(Niv[j][i]==1)
{
if(snak[0].x==(j+1) && snak[0].y==(i+3))
{
gameOver();
return 0;
}
}
}
}
//dessine le score, le record, le nombre de pommes mangées
gotoxy(1, 2);
for(i = 0; i < 80; i++)
printf("\xC4");
gotoxy(2,1);
printf(" Score: %d|", score);
if(score >= MAX_SCORE)
MAX_SCORE = score;
printf(" Record: %d|", MAX_SCORE);
printf(" Pomme(s): %d|", nb_pomme);
//dessine le snake
for(i = 0; i < taille; i++)
{
gotoxy(snak[i].x, snak[i].y);
if(i == 0)
{
printf("\x2"); //dessine la tête
}
else
{
printf("\xf"); //dessine le corps
}
}
void cherche_pomme(Coord snak[], Coord p, int taille)
{
int x, y, i, j;
int exit, ind;
do
{
exit = 1;
x = (rand() % 79) + 1;
y = (rand() % 22) + 1;
ind = 0;
//verifie si la pomme n'est pas ds le serpent
while(ind <= taille && exit)
{ if(x snak[ind].x && y snak[ind].y)
exit = 0;
ind++;
}
//verifie si la pomme n'est pas ds le mur
for(i=1; i<22; i++)
{
for(j=0; j<79; j++)
{
if(x==(j+1) && y==(i+3))
exit=0;
}
if(!exit) break;
}
if(!exit) break;
}
while(! exit);
p.x = x;
p.y = y;
//dessine la pomme
gotoxy(p.x, p.y);
printf("\x9d");
}
//fonction qui gere le jeu
void jeu()
{
Coord snak[1000];//coord du snake
Coord p;//coord de la pomme
Coord s;//coord de la tete du snake
int exit = 0, v;
message("PRET?");
//grande boucle du jeu
while(!exit)
{
//qd on frappe une touche
while(kbhit())
{
switch(getch())
{
case 'z':
if(sens != BAS)
{
sens = HAUT;
break;
}
case 's':
if(sens != HAUT)
{
sens = BAS;
break;
}
case 'q':
if(sens != DROITE)
{
sens = GAUCHE;
break;
}
case 'd':
if(sens != GAUCHE)
{
sens = DROITE;
break;
}
case ESC:
exit = 1;
break;
}
}
//qd on frappe pas de touches
while(!kbhit())
{
//si snake bouffe la pomme
if(snak[0].x == p.x && snak[0].y == p.y)
{
score = (score+5);
taille = (score+1);
nb_pomme=(nb_pomme+1);
cherche_pomme(snak, p, taille);
}
//deplace le snake dans telle direction
switch(sens)
{
case HAUT:
snak[0].x = s.x;
snak[0].y = (s.y)-1;
break;
case BAS:
snak[0].x = s.x;
snak[0].y = (s.y)+1;
break;
case GAUCHE:
snak[0].x = (s.x)-1;
snak[0].y = s.y;
break;
case DROITE:
snak[0].x = (s.x)+1;
snak[0].y = s.y;
break;
}
}
}
}
/*============================================================================*/
/* FONCTION PRINCIPALE */
/*============================================================================*/
deck_bsd
Messages postés1243Date d'inscriptionjeudi 31 mars 2005StatutMembreDernière intervention 3 août 20162 30 mai 2006 à 18:41
Ha en mode console en plus. Sauf erreur de ma part, dans ta grand
boucle du jeu tu ne fait null part appel a ta fonction afficher :s donc
comment veus-tu qu'il bouge.
Vous n’avez pas trouvé la réponse que vous recherchez ?
redrum261
Messages postés4Date d'inscriptionlundi 27 mars 2006StatutMembreDernière intervention30 mai 2006 30 mai 2006 à 19:09
je me rend bien compte mais je ne sais pas où la placer.
Elle me crée des choses bizarre... elle me place la tete du serpent dans la fenetre de score
Si quelqu'un a une idée de l'enplacement de la fonction affiche ou sur le programme en général je suis tout ouïe.
redrum261
Messages postés4Date d'inscriptionlundi 27 mars 2006StatutMembreDernière intervention30 mai 2006 30 mai 2006 à 19:40
oki ca c fait mais le probleme c'est que mon serpent se coupe en 2 bouts et un de ces bouts arrive dans la fenetre de score ce qui provoque le game over....