diff --git a/snake/deplacement.c b/snake/deplacement.c index 8f8d690..a4d09e6 100644 --- a/snake/deplacement.c +++ b/snake/deplacement.c @@ -10,61 +10,8 @@ #include "update_queue.h" -int** deplacement(int* p, int timer) { +void deplacement(int** p, int* tete, int* queue) { - int i, j; - - int* tete = NULL, queue = NULL; - - char sens; - - - - - - /* avancement du serpent */ - - - - - - - - - - - - - - - - /* alloacation des tableau tete et queue qui prendront les coordonnées de la tête et la queue */ - - tete = malloc(2*sizeof(short int)); - - queue = malloc(2*sizeof(short int)); - - - /* recherche de la tête et la queue dans le tableau */ - - for ( i = 0; i < LIGNES; i++) { - - for ( j = 0; j < COLONNES; j++) { - - if ( p[i][j] == -1) { - - tete[0] = i; - tete[1] = j; - - } - if ( p[i][j] == -2) { - - queue[0] = i; - queue[1] = j; - - } - } - } @@ -81,6 +28,8 @@ int** deplacement(int* p, int timer) { p[queue[0]][queue[1]] = 0; tete[1] = tete[1] - 1; + + sens = "gauche"; } @@ -94,9 +43,11 @@ int** deplacement(int* p, int timer) { tete[1] = tete[1] + 1; + sens = "droite"; + } - if (Touch() == XK_Up") { + if (Touch() == XK_Up) { p[tete[0]][tete[1]] = 0; @@ -106,9 +57,10 @@ int** deplacement(int* p, int timer) { tete[0] = tete[0] - 1; + sens = "haut"; } - if (Touch() == "XK_down") { + if (Touch() == XK_down) { p[tete[0]][tete[1]] = 0; @@ -116,7 +68,55 @@ int** deplacement(int* p, int timer) { p[queue[0]][queue[1]] = 0; - tete[0] = tete[0] + 1; + tete[0] = tete[0] + 1; + + sens = "bas"; + + } + + else { + + if ( strcmp(sens,"bas") == 1) { + + p[tete[0] + 1][tete[1]] = 1; + + p[queue[0]][queue[1]] = 0; + + tete[0] = tete[0] + 1; + } + + if ( strcmp(sens, "haut") ==1) { + + p[tete[0] - 1][tete[1]] = 1; + + p[queue[0]][queue[1]] = 0; + + tete[0] = tete[0] -1; + + } + + if ( strcmp(sens, "droite") ==1) { + + p[tete[0]][tete[1] + 1] = 1; + + p[queue[0]][queue[1]] = 0; + + tete[1] = tete[1] + 1; + + } + + if ( strcmp(sens, "gauche") ==1) { + + p[tete[0]][tete[1] - 1] = 1; + + p[queue[0]][queue[1]] = 0; + + tete[1] = tete[1] - 1; + + } + + + /* mise à jour de la position de queue dans le plateau */ diff --git a/snake/deplacement.h b/snake/deplacement.h new file mode 100644 index 0000000..06b657c --- /dev/null +++ b/snake/deplacement.h @@ -0,0 +1,8 @@ + + +#ifndef DEPLACEMENT_H +#define DEPLACEMENT_H + +void deplacement (int** p, int* tete, int* queue); + +#endif /* DEPLACEMENT_H */ diff --git a/snake/fenetre.c b/snake/fenetre.c index 4bb7689..37d3cff 100755 --- a/snake/fenetre.c +++ b/snake/fenetre.c @@ -8,9 +8,11 @@ #include "plateau_init.h" #include "ajout_score.c" +#define CYCLE 1000000L -int start (void) { + +void start (void) { couleur green, grey, yellow, red, black, white; @@ -18,7 +20,6 @@ int start (void) { int i, j; - char* texte1 = "espace = lancer"; char* texte2 = "espace = pause"; @@ -142,8 +143,6 @@ int start (void) { - - return EXIT_SUCCESS; } diff --git a/snake/fenetre.h b/snake/fenetre.h index 71bb7b5..00a40b6 100644 --- a/snake/fenetre.h +++ b/snake/fenetre.h @@ -6,6 +6,6 @@ #define FENETRE_H -int start (void); +void start (void); #endif /* FENETRE_H */ diff --git a/snake/lancement b/snake/lancement deleted file mode 100755 index 72b5952..0000000 Binary files a/snake/lancement and /dev/null differ diff --git a/snake/main.c b/snake/main.c index c9dea1b..4a3dba1 100644 --- a/snake/main.c +++ b/snake/main.c @@ -3,6 +3,9 @@ #include <graph.h> #include "fenetre.h" #include "plateau_init.h" +#include "search_tete.h" +#include "search_queue.h" +#include "deplacement.h" @@ -10,7 +13,28 @@ int main(void) { - InitialiserGraphique(); + short int jeu = 1; + + int** plateau = plateau_init(); + + unsigned long suivant; + + int* tete = NULL, queue = NULL; + + char sens = "bas"; + + + /* alloacation des tableau tete et queue qui prendront les coordonnées de la tête et la queue */ + + tete = malloc(2*sizeof(short int)); + + queue = malloc(2*sizeof(short int)); + + + + suiavnt = Microsencondes() + CYCLE; + + InitialiserGraphique(); /*initialisation de la taille de la fenetre de jeux*/ @@ -19,6 +43,15 @@ int main(void) { start(); + while ( jeu = 1) { + + if (Microsecondes() > suivant) { + + + deplacement(plateau, tete, queue); + + + } Touche(); diff --git a/snake/search_queue.c b/snake/search_queue.c new file mode 100644 index 0000000..6d79009 --- /dev/null +++ b/snake/search_queue.c @@ -0,0 +1,31 @@ + + +#include <stdlib.h> +#include <stdio.h> +#include "plateau_init.h" + + +int* search_queue( int* queue, int** p) { + + int i, j; + + /* recherche de la tête et la queue dans le tableau */ + + for ( i = 0; i < LIGNES; i++) { + + for ( j = 0; j < COLONNES; j++) { + + if ( p[i][j] == -2) { + + queue[0] = i; + queue[1] = j; + + p[i][j] = 1; + + } + } + } + + return queue; + +} diff --git a/snake/search_tete.c b/snake/search_tete.c new file mode 100644 index 0000000..735e39b --- /dev/null +++ b/snake/search_tete.c @@ -0,0 +1,38 @@ + + +#include <stdlib.h> +#include <stdio.h> +#include "plateau_init.h" + + + + +int* search_tete(int* tete, int** p) { + + + int i, j; + + + + + /* recherche de la tête et la queue dans le tableau */ + + for ( i = 0; i < LIGNES; i++) { + + for ( j = 0; j < COLONNES; j++) { + + if ( p[i][j] == -1) { + + tete[0] = i; + tete[1] = j; + + p[i][j] = 1; + + } + } + } + + return tete; + +} + diff --git a/snake/search_tete.h b/snake/search_tete.h new file mode 100644 index 0000000..e69de29 diff --git a/snake/update_queue.c b/snake/update_queue.c index 3b08b93..7496d58 100644 --- a/snake/update_queue.c +++ b/snake/update_queue.c @@ -7,7 +7,7 @@ #include <stdio.h> -int maj_queue(int* queue, int** p) { +void maj_queue(int* queue, int** p) { if ( p[queue[0] +1 ][queue[1]] == 1 ) { @@ -31,7 +31,5 @@ int maj_queue(int* queue, int** p) { queue[1] = queue[1] -1; } - - return EXIT_SUCCESS; }