#include <graph.h> #include <stdio.h> #include <stdlib.h> #include <time.h> #include "main.h" #include "gui.h" #include "scene.h" int MourrirSerpent(PIXELS *serpent,PIXELS *obstacle, unsigned long longueur_serpent,unsigned long longueur_obstacle) { unsigned long i = 0; for(i=1;i<longueur_serpent;i++) { if(serpent[0].x == serpent[i].x && serpent[0].y == serpent[i].y ) { return 1; } } for(i=1;i<longueur_obstacle;i++) { if(serpent[0].x == obstacle[i].x && serpent[0].y == obstacle[i].y ) { return 1; } } if (serpent[0].x<=0 || serpent[0].x>W_GAME || serpent[0].y<=0 || serpent[0].y>H_GAME) { return 1; } return 0; } int MangerPastille(PIXELS *serpent, PIXELS* pastilles,PIXELS *obstacle,unsigned long *score,unsigned long longueur_serpent,unsigned long longueur_obstacle,unsigned long int *vitesse) { int i = 0; for(i=0;i<PASTILLES;i++) { if(serpent[0].x == pastilles[i].x && serpent[0].y == pastilles[i].y) { pastilles[i] = gen_pastille(serpent,pastilles,obstacle,longueur_serpent,longueur_obstacle); ChargerImage("./images/PommePastille.png",pastilles[i].x,pastilles[i].y,0,0,T_PIXEL,T_PIXEL); *score+=5; *vitesse/=1.008; return 1; } } return 0; } void DeplacementSerpent(int direction, PIXELS *serpent, unsigned long *longueur) { /* Sauvegarder la position actuelle de la queue du serpent */ int queueX = serpent[*longueur - 1].x; int queueY = serpent[*longueur - 1].y; unsigned long i = 0; /* Mettre à jour les positions du corps du serpent */ for (i = *longueur - 1; i > 0; --i) { serpent[i].x = serpent[i - 1].x; serpent[i].y = serpent[i - 1].y; } /* Effacer la queue du serpent */ couleur bg = CouleurParComposante(171, 204, 104); ChoisirEcran(2); ChoisirCouleurDessin(bg); RemplirRectangle(queueX, queueY, T_PIXEL, T_PIXEL); /* Mettre à jour la position de la tête du serpent */ if (direction == 0) { serpent[0].x -= T_PIXEL; /* Vers la gauche */ } else if (direction == 1) { serpent[0].y -= T_PIXEL; /* Vers le haut */ } else if (direction == 2) { serpent[0].x += T_PIXEL; /* Vers la droite */ } else if (direction == 3) { serpent[0].y += T_PIXEL; /* Vers le bas */ } /* Afficher la nouvelle tête du serpent */ ChargerImage("./images/SnakePart.png", serpent[0].x, serpent[0].y, 0, 0, T_PIXEL, T_PIXEL); } /* Mettre à jour la fonction Serpent */ int Serpent(PIXELS *serpent, PIXELS *pastilles, PIXELS *obstacle, unsigned long *score, unsigned long *longueur_serpent, unsigned long longueur_obstacle, unsigned long int *vitesse, int direction) { DeplacementSerpent(direction, serpent, &(*longueur_serpent)); if (MourrirSerpent(serpent, obstacle, *longueur_serpent, longueur_obstacle) == 1) { return 2; } if (MangerPastille(serpent, pastilles, obstacle, score, *longueur_serpent, longueur_obstacle, vitesse) == 1) { *longueur_serpent += 2; return 1; } return 0; }