/* Fonction qui efface la queue du serpent lorsqu'il se déplace et augmente la taille du serpent lorsqu'il mange une pomme Written by Yann KERAUDREN and Titouan LERICHE */ #include #include #include #include #include "supp_queue.h" void supp_queue( struct adresse* pointeur ) { int** corps_serpent = pointeur -> corps_serpent; int** plateau = pointeur -> plateau; unsigned short* taille_serpent = pointeur -> taille_serpent; unsigned char* tete = pointeur -> tete; unsigned short* indice_queue = pointeur -> indice_queue; int ligne_pomme, colonne_pomme, i; couleur green, red; srand(time(NULL)); /* teste si le serpent mange une pomme */ if (plateau[tete[0]][tete[1]] == 2 ) { /* augmentation de la taille du serpent */ *taille_serpent = *taille_serpent + 1; corps_serpent = realloc( corps_serpent, *taille_serpent * sizeof(int*)); pointeur -> corps_serpent = corps_serpent; corps_serpent[*taille_serpent - 1] = malloc( 2 * sizeof(int)); /* printf("%d %d \n", tete[0], tete[1]); /* problème de mise en place de la tête du serpent au bonne endroit dans le corps */ corps_serpent[*taille_serpent - 1][0] = tete[0]; corps_serpent[*taille_serpent - 1][1] = tete[1]; /*for (i = 0; i < *taille_serpent; i++) { printf("[%d %d] ", corps_serpent[i][0], corps_serpent[i][1]); } printf("\n");*/ /* apparition de la nouvelle pomme */ ligne_pomme = rand() % 40; colonne_pomme = rand() % 60; /* teste pour ne pas faire apparaître la pomme sur une case déjà occupée */ while (plateau[ligne_pomme][colonne_pomme] == 2 || plateau[ligne_pomme][colonne_pomme] == 1) { ligne_pomme = rand() % 40; colonne_pomme = rand() % 60; } plateau[ligne_pomme][colonne_pomme] = 2; red = CouleurParComposante(255,0,0); ChoisirCouleurDessin(red); RemplirRectangle(20*(colonne_pomme + 1),20*(ligne_pomme + 1),20,20); } else { green = CouleurParComposante(50,205,50); ChoisirCouleurDessin(green); RemplirRectangle(20*(corps_serpent[*indice_queue][1]+1),20*(corps_serpent[*indice_queue][0]+1),20,20); corps_serpent[*indice_queue][0] = tete[0]; corps_serpent[*indice_queue][1] = tete[1]; *indice_queue = *indice_queue + 1; } if ( *indice_queue == *taille_serpent ) { *indice_queue = 0; } }