Files
SAE11_2023/snake/deplacement.c
2023-12-10 22:51:50 +01:00

137 lines
1.8 KiB
C

/* Fonctions qui prend en argument le plateau de jeu et le modifie en fonction des déplacements du serpent
Written by Yann KERAUDREN and Titouan LERICHE */
#include <stdlib.h>
#include <stdio.h>
#include <graphe.h>
#include "plateau_init.h"
#include "update_queue.h"
int** deplacement(int* p, int timer) {
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;
}
}
}
/* affectations des commandes aux touches du jeu */
if (TouchEnAttente() == 1) {
if (Touche() == XK_Left) {
p[tete[0]][tete[1]] = 0;
p[tete[0]][tete[1] - 1] = 1;
p[queue[0]][queue[1]] = 0;
tete[1] = tete[1] - 1;
}
if (Touch() == XK_Right) {
p[tete[0]][tete[1]] = 0;
p[tete[0]][tete[1] + 1] = 1;
p[queue[0]][queue[1]] = 0;
tete[1] = tete[1] + 1;
}
if (Touch() == XK_Up") {
p[tete[0]][tete[1]] = 0;
p[tete[0] - 1][tete[1]] = 1;
p[queue[0]][queue[1]] = 0;
tete[0] = tete[0] - 1;
}
if (Touch() == "XK_down") {
p[tete[0]][tete[1]] = 0;
p[tete[0] + 1][tete[1]] = 1;
p[queue[0]][queue[1]] = 0;
tete[0] = tete[0] + 1;
/* mise à jour de la position de queue dans le plateau */
maj_queue(queue, p);
}
}
return p;
}