#include #include #include #include #define HAUTEUR 40 #define LARGEUR 60 #define CYCLE 10000L #define SEGMENT 25 enum Direction { UP=2, DOWN=3, LEFT=0, RIGHT=1 }; /*permet de stocker les coordonnes des segment du serpent*/ def struct{ int x, y }point; /*permet de concevoir le graphique sur lequel le serpent se déplacera*/ void graphique(){ InitialiserGraphique(); CreerFenetre(1700,950,1700,950); couleur c, b; b=CouleurParComposante(0,0,0); ChoisirCouleurDessin(b); RemplirRectangle(0,0,1750,950); c=CouleurParComposante(111,255,94); ChoisirCouleurDessin(c); RemplirRectangle(100,100,1500,750); FermerGraphique(); }; void serpent(int tab[][LARGEUR],int taille) { int i; for(i=0;i0;i--){ snake[i]= snake[i-1]; } /*cette partie permet de gérer les mouvement de la tete*/ if(ToucheEnAttente()){ if (Touche() ==XK_Left && *dir !=RIGHT){ *dir= LEFT; } else if(Touche()==XK_Right && *dir != LEFT){ *dir= RIGHT; } else if(Touche()==XK_Up && *dir != DOWN){ *dir= UP; } else if(Touche()==XK_Down && *dir != UP){ *dir= DOWN; } } /*deplace la tete en fonction de la direction*/ if (*dir== LEFT){ snake[0].x -=1; } else if(*dir== RIGHT){ snake[0].x +=1; } else if(*dir== UP){ snake[0].y -=1; } else if(*dir== DOWN){ snake[0].y +=1; } /*cette partie permet de verifier si le serpent a mangerla pomme a partir des coordonnes et genere une nouvelle pomme a une position aleatoire grace a rand*/ if (snake[0].x == pomme->x && snake[0].y == pomme->y){ pomme->x = rand()% LARGEUR; pomme->y = rand()% HAUTEUR; /*permet d'augmenter la taille du serpent*/ (*taille)++; } } int main() { int dir= RIGHT; Point snake[HAUTEUR * LARGEUR]; Point pomme; unsigned long suivant; int g=0; suivant=Microsecondes()+CYCLE; int taille =3; srand(time(NULL)); for(int i = 0;i < taille; i++){ snake[i].x = LARGEUR / 2; snake[i].y = HAUTEUR / 2+1; } pomme->x = rand()% LARGEUR; pomme->y = rand()% HAUTEUR; graphique(); while(1){ if (Microsecondes()>suivant){ g++; graphique(); suivant=Microsecondes()+CYCLE; } mouvement(tab,&taille,&dir); for(int i = 0; i < taille; i++){ if (tab[i][0] < 0) tab [i][0] = LARGEUR - 1; if (tab[i][0] >= LARGEUR) tab [i][0] = 0; if (tab[i][1] < 0) tab [i][1] = HAUTEUR - 1; if (tab[i][1] >= HAUTEUR) tab [i][1] = 0; } serpent(tab,taille); } return EXIT_SUCCESS; }