From 2ce0c11dee9909fe61a352364db70628034c0353 Mon Sep 17 00:00:00 2001 From: rognant Date: Sun, 26 Nov 2023 18:10:32 +0100 Subject: [PATCH] =?UTF-8?q?j'ai=20bien=20boss=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- snake.c | 91 +++++++++++++++++++++++---------------------- test.c | 96 ++++++++++++++++++++++++++++++++++++++++++++++++ salut => test.c~ | 0 3 files changed, 141 insertions(+), 46 deletions(-) create mode 100644 test.c rename salut => test.c~ (100%) diff --git a/snake.c b/snake.c index 9334ad7..9813f04 100644 --- a/snake.c +++ b/snake.c @@ -8,12 +8,11 @@ #define CYCLE 10000L -#define SEGMENT 10 +#define SEGMENT 25 -enum Direction { UP, DOWN, LEFT=0, RIGHT=1 }; -int dir=1; +enum Direction { UP=2, DOWN=3, LEFT=0, RIGHT=1 }; -void graphique(int g){ +void graphique(){ InitialiserGraphique(); CreerFenetre(1700,950,1700,950); couleur c, b; @@ -22,8 +21,7 @@ void graphique(int g){ RemplirRectangle(0,0,1750,950); c=CouleurParComposante(111,255,94); ChoisirCouleurDessin(c); - RemplirRectangle(100,100,1500,750); - Touche(); + RemplirRectangle(100,100,LARGEUR * SEGMENT,HAUTEUR * SEGMENT); FermerGraphique(); }; @@ -34,72 +32,73 @@ void serpent(int tab[][LARGEUR],int taille) { posy_s = tab[i][1] * SEGMENT; couleur s = CouleurParComposante(255,255,0); ChoisirCouleurDessin(s); - RemplirRectangle(100,100,25,25); + RemplirRectangle(posx_s, posy_s,SEGMENT, SEGMENT); } } -void mouvement(int tab[][LARGEUR],int *taille){ +void mouvement(int tab[][LARGEUR],int *taille,int *dir){ for (int i = *taille - 1; i>0;i--){ tab[i][0] = tab[i - 1][0]; tab[i][1] = tab[i - 1][1]; } - if(ToucheEnAttente()&&Touche()==XK_Left){ - dir=0; + if(ToucheEnAttente()){ + if (Touche() ==XK_Left && *dir !=RIGHT){ + *dir= LEFT; } - else if(ToucheEnAttente()&&Touche()==XK_Right){ - dir=1; + else if(Touche()==XK_Right && *dir != LEFT){ + *dir= RIGHT; } - else if(ToucheEnAttente()&&Touche()==XK_Up){ - dir=2; + else if(Touche()==XK_Up && *dir != DOWN){ + *dir= UP; } - else if(ToucheEnAttente()&&Touche()==XK_Down){ - dir=3; + else if(Touche()==XK_Down && *dir != UP){ + *dir= DOWN; } } - + if (*dir== LEFT){ + tab[0][0] -=1; + } + else if(*dir== RIGHT){ + tab[0][0] +=1; + } + else if(*dir== UP){ + tab[0][1] -=1; + } + else if(*dir== DOWN){ + tab[0][1] +=1; + } +} int main() { - int dir=1; - int tab[HAUTEUR][LARGEUR],g; + int dir= RIGHT; + int tab[HAUTEUR * LARGEUR][2]; unsigned long suivant; + int g=0; suivant=Microsecondes()+CYCLE; int taille =3; + for(int i = 0;i < taille; i++){ tab[i][0] = LARGEUR / 2; tab[i][1] = HAUTEUR / 2+1; } - for(int i=0;isuivant){ g++; - graphique(g); + graphique(); suivant=Microsecondes()+CYCLE; } - serpent(tab[HAUTEUR][LARGEUR],3); - mouvement(tab[HAUTEUR][LARGEUR],3); - - if (dir=0){ - tab[0][0] -=1; - break; - } - else if(dir=1){ - tab[0][0] +=1; - break; - } - else if(dir=2){ - tab[0][1] -=1; - break; - } - else if(dir=3){ - tab[0][1] +=1; - break; - - } + mouvement(tab,&taille,&dir); + + for(int i = 0; i < taille; i++){ + if (tab[i][0] < 0) tab [i][0] = LARGEUR - 1; + if (tab[i][0] >= LARGEUR) tab [i][0] = 0; + if (tab[i][1] < 0) tab [i][1] = HAUTEUR - 1; + if (tab[i][1] >= HAUTEUR) tab [i][1] = 0; } - + serpent(tab,taille); + } return EXIT_SUCCESS; } + diff --git a/test.c b/test.c new file mode 100644 index 0000000..13f9ae2 --- /dev/null +++ b/test.c @@ -0,0 +1,96 @@ +#include +#include +#include +#include + +#define HAUTEUR 40 +#define LARGEUR 60 + +#define CYCLE 10000L + +#define SEGMENT 25 + +enum Direction { UP=2, DOWN=3, LEFT=0, RIGHT=1 }; + +void graphique() { + InitialiserGraphique(); + CreerFenetre(1700, 950, 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, LARGEUR * SEGMENT, HAUTEUR * SEGMENT); + FermerGraphique(); +} + +void serpent(int tab[][LARGEUR], int taille) { + int posx_s, posy_s, i; + for (i = 0; i < taille; i++) { + posx_s = tab[i][0] * SEGMENT; + posy_s = tab[i][1] * SEGMENT; + couleur s = CouleurParComposante(255, 255, 0); + ChoisirCouleurDessin(s); + RemplirRectangle(posx_s, posy_s, SEGMENT, SEGMENT); + } +} + +void mouvement(int tab[][LARGEUR], int *taille, int *dir) { + for (int i = *taille - 1; i > 0; i--) { + tab[i][0] = tab[i - 1][0]; + tab[i][1] = tab[i - 1][1]; + } + 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; + } + } + if (*dir == LEFT) { + tab[0][0] -= 1; + if (tab[0][0] < 0) tab[0][0] = LARGEUR - 1; + } else if (*dir == RIGHT) { + tab[0][0] += 1; + if (tab[0][0] >= LARGEUR) tab[0][0] = 0; + } else if (*dir == UP) { + tab[0][1] -= 1; + if (tab[0][1] < 0) tab[0][1] = HAUTEUR - 1; + } else if (*dir == DOWN) { + tab[0][1] += 1; + if (tab[0][1] >= HAUTEUR) tab[0][1] = 0; + } +} + +int main() { + int dir = RIGHT; + int tab[HAUTEUR * LARGEUR][2]; + unsigned long suivant; + int g = 0; + suivant = Microsecondes() + CYCLE; + int taille = 3; + + for (int i = 0; i < taille; i++) { + tab[i][0] = LARGEUR / 2; + tab[i][1] = HAUTEUR / 2 + 1; + } + + graphique(); + + while (1) { + if (Microsecondes() > suivant) { + g++; + graphique(); + suivant = Microsecondes() + CYCLE; + } + mouvement(tab, &taille, &dir); + serpent(tab, taille); + } + + return EXIT_SUCCESS; +} diff --git a/salut b/test.c~ similarity index 100% rename from salut rename to test.c~