/* 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" #include "deplacement.h" void deplacement (struct adresse* pointeur, unsigned char* sens) { int** plateau = pointeur -> plateau; unsigned char* tete = pointeur -> tete; unsigned char* queue = pointeur -> queue; couleur green, yellow; green = CouleurParComposante(50,205,50); yellow = CouleurParComposante(255,255,0); /* affectations des commandes aux touches du jeu */ if (ToucheEnAttente() == 1) { if (Touche() == XK_Left) { plateau[tete[0]][tete[1]] = 0; plateau[tete[0]][tete[1] - 1] = 1; plateau[queue[0]][queue[1]] = 0; tete[1] = tete[1] - 1; *sens = GAUCHE; } if (Touche() == XK_Right) { plateau[tete[0]][tete[1]] = 0; plateau[tete[0]][tete[1] + 1] = 1; plateau[queue[0]][queue[1]] = 0; tete[1] = tete[1] + 1; *sens = DROITE; } if (Touche() == XK_Up) { plateau[tete[0]][tete[1]] = 0; plateau[tete[0] - 1][tete[1]] = 1; plateau[queue[0]][queue[1]] = 0; tete[0] = tete[0] - 1; *sens = HAUT; } if (Touche() == XK_Down) { plateau[tete[0]][tete[1]] = 0; plateau[tete[0] + 1][tete[1]] = 1; plateau[queue[0]][queue[1]] = 0; tete[0] = tete[0] + 1; *sens = DROITE; } else { 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*(tete[1]+1),20*(tete[0]+1),20,20); } 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; } /* mise à jour de la position de queue dans le plateau */ } } }