From 766b98d8dd92f2ddcb361c097293c2cc0d3f104a Mon Sep 17 00:00:00 2001 From: Vince <vi.teissier@gmail.com> Date: Mon, 27 Nov 2023 16:17:11 +0100 Subject: [PATCH] =?UTF-8?q?Int=C3=A9gration=20des=20mouvements=20du=20serp?= =?UTF-8?q?ent=20(=20=C3=A0=20am=C3=A9liorer=20)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.c | 63 ++++++++++++++++++++++++++---------- prog | Bin 17104 -> 17152 bytes test.c | 99 +++++++++++++++++++++++++-------------------------------- 3 files changed, 90 insertions(+), 72 deletions(-) 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 7d15374d32f40e135f39315c84085b6644b190c5..d6a6b8ed6eb7ddc9c69cd47e24aee71aed44a0f7 100755 GIT binary patch delta 4468 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 delta 3776 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 WD>JT`t>6cs1GQV_ik6M-$p0Td<4^Yh 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