diff --git a/main.c b/main.c index 9a7a380..693feff 100644 --- a/main.c +++ b/main.c @@ -13,8 +13,30 @@ #define DECALEMENT 30 -#define delta 10000L +#define delta 1000000L +void DeplacementSerpent(int direction ,int *serpent, int longueur) +{ + int i = 0; + + + if(direction == 0) /* Direction vers la gauche */ + { + printf("Gauche %d\n",direction); + } + else if(direction == 1) /* Direction vers le haut */ + { + printf("Haut %d\n",direction); + } + else if(direction == 2) /* Direction vers la droite */ + { + printf("Droite %d\n",direction); + } + else if(direction == 3) /* Direction vers le bas */ + { + printf("Bas %d\n",direction); + } +} int ArrondirPixel(int nombre) /* Calcule un arrondi du pixel pour pouvoir respecter la norme des 40 lignes et 60 colonnes */ { @@ -31,7 +53,7 @@ void gen_pastille(int nb_pastille, int *p_pastilles) /* Ajout des pointeurs pour /* nb_pastille = int nombre de pastille voulue , p_pastilles est un pointeur d'un tableau de pixels qui sont des pastilles*/ /*Générer une pastille dans la grid*/ - /*Seulement le code n'est pas complet*/ + /*Code n'est pas complet*/ /*-Elles se génèrent à des endroits qui peuvent être les mêmes ou gêner le snake*/ { @@ -88,9 +110,11 @@ void DessinerScene(int* pastilles) /* Dessine la scène */ void InitialisationDuSerpent(int *p_serpent) /* L'initialisation du serpent */ { int x_millieu = 0, y_millieu = 0 , compteur = 0; + couleur o; couleur j; + o=CouleurParNom("Gold"); j=CouleurParNom("yellow"); - ChoisirCouleurDessin(j); + ChoisirCouleurDessin(o); x_millieu = T_PIXEL*30; /* 30 = 60 colonnes divisé par 2*/ y_millieu = T_PIXEL*20; /* 20 = 40 colonnes divisé par 2*/ RemplirRectangle(x_millieu,y_millieu,T_PIXEL,T_PIXEL); @@ -101,6 +125,7 @@ void InitialisationDuSerpent(int *p_serpent) /* L'initialisation du serpent */ p_serpent[1] = y_millieu; for(compteur=0;compteur<=18;compteur+=2) /* Commence par 1 car p_serpent index 0 initialisées pour la tête et 2 + 2x9 = 10 couples de coordonnées 2D */ { + ChoisirCouleurDessin(j); p_serpent[compteur+2] = p_serpent[compteur]+T_PIXEL; p_serpent[compteur+3] = p_serpent[compteur+1]; @@ -117,14 +142,28 @@ int main() int go_on=1; int n; int x_pastille,y_pastille; - int p_serpent[100]; /* A faire en tableau dynamique*/ - int pastilles[5]; /* A faire en tableau dynamique */ + + size_t longueur_serpent = 20; + size_t longueur_pastilles = 10; + int *serpent = (int *)malloc(longueur_serpent * sizeof(int)); + int *pastilles = (int *)malloc(longueur_pastilles * sizeof(int)); + int direction = 0; + + if(serpent == NULL) { + fprintf(stderr, "Erreur d'allocation de mémoire.\n"); + return EXIT_FAILURE; + } + if(pastilles == NULL) { + fprintf(stderr, "Erreur d'allocation de mémoire.\n"); + return EXIT_FAILURE; + } + InitialiserGraphique(); CreerFenetre(10,10,W_WINDOW,H_WINDOW); /* Peut être changer cette ligne avec la fonction Maxx et Maxy fournie dans graph.h ??*/ ChoisirTitreFenetre("SNAKE SAE11 IN C"); DessinerScene(pastilles); - InitialisationDuSerpent(p_serpent); + InitialisationDuSerpent(serpent); while(go_on) /* Lancement du cycle pour les Inputs et le Jeu*/ { @@ -133,17 +172,21 @@ int main() switch (Touche()) { case XK_Up: - printf("Touche haut\n"); - break; - case XK_Down: - printf("Touche bas\n"); - break; - case XK_Left: - printf("Touche gauche\n"); - break; - case XK_Right: - printf("Touche droite\n"); - break; + direction = 1; + DeplacementSerpent(direction ,serpent, longueur_serpent); + break; + case XK_Down: + direction = 3; + DeplacementSerpent(direction ,serpent, longueur_serpent); + break; + case XK_Left: + direction = 0; + DeplacementSerpent(direction ,serpent, longueur_serpent); + break; + case XK_Right: + direction = 2; + DeplacementSerpent(direction ,serpent, longueur_serpent); + break; default: printf("Autre touche\n"); @@ -156,6 +199,7 @@ int main() { n++; suivant=Microsecondes()+delta; + DeplacementSerpent(direction,serpent,longueur_serpent); } } }