This commit is contained in:
Yann KERAUDREN 2023-12-11 16:19:17 +01:00
parent e83a53cecc
commit f72d72fa8e
10 changed files with 173 additions and 66 deletions

@ -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 */

8
snake/deplacement.h Normal file

@ -0,0 +1,8 @@
#ifndef DEPLACEMENT_H
#define DEPLACEMENT_H
void deplacement (int** p, int* tete, int* queue);
#endif /* DEPLACEMENT_H */

@ -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;
}

@ -6,6 +6,6 @@
#define FENETRE_H
int start (void);
void start (void);
#endif /* FENETRE_H */

Binary file not shown.

@ -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();

31
snake/search_queue.c Normal file

@ -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;
}

38
snake/search_tete.c Normal file

@ -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;
}

0
snake/search_tete.h Normal file

@ -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;
}