SAE11_2023/serpent.c

76 lines
2.4 KiB
C
Raw Normal View History

2023-12-12 16:07:54 +01:00
#include <stdlib.h>
#include <graph.h>
2023-12-22 14:07:57 +01:00
#include <stdio.h>
#include "serpent.h"
#include "terrain.h"
#include "temps_et_score.h"
/*Fonction permettant de créer un serpent de base avec une taille donnée*/
void Creation_Serpent(Segment serpent[], int taille){
int i;
for (i = 0; i < taille; i++)
{
serpent[i].x = (COLONNES / 2) * TAILLE_CASE;
serpent[i].y = (LIGNES / 2) * TAILLE_CASE;
}
2023-12-12 16:07:54 +01:00
}
2023-12-22 14:07:57 +01:00
/*Fonction permettant d'afficher le serpent avec une taille donnée*/
void Afficher_Serpent(Segment serpent[], int taille, int rotation)
2023-12-12 16:07:54 +01:00
{
2023-12-22 14:07:57 +01:00
int i;
ChoisirCouleurDessin(CouleurParComposante(252, 220, 17));
for(i=0; i<taille; i++) {
RemplirRectangle(serpent[i].x, serpent[i].y, TAILLE_CASE, TAILLE_CASE);
}
}
/*Fonction permettant au serpent de se déplacer*/
void Deplacer_Serpent(int *longSerpent, Segment serpent[], int direction, unsigned int vitesse_serpent){
int i;
ChoisirCouleurDessin(CouleurParComposante(0, 217, 87));
RemplirRectangle(serpent[*longSerpent-1].x, serpent[*longSerpent-1].y, TAILLE_CASE, TAILLE_CASE);
for (i = *longSerpent - 1; i > 0; i--)
{
serpent[i] = serpent[i - 1];
}
switch (direction)
{
case 1:
serpent[0].x += TAILLE_CASE;
break;
case -1:
serpent[0].x -= TAILLE_CASE;
break;
case 2:
serpent[0].y -= TAILLE_CASE;
break;
case -2:
serpent[0].y += TAILLE_CASE;
break;
}
Afficher_Serpent(serpent, *longSerpent, direction);
Attendre(vitesse_serpent);
2023-12-12 16:07:54 +01:00
}
2023-12-22 14:07:57 +01:00
/*Fonction l'emplacement de la tête du serpent pour la mort*/
void Mort_Serpent(int longSerpent, Segment serpent[], int score, int minutes, int secondes, char texte[], int* rejouer, int* gameover){
int i;
if (serpent[0].x < 5 * TAILLE_CASE || serpent[0].x >= (COLONNES * TAILLE_CASE) + 5 * TAILLE_CASE || serpent[0].y < CONTOURE_H * TAILLE_CASE || serpent[0].y >= (LIGNES * TAILLE_CASE) + 2 * TAILLE_CASE){
ChoisirCouleurDessin(CouleurParNom("black"));
RemplirRectangle(serpent[0].x, serpent[0].y, TAILLE_CASE, TAILLE_CASE);
Attendre(1000);
*gameover = 0;
/*Execution de la fontion perdu*/
Perdu(texte, score, minutes, secondes, rejouer);
}
for (i = 1; i < longSerpent; i++){
if (serpent[0].x == serpent[i].x && serpent[0].y == serpent[i].y){
Attendre(1000);
*gameover = 0;
Perdu(texte, score, minutes, secondes, rejouer);
}
}
}