#include #include #include #include #define HAUTEUR 40 #define LARGEUR 60 #define CYCLE 10000L #define SEGMENT 10 /*enumération des différentes direction possible*/ enum Direction { UP=2, DOWN=3, LEFT=0, RIGHT=1 }; /*permet de stocker les coordonnes des segment du serpent*/ typedef struct{ int x, y; } SnakePoint; /*permet de concevoir le graphique sur lequel le serpent se déplacera*/ void graphique(){ InitialiserGraphique(); CreerFenetre(10,10,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); }; /*Déclaration de la fonction, qui va permettre d'afficher le serpent selon la couleur de la composante*/ void serpent(Point *snake,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; } if (snake[0].x < 0 || snake[0].x >= LARGEUR || snake[0].y < 0 || snake[0].y >= HAUTEUR){ *perdu = 1; return; } /*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() { /*initialisation du jeu*/ graphique(); int tab[HAUTEUR][LARGEUR]; int i,j; int perdu = 0; int dir= RIGHT; SnakePoint snake[HAUTEUR * LARGEUR]; SnakePoint pomme; unsigned long suivant; int g=0; suivant=Microsecondes()+CYCLE; /*taille minimum du serpent au début du jeu*/ int taille =10; 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 (!perdu) { serpent(snake, taille); mouvement(snake, &taille, &dir, &pomme, &perdu); usleep(CYCLE); } if (perdu){ printf("Vous avez perdu ! \n"); FermerGraphique(); } return EXIT_SUCCESS; }