216 lines
3.7 KiB
C
Raw Normal View History

/* 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>
#include "plateau_init.h"
#include "supp_queue.h"
2023-12-12 17:39:55 +01:00
#include "deplacement.h"
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;
2023-12-15 20:14:39 +01:00
signed char* tete = pointeur -> tete;
2023-12-12 17:39:55 +01:00
unsigned int** corps_serpent = pointeur -> corps_serpent;
unsigned int* indice_queue = pointeur -> indice_queue;
int touche;
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
/* affectations des commandes aux touches du jeu */
2023-12-13 19:29:11 +01:00
if (ToucheEnAttente() == 1) {
2023-12-13 19:29:11 +01:00
touche = Touche();
2023-12-13 19:29:11 +01:00
if (touche == XK_Left) {
plateau[tete[0]][tete[1]] = 0;
2023-12-13 19:29:11 +01:00
plateau[tete[0]][tete[1] - 1] = 1;
2023-12-13 19:29:11 +01:00
plateau[corps_serpent[*indice_queue][0]][corps_serpent[*indice_queue][1]] = 0;
2023-12-13 19:29:11 +01:00
tete[1] = tete[1] - 1;
2023-12-13 19:29:11 +01:00
ChoisirCouleurDessin(yellow);
RemplirRectangle(20*(tete[1]+1),20*(tete[0]+1),20,20);
2023-12-13 19:29:11 +01:00
*sens = GAUCHE;
supp_queue(pointeur);
return;
2023-12-13 19:29:11 +01:00
}
if (touche == XK_Right) {
2023-12-13 19:29:11 +01:00
plateau[tete[0]][tete[1]] = 0;
2023-12-13 19:29:11 +01:00
plateau[tete[0]][tete[1] + 1] = 1;
2023-12-13 19:29:11 +01:00
plateau[corps_serpent[*indice_queue][0]][corps_serpent[*indice_queue][1]] = 0;
2023-12-13 19:29:11 +01:00
tete[1] = tete[1] + 1;
2023-12-13 19:29:11 +01:00
ChoisirCouleurDessin(yellow);
RemplirRectangle(20*(tete[1]+1),20*(tete[0]+1),20,20);
2023-12-13 19:29:11 +01:00
*sens = DROITE;
2023-12-13 19:29:11 +01:00
supp_queue(pointeur);
2023-12-13 19:29:11 +01:00
return;
}
2023-12-13 19:29:11 +01:00
if (touche == XK_Up) {
2023-12-13 19:29:11 +01:00
plateau[tete[0]][tete[1]] = 0;
2023-12-13 19:29:11 +01:00
plateau[tete[0] - 1][tete[1]] = 1;
2023-12-13 19:29:11 +01:00
plateau[corps_serpent[*indice_queue][0]][corps_serpent[*indice_queue][1]] = 0;
2023-12-13 19:29:11 +01:00
tete[0] = tete[0] - 1;
2023-12-13 19:29:11 +01:00
ChoisirCouleurDessin(yellow);
RemplirRectangle(20*(tete[1]+1),20*(tete[0]+1),20,20);
*sens = HAUT;
supp_queue(pointeur);
return;
}
if (touche == XK_Down) {
2023-12-12 17:39:55 +01:00
plateau[tete[0]][tete[1]] = 0;
2023-12-07 16:16:15 +01:00
plateau[tete[0] + 1][tete[1]] = 1;
2023-12-07 16:16:15 +01:00
plateau[corps_serpent[*indice_queue][0]][corps_serpent[*indice_queue][1]] = 0;
2023-12-08 11:15:39 +01:00
tete[0] = tete[0] + 1;
ChoisirCouleurDessin(yellow);
RemplirRectangle(20*(tete[1]+1),20*(tete[0]+1),20,20);
*sens = BAS;
supp_queue(pointeur);
return;
2023-12-11 16:19:17 +01:00
2023-12-08 14:27:14 +01:00
}
}
2023-12-08 14:27:14 +01:00
else {
2023-12-08 14:27:14 +01:00
if ( *sens == BAS) {
2023-12-08 14:27:14 +01:00
plateau[tete[0] + 1][tete[1]] = 1;
2023-12-08 14:27:14 +01:00
plateau[corps_serpent[*indice_queue][0]][corps_serpent[*indice_queue][1]] = 0;
2023-12-08 14:27:14 +01:00
tete[0] = tete[0] + 1;
2023-12-11 16:19:17 +01:00
ChoisirCouleurDessin(yellow);
RemplirRectangle(20*(tete[1]+1),20*(tete[0]+1),20,20);
2023-12-08 14:27:14 +01:00
}
2023-12-07 16:16:15 +01:00
if ( *sens == HAUT) {
2023-12-08 14:27:14 +01:00
plateau[tete[0] - 1][tete[1]] = 1;
2023-12-08 14:27:14 +01:00
plateau[corps_serpent[*indice_queue][0]][corps_serpent[*indice_queue][1]] = 0;
2023-12-08 14:27:14 +01:00
tete[0] = tete[0] - 1;
ChoisirCouleurDessin(yellow);
RemplirRectangle(20*(tete[1]+1),20*(tete[0]+1),20,20);
2023-12-08 14:27:14 +01:00
}
2023-12-08 14:27:14 +01:00
if ( *sens == DROITE) {
2023-12-08 14:27:14 +01:00
plateau[tete[0]][tete[1] + 1] = 1;
2023-12-08 14:27:14 +01:00
plateau[corps_serpent[*indice_queue][0]][corps_serpent[*indice_queue][1]] = 0;
2023-12-08 14:27:14 +01:00
tete[1] = tete[1] + 1;
ChoisirCouleurDessin(yellow);
RemplirRectangle(20*(tete[1]+1),20*(tete[0]+1),20,20);
2023-12-11 16:19:17 +01:00
}
if ( *sens == GAUCHE) {
2023-12-11 16:19:17 +01:00
plateau[tete[0]][tete[1] - 1] = 1;
2023-12-11 16:19:17 +01:00
plateau[corps_serpent[*indice_queue][0]][corps_serpent[*indice_queue][1]] = 0;
2023-12-08 14:27:14 +01:00
tete[1] = tete[1] - 1;
ChoisirCouleurDessin(yellow);
RemplirRectangle(20*(tete[1]+1),20*(tete[0]+1),20,20);
2023-12-08 14:27:14 +01:00
}
/* mise à jour de la position de queue dans le plateau et sur le plateau */
supp_queue( pointeur);
}
2023-12-13 19:29:11 +01:00
}
2023-12-08 14:27:14 +01:00
2023-12-07 16:16:15 +01:00