Files
SAE11_2023/src/jeu.c

264 lines
7.2 KiB
C
Raw Normal View History

#include <stdio.h>
2023-12-07 09:13:31 +01:00
#include <stdlib.h>
#include <graph.h>
2023-12-05 21:26:41 +01:00
#include "../include/grille.h"
#include "../include/serpent.h"
#include "../include/pomme.h"
#include "../include/jeu.h"
2023-12-07 09:13:31 +01:00
#include "../include/menu.h"
#include "../include/timer.h"
2023-12-07 09:13:31 +01:00
void afficherScore(int score) {
char scoreStr[20];
/* Efface l'ancien score */
ChoisirCouleurDessin(CouleurParComposante(0, 0, 0));
RemplirRectangle(178, 946, 130, 40);
/* Convertit le score en chaîne de caractères */
snprintf(scoreStr, sizeof(scoreStr), "%d", score);
/* Affiche le nouveau score */
ChoisirCouleurDessin(CouleurParComposante(255, 255, 255));
EcrireTexte(179, 976, scoreStr, 2);
}
2023-12-05 21:26:41 +01:00
void lancer_jeu1(void) {
2023-12-11 17:43:38 +01:00
int fin = 1;
2023-12-05 21:26:41 +01:00
Segment serpent[100];
2023-12-07 09:13:31 +01:00
int longueur = 10;
2023-12-05 21:26:41 +01:00
int direction_x = 1;
int direction_y = 0;
2023-12-07 09:13:31 +01:00
int score = 0;
char scoreStr[20];
Pomme pomme;
2023-12-10 18:14:02 +01:00
int min, sec;
2023-12-11 18:40:04 +01:00
int id_pomme;
2023-12-11 18:56:40 +01:00
int esc=0;
2023-12-10 18:14:02 +01:00
2023-12-07 09:13:31 +01:00
2023-12-10 18:14:02 +01:00
initialiser_timer(&min, &sec);
2023-12-07 09:13:31 +01:00
initialiserSerpent(serpent, &longueur);
dessinerGrille();
id_pomme=ChargerSprite("img/pomme1.png");
2023-12-07 09:13:31 +01:00
pomme = creerPomme();
2023-12-11 18:40:04 +01:00
dessinerPomme(pomme,id_pomme);
2023-12-07 09:13:31 +01:00
2023-12-11 17:43:38 +01:00
while (fin == 1) {
2023-12-10 18:14:02 +01:00
update_timer(&min, &sec);
2023-12-11 18:56:40 +01:00
esc=gestionDeplacements(serpent, &direction_x, &direction_y);
if(esc==1){ /*verifie si on appuie sur échap */
return; /*quitte si on appuie sur échap*/
}
2023-12-07 09:13:31 +01:00
mettreAJourSerpent(serpent, &longueur, &direction_x, &direction_y);
if (serpent[0].x == pomme.x && serpent[0].y == pomme.y) {
longueur++;
score += 5;
pomme = creerPomme();
2023-12-11 18:40:04 +01:00
dessinerPomme(pomme,id_pomme);
2023-12-07 09:13:31 +01:00
}
if (tuerSerpent(serpent, longueur)) {
int choixGameOver;
afficherMenuGameOver();
2023-12-10 18:14:02 +01:00
afficher_seconde(sec);
afficher_minute(min);
afficherScore(score);
2023-12-07 09:13:31 +01:00
/* Attend le choix du joueur après le game over */
2023-12-11 17:43:38 +01:00
attendreChoixGameOver();
return;
2023-12-07 09:13:31 +01:00
}
2023-12-10 18:14:02 +01:00
dessinerSerpent(serpent, &longueur);
afficherScore(score);
2023-12-10 18:14:02 +01:00
update_timer(&min, &sec);
2023-12-11 17:43:38 +01:00
attendreSerpent(150000);
2023-12-07 09:13:31 +01:00
}
}
2023-12-10 18:14:02 +01:00
2023-12-07 09:13:31 +01:00
void lancer_jeu2(void) {
2023-12-05 21:26:41 +01:00
int i;
2023-12-07 09:13:31 +01:00
Segment serpent[100];
int longueur = 10;
int direction_x = 1;
int direction_y = 0;
2023-12-11 17:43:38 +01:00
unsigned long int vitesse = 200000; /*vitesse de base*/
2023-12-07 09:13:31 +01:00
int score = 0;
char scoreStr[20];
Pomme pommes[5];
2023-12-10 18:14:02 +01:00
int min, sec;
2023-12-11 18:40:04 +01:00
int id_pomme;
2023-12-11 18:56:40 +01:00
int esc;
2023-12-07 09:13:31 +01:00
2023-12-05 21:26:41 +01:00
2023-12-10 18:14:02 +01:00
initialiser_timer(&min, &sec);
2023-12-07 09:13:31 +01:00
initialiserSerpent(serpent, &longueur);
dessinerGrille();
id_pomme=ChargerSprite("img/pomme1.png");
2023-12-07 09:13:31 +01:00
for (i = 0; i < 5; i++) {
pommes[i] = creerPomme();
2023-12-11 18:40:04 +01:00
dessinerPomme(pommes[i],id_pomme);
2023-12-07 09:13:31 +01:00
}
while (1) {
2023-12-11 18:56:40 +01:00
esc=gestionDeplacements(serpent, &direction_x, &direction_y);
if(esc==1){/*verifie si on appuie sur échap */
return; /*quitte si on appuie sur échap*/
}
2023-12-07 09:13:31 +01:00
mettreAJourSerpent(serpent, &longueur, &direction_x, &direction_y);
for (i = 0; i < 5; i++) {
if (serpent[0].x == pommes[i].x && serpent[0].y == pommes[i].y) {
longueur++;
score += 5;
pommes[i] = creerPomme();
2023-12-11 18:40:04 +01:00
dessinerPomme(pommes[i],id_pomme);
2023-12-07 09:13:31 +01:00
}
}
if (tuerSerpent(serpent, longueur)) {
int choixGameOver;
afficherMenuGameOver();
2023-12-10 18:14:02 +01:00
afficher_seconde(sec);
afficher_minute(min);
afficherScore(score);
2023-12-07 09:13:31 +01:00
/* Attend le choix du joueur après le game over */
2023-12-11 17:43:38 +01:00
attendreChoixGameOver();
return;
2023-12-07 09:13:31 +01:00
}
dessinerSerpent(serpent, &longueur);
afficherScore(score);
2023-12-10 18:14:02 +01:00
update_timer(&min, &sec);
2023-12-07 09:13:31 +01:00
2023-12-10 18:14:02 +01:00
attendreSerpent(vitesse); /*Gère la vitesse*/
2023-12-07 09:13:31 +01:00
}
}
void lancer_jeu4(void) {
2023-12-07 09:13:31 +01:00
int longueur = 10;
int direction_x = 1;
int direction_y = 0;
int score = 0;
2023-12-11 17:43:38 +01:00
unsigned long int vitesse = 300000; /*vitesse de base*/
2023-12-07 09:13:31 +01:00
char scoreStr[20];
Pomme pomme;
Segment serpent[100];
2023-12-10 18:14:02 +01:00
int min, sec;
2023-12-11 18:40:04 +01:00
int id_pomme;
2023-12-11 18:56:40 +01:00
int esc=0;
2023-12-05 21:26:41 +01:00
2023-12-10 18:14:02 +01:00
initialiser_timer(&min, &sec);
2023-12-05 21:26:41 +01:00
initialiserSerpent(serpent, &longueur);
2023-12-07 09:13:31 +01:00
dessinerGrille();
2023-12-11 18:40:04 +01:00
id_pomme=ChargerSprite("img/pomme1.png");
2023-12-07 09:13:31 +01:00
pomme = creerPomme();
2023-12-11 18:40:04 +01:00
dessinerPomme(pomme,id_pomme);
2023-12-05 21:26:41 +01:00
while (1) {
2023-12-11 18:56:40 +01:00
esc=gestionDeplacements(serpent, &direction_x, &direction_y);
if(esc==1){/*verifie si on appuie sur échap */
return;/*quitte si on appuie sur echap*/
}
2023-12-05 21:26:41 +01:00
mettreAJourSerpent(serpent, &longueur, &direction_x, &direction_y);
if (serpent[0].x == pomme.x && serpent[0].y == pomme.y) {
longueur++;
2023-12-07 09:13:31 +01:00
score += 5;
pomme = creerPomme();
2023-12-11 18:40:04 +01:00
dessinerPomme(pomme,id_pomme);
/* Augmenter la vitesse à chaque pomme mangée*/
vitesse -= 5000; /* Réduire la durée d'attente (augmenter la vitesse)*/
2023-12-05 21:26:41 +01:00
}
2023-12-07 09:13:31 +01:00
if (tuerSerpent(serpent, longueur)) {
int choixGameOver;
afficherMenuGameOver();
2023-12-10 19:00:03 +01:00
afficherScore(score);
afficher_minute(min);
afficher_seconde(sec);
2023-12-07 09:13:31 +01:00
/* Attend le choix du joueur après le game over */
2023-12-11 17:43:38 +01:00
attendreChoixGameOver();
return;
2023-12-05 21:26:41 +01:00
}
dessinerSerpent(serpent, &longueur);
afficherScore(score);
2023-12-10 18:14:02 +01:00
update_timer(&min, &sec);
attendreSerpent(vitesse);
2023-12-07 09:13:31 +01:00
}
}
void lancer_jeu3(void) {
2023-12-11 18:40:04 +01:00
int i;
Segment serpent[100];
2023-12-07 09:13:31 +01:00
int longueur = 10;
int direction_x = 1;
int direction_y = 0;
2023-12-11 18:40:04 +01:00
unsigned long int vitesse = 90000; /*vitesse de base*/
2023-12-07 09:13:31 +01:00
int score = 0;
char scoreStr[20];
2023-12-11 18:40:04 +01:00
Pomme pommes[25];
2023-12-10 18:14:02 +01:00
int min, sec;
2023-12-11 18:40:04 +01:00
int id_pomme;
2023-12-11 18:56:40 +01:00
int esc=0;
2023-12-11 18:40:04 +01:00
2023-12-10 18:14:02 +01:00
initialiser_timer(&min, &sec);
2023-12-07 09:13:31 +01:00
initialiserSerpent(serpent, &longueur);
dessinerGrille();
id_pomme=ChargerSprite("img/pomme1.png");
2023-12-11 18:40:04 +01:00
for (i = 0; i < 25; i++) {
pommes[i] = creerPomme();
dessinerPomme(pommes[i],id_pomme);
}
2023-12-07 09:13:31 +01:00
2023-12-11 18:40:04 +01:00
while (1) {
2023-12-11 18:56:40 +01:00
esc=gestionDeplacements(serpent, &direction_x, &direction_y);
if(esc==1){
return;
}
2023-12-11 18:40:04 +01:00
mettreAJourSerpent(serpent, &longueur, &direction_x, &direction_y);
2023-12-07 09:13:31 +01:00
2023-12-11 18:40:04 +01:00
for (i = 0; i < 25; i++) {
if (serpent[0].x == pommes[i].x && serpent[0].y == pommes[i].y) {
longueur++;
score += 5;
vitesse -=2500;
pommes[i] = creerPomme();
dessinerPomme(pommes[i],id_pomme);
}
}
2023-12-11 18:40:04 +01:00
if (tuerSerpent(serpent, longueur)) {
int choixGameOver;
afficherMenuGameOver();
afficher_seconde(sec);
afficher_minute(min);
afficherScore(score);
2023-12-07 09:13:31 +01:00
2023-12-11 18:40:04 +01:00
/* Attend le choix du joueur après le game over */
attendreChoixGameOver();
return;
}
2023-12-07 09:13:31 +01:00
2023-12-11 18:40:04 +01:00
dessinerSerpent(serpent, &longueur);
afficherScore(score);
2023-12-11 18:40:04 +01:00
update_timer(&min, &sec);
2023-12-11 18:40:04 +01:00
attendreSerpent(vitesse); /*Gère la vitesse*/
2023-12-05 21:26:41 +01:00
}
2023-12-11 18:40:04 +01:00
}