2023-12-07 11:15:44 +01:00
|
|
|
/* 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>
|
2023-12-12 17:39:55 +01:00
|
|
|
#include <graph.h>
|
2023-12-07 22:04:47 +01:00
|
|
|
#include "plateau_init.h"
|
2023-12-08 14:27:14 +01:00
|
|
|
#include "update_queue.h"
|
2023-12-12 17:39:55 +01:00
|
|
|
#include "deplacement.h"
|
2023-12-07 11:15:44 +01:00
|
|
|
|
2023-12-08 11:15:39 +01:00
|
|
|
|
2023-12-10 00:36:22 +01:00
|
|
|
|
2023-12-12 17:39:55 +01:00
|
|
|
|
|
|
|
|
2023-12-12 19:55:28 +01:00
|
|
|
void deplacement (struct adresse* pointeur, unsigned char* sens) {
|
2023-12-12 17:39:55 +01:00
|
|
|
|
|
|
|
|
|
|
|
int** plateau = pointeur -> plateau;
|
|
|
|
|
|
|
|
unsigned char* tete = pointeur -> tete;
|
|
|
|
|
2023-12-12 19:55:28 +01:00
|
|
|
unsigned char* queue = pointeur -> queue;
|
2023-12-10 00:36:22 +01:00
|
|
|
|
2023-12-12 19:55:28 +01:00
|
|
|
couleur green, yellow;
|
|
|
|
|
|
|
|
green = CouleurParComposante(50,205,50);
|
|
|
|
|
|
|
|
yellow = CouleurParComposante(255,255,0);
|
|
|
|
|
2023-12-13 19:29:11 +01:00
|
|
|
|
|
|
|
|
|
|
|
printf("%d %d", queue[0], queue[1]);
|
|
|
|
|
|
|
|
|
|
|
|
if ( *sens == BAS) {
|
|
|
|
|
|
|
|
plateau[tete[0] + 1][tete[1]] = 1;
|
|
|
|
|
|
|
|
plateau[queue[0]][queue[1]] = 0;
|
|
|
|
|
|
|
|
tete[0] = tete[0] + 1;
|
|
|
|
|
|
|
|
ChoisirCouleurDessin(yellow);
|
|
|
|
RemplirRectangle(20*(tete[1] + 1),20*(tete[0] +1 ),20,20);
|
|
|
|
|
|
|
|
ChoisirCouleurDessin(green);
|
|
|
|
RemplirRectangle(20*(queue[1] +1 ),20*(queue[0] +1 ),20,20);
|
|
|
|
|
|
|
|
queue[0] = queue[0] + 1;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( *sens == HAUT) {
|
|
|
|
|
|
|
|
plateau[tete[0] - 1][tete[1]] = 1;
|
|
|
|
|
|
|
|
plateau[queue[0]][queue[1]] = 0;
|
|
|
|
|
|
|
|
tete[0] = tete[0] -1;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( *sens == DROITE) {
|
|
|
|
|
|
|
|
plateau[tete[0]][tete[1] + 1] = 1;
|
|
|
|
|
|
|
|
plateau[queue[0]][queue[1]] = 0;
|
|
|
|
|
|
|
|
tete[1] = tete[1] + 1;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( *sens == GAUCHE) {
|
|
|
|
|
|
|
|
plateau[tete[0]][tete[1] - 1] = 1;
|
|
|
|
|
|
|
|
plateau[queue[0]][queue[1]] = 0;
|
|
|
|
|
|
|
|
tete[1] = tete[1] - 1;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2023-12-12 19:55:28 +01:00
|
|
|
|
2023-12-07 22:04:47 +01:00
|
|
|
|
|
|
|
/* affectations des commandes aux touches du jeu */
|
2023-12-07 11:15:44 +01:00
|
|
|
|
2023-12-12 19:55:28 +01:00
|
|
|
if (ToucheEnAttente() == 1) {
|
2023-12-07 11:15:44 +01:00
|
|
|
|
2023-12-10 22:51:36 +01:00
|
|
|
if (Touche() == XK_Left) {
|
2023-12-07 11:15:44 +01:00
|
|
|
|
2023-12-12 17:39:55 +01:00
|
|
|
plateau[tete[0]][tete[1]] = 0;
|
2023-12-07 16:16:15 +01:00
|
|
|
|
2023-12-12 17:39:55 +01:00
|
|
|
plateau[tete[0]][tete[1] - 1] = 1;
|
2023-12-07 16:16:15 +01:00
|
|
|
|
2023-12-12 17:39:55 +01:00
|
|
|
plateau[queue[0]][queue[1]] = 0;
|
2023-12-08 11:15:39 +01:00
|
|
|
|
|
|
|
tete[1] = tete[1] - 1;
|
2023-12-11 16:19:17 +01:00
|
|
|
|
2023-12-12 19:55:28 +01:00
|
|
|
*sens = GAUCHE;
|
2023-12-08 14:27:14 +01:00
|
|
|
|
|
|
|
}
|
|
|
|
|
2023-12-12 19:55:28 +01:00
|
|
|
if (Touche() == XK_Right) {
|
2023-12-08 14:27:14 +01:00
|
|
|
|
2023-12-12 17:39:55 +01:00
|
|
|
plateau[tete[0]][tete[1]] = 0;
|
2023-12-08 14:27:14 +01:00
|
|
|
|
2023-12-12 17:39:55 +01:00
|
|
|
plateau[tete[0]][tete[1] + 1] = 1;
|
2023-12-08 14:27:14 +01:00
|
|
|
|
2023-12-12 17:39:55 +01:00
|
|
|
plateau[queue[0]][queue[1]] = 0;
|
2023-12-08 14:27:14 +01:00
|
|
|
|
|
|
|
tete[1] = tete[1] + 1;
|
|
|
|
|
2023-12-12 19:55:28 +01:00
|
|
|
*sens = DROITE;
|
2023-12-11 16:19:17 +01:00
|
|
|
|
2023-12-08 14:27:14 +01:00
|
|
|
}
|
|
|
|
|
2023-12-12 19:55:28 +01:00
|
|
|
if (Touche() == XK_Up) {
|
2023-12-08 14:27:14 +01:00
|
|
|
|
2023-12-12 17:39:55 +01:00
|
|
|
plateau[tete[0]][tete[1]] = 0;
|
2023-12-07 16:16:15 +01:00
|
|
|
|
2023-12-12 17:39:55 +01:00
|
|
|
plateau[tete[0] - 1][tete[1]] = 1;
|
2023-12-08 14:27:14 +01:00
|
|
|
|
2023-12-12 17:39:55 +01:00
|
|
|
plateau[queue[0]][queue[1]] = 0;
|
2023-12-08 14:27:14 +01:00
|
|
|
|
|
|
|
tete[0] = tete[0] - 1;
|
|
|
|
|
2023-12-12 19:55:28 +01:00
|
|
|
*sens = HAUT;
|
2023-12-08 14:27:14 +01:00
|
|
|
}
|
|
|
|
|
2023-12-12 19:55:28 +01:00
|
|
|
if (Touche() == XK_Down) {
|
2023-12-08 14:27:14 +01:00
|
|
|
|
2023-12-12 17:39:55 +01:00
|
|
|
plateau[tete[0]][tete[1]] = 0;
|
2023-12-08 14:27:14 +01:00
|
|
|
|
2023-12-12 17:39:55 +01:00
|
|
|
plateau[tete[0] + 1][tete[1]] = 1;
|
2023-12-08 14:27:14 +01:00
|
|
|
|
2023-12-12 17:39:55 +01:00
|
|
|
plateau[queue[0]][queue[1]] = 0;
|
2023-12-08 14:27:14 +01:00
|
|
|
|
2023-12-11 16:19:17 +01:00
|
|
|
tete[0] = tete[0] + 1;
|
|
|
|
|
2023-12-12 19:55:28 +01:00
|
|
|
*sens = DROITE;
|
2023-12-11 16:19:17 +01:00
|
|
|
|
|
|
|
}
|
2023-12-13 19:29:11 +01:00
|
|
|
}
|
2023-12-11 16:19:17 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-12-08 11:15:39 +01:00
|
|
|
|
2023-12-08 14:27:14 +01:00
|
|
|
/* mise à jour de la position de queue dans le plateau */
|
|
|
|
|
|
|
|
|
2023-12-13 19:29:11 +01:00
|
|
|
|
|
|
|
}
|
|
|
|
|
2023-12-08 14:27:14 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-12-07 16:16:15 +01:00
|
|
|
|
|
|
|
|
2023-12-07 11:15:44 +01:00
|
|
|
|
|
|
|
|