diff --git a/main.c b/main.c index 6054ceb..af0bf85 100644 --- a/main.c +++ b/main.c @@ -13,12 +13,16 @@ #define DECALEMENT 30 -#define delta 1000000L +#define delta 100000L void Affichertimer(int n) /*Afficher le temps passé*/ { char buf[100]; + couleur j; + j=CouleurParNom("yellow"); + ChoisirCouleurDessin(j); + ChoisirEcran(1); CopierZone(2,1,0,0,930,710,0,0); snprintf(buf,100,"temps : %05d",n); @@ -28,30 +32,57 @@ void Affichertimer(int n) /*Afficher le temps passé*/ CopierZone(1,0,0,0,930,710,0,0); } - - - - void DeplacementSerpent(int direction ,int *serpent, int longueur) { - int i = 0; + int tempX = serpent[0]; + int tempY = serpent[1]; + int i; + couleur g; + couleur j; + ChoisirEcran(2); + j=CouleurParNom("yellow"); + g=CouleurParNom("lightgreen"); + ChoisirCouleurDessin(g); + RemplirRectangle(serpent[longueur-2],serpent[longueur-1],T_PIXEL,T_PIXEL); + for (i = 2; i < longueur; i += 2) { + int tempX2 = serpent[i]; + int tempY2 = serpent[i + 1]; + + serpent[i] = tempX; + serpent[i + 1] = tempY; + + tempX = tempX2; + tempY = tempY2; + } + + ChoisirCouleurDessin(j); if(direction == 0) /* Direction vers la gauche */ { printf("Gauche %d\n",direction); + serpent[0]-=T_PIXEL; + + RemplirRectangle(serpent[0],serpent[1],T_PIXEL,T_PIXEL); + printf("Longueur = %d | x %d | y %d",longueur,serpent[longueur-1],serpent[longueur-2]); } else if(direction == 1) /* Direction vers le haut */ { printf("Haut %d\n",direction); + serpent[1]-=T_PIXEL; + RemplirRectangle(serpent[0],serpent[1],T_PIXEL,T_PIXEL); } else if(direction == 2) /* Direction vers la droite */ { printf("Droite %d\n",direction); + serpent[0]+=T_PIXEL; + RemplirRectangle(serpent[0],serpent[1],T_PIXEL,T_PIXEL); } else if(direction == 3) /* Direction vers le bas */ { printf("Bas %d\n",direction); + serpent[1]+=T_PIXEL; + RemplirRectangle(serpent[0],serpent[1],T_PIXEL,T_PIXEL); } } @@ -107,7 +138,7 @@ void gen_pastille(int nb_pastille, int *p_pastilles) /* Ajout des pointeurs pour p_pastilles[i+1] = y_pastille ; printf("x : %d ; y : %d\n",p_pastilles[i],p_pastilles[i+1]); - + ChoisirEcran(2); ChoisirCouleurDessin(r); RemplirRectangle(x_pastille,y_pastille,T_PIXEL,T_PIXEL); } @@ -128,13 +159,13 @@ 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"); + int i = 0; j=CouleurParNom("yellow"); - ChoisirCouleurDessin(o); + ChoisirCouleurDessin(j); x_millieu = T_PIXEL*30; /* 30 = 60 colonnes divisé par 2*/ y_millieu = T_PIXEL*20; /* 20 = 40 colonnes divisé par 2*/ + ChoisirEcran(2); RemplirRectangle(x_millieu,y_millieu,T_PIXEL,T_PIXEL); /* printf("x_millieu : %d | y_millieu : %d\n",x_millieu,y_millieu); DEBUG*/ @@ -143,7 +174,6 @@ 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]; @@ -151,6 +181,11 @@ void InitialisationDuSerpent(int *p_serpent) /* L'initialisation du serpent */ RemplirRectangle(p_serpent[compteur+2],p_serpent[compteur+3],T_PIXEL,T_PIXEL); } + printf("Avant \n"); + for (i = 0; i < 20; i += 2) { + printf("(%d, %d) ", p_serpent[i], p_serpent[i + 1]); + } + printf("\n"); } @@ -190,19 +225,15 @@ int main() { case XK_Up: 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: @@ -216,7 +247,7 @@ int main() { n++; Affichertimer(n); - suivant=Microsecondes()+delta; + suivant=Microsecondes()+delta; DeplacementSerpent(direction,serpent,longueur_serpent); } diff --git a/prog b/prog index 7d15374..d6a6b8e 100755 Binary files a/prog and b/prog differ diff --git a/test.c b/test.c index 98225a3..bbe5266 100644 --- a/test.c +++ b/test.c @@ -1,58 +1,45 @@ -#include<stdio.h> -#include<stdlib.h> -#include<graph.h> -#define delta 1000000L - -void DessinerScene(int sprite,int x,int y,int n) -{ - char buf[100]; - ChoisirEcran(1); - CopierZone(2,1,0,0,800,500,0,0); - snprintf(buf,100,"temps : %05d",n); - EcrireTexte(10,20,buf,0); - AfficherSprite(sprite,x,y); - CopierZone(1,0,0,0,800,500,0,0); +#include <stdio.h> + +#define TAILLE 20 + +/* Fonction pour afficher un tableau de coordonnées */ +void afficherSerpent(int serpent[], int taille) { + int i = 0; + for (i = 0; i < taille; i += 2) { + printf("(%d, %d) ", serpent[i], serpent[i + 1]); + } + printf("\n"); } - -int main() -{ - int pingouin; - int x,y,old_x,old_y; - int n; - unsigned long suivant; - int go_on=1; - - InitialiserGraphique(); - CreerFenetre(0,0,800,500); - ChoisirEcran(2); - ChargerImageFond("./images/arctis2.jpg"); - pingouin=ChargerSprite("./images/walk-0.png"); - x=y=old_x=old_y=10; - n=0; - suivant=Microsecondes()+delta; - - while(go_on) - { - if (SourisCliquee()) go_on=0; - else - { - if (Microsecondes()>suivant) - { - n++; - DessinerScene(pingouin,x,y,n); - suivant=Microsecondes()+delta; - } - SourisPosition(); - x=_X; - y=_Y; - if (x!=old_x || y!=old_y) - { - DessinerScene(pingouin,x,y,n); - old_x=x; - old_y=y; - } - } - } - FermerGraphique(); + +/* Fonction pour décaler chaque paire d'éléments (x, y) du tableau vers la droite */ +void decalerSerpent(int serpent[], int taille) { + int tempX = serpent[0]; + int tempY = serpent[1]; + int i; + + for (i = 2; i < taille; i += 2) { + int tempX2 = serpent[i]; + int tempY2 = serpent[i + 1]; + + serpent[i] = tempX; + serpent[i + 1] = tempY; + + tempX = tempX2; + tempY = tempY2; + } +} + +int main() { + int serpent[TAILLE] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20}; + + printf("Serpent initial : "); + afficherSerpent(serpent, TAILLE); + + /* Décaler le serpent d'une paire d'éléments vers la droite */ + decalerSerpent(serpent, TAILLE); + + printf("Serpent après décalage : "); + afficherSerpent(serpent, TAILLE); + + return 0; } - \ No newline at end of file