/* 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 #include #include #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; }