This commit is contained in:
Marco ORFAO 2023-12-07 21:23:35 +01:00
commit ea56827b2c
5 changed files with 100 additions and 80 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 353 B

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -1,7 +1,7 @@
#ifndef MENU_H
#define MENU_H
void afficherBouton(double x1, double y1, double x2, double y2, const char *texte, couleur arriere_plan, couleur bordure, couleur couleur_texte, int taille_texte);
void afficherMenuPrincipal(void);
void afficherMenuModesDeJeu(void);
void afficherMenuGameOver(void);

View File

@ -1,7 +1,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <graph.h>
#include <time.h>
#include <time.h> /* à supprimer prochainement */
#include "../include/grille.h"
#include "../include/serpent.h"
#include "../include/pomme.h"
@ -9,9 +9,21 @@
#include "../include/menu.h"
void afficherScore(int score) {
char scoreStr[20];
/* Efface l'ancien score */
ChoisirCouleurDessin(CouleurParComposante(0, 0, 0));
RemplirRectangle(178, 946, 200, 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(178, 976, scoreStr, 2);
}
void lancer_jeu1(void) {
struct timespec delai = {0, 55000000}; /* A SUPPRIMER QUAND ON AURA LA FONCTION ATTENDRE*/
Segment serpent[100];
int longueur = 10;
int direction_x = 1;
@ -51,21 +63,14 @@ void lancer_jeu1(void) {
dessinerSerpent(serpent, &longueur);
/* Efface l'ancien score */
ChoisirCouleurDessin(CouleurParComposante(0, 0, 0));
RemplirRectangle(178, 946, 200, 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(178, 976, scoreStr, 2);
afficherScore(score);
struct timespec delai = {0, 55000000}; /*50 000 000 nanosecondes (0.05 seconde)*/
nanosleep(&delai, NULL);
}
}
void lancer_jeu2(void) {
struct timespec delai = {0, 55000000}; /*50 000 000 nanosecondes (0.05 seconde)*/
int i;
Segment serpent[100];
int longueur = 10;
@ -110,16 +115,8 @@ void lancer_jeu2(void) {
dessinerSerpent(serpent, &longueur);
/* Efface l'ancien score */
ChoisirCouleurDessin(CouleurParComposante(0, 0, 0));
RemplirRectangle(178, 946, 200, 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(178, 976, scoreStr, 2);
afficherScore(score);
struct timespec delai = {0, 55000000}; /*50 000 000 nanosecondes (0.05 seconde)*/
nanosleep(&delai, NULL);
}
}
@ -166,21 +163,15 @@ void lancer_jeu3(void) {
dessinerSerpent(serpent, &longueur);
/* Efface l'ancien score */
ChoisirCouleurDessin(CouleurParComposante(0, 0, 0));
RemplirRectangle(178, 946, 200, 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(178, 976, scoreStr, 2);
afficherScore(score);
/*Permet de gérer la vitesse du serpent*/
nanosleep(&delai, NULL);
}
}
void lancer_jeu4(void) {
struct timespec delai = {0, 30000000}; /*40 000 000 nanosecondes (0.04 seconde)*/
struct timespec delai = {0, 28000000}; /*40 000 000 nanosecondes (0.04 seconde)*/
Segment serpent[100];
int longueur = 10;
int direction_x = 1;
@ -220,15 +211,11 @@ void lancer_jeu4(void) {
dessinerSerpent(serpent, &longueur);
/* Efface l'ancien score */
ChoisirCouleurDessin(CouleurParComposante(0, 0, 0));
RemplirRectangle(178, 946, 200, 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(178, 976, scoreStr, 2);
afficherScore(score);
/*Permet de gérer la vitesse du serpent*/
nanosleep(&delai, NULL);
}
}
}

View File

@ -1,58 +1,37 @@
#include<stdio.h>
#include<stdlib.h>
#include<graph.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <graph.h>
#include "../include/menu.h"
#include "../include/main.h"
void afficherMenuPrincipal(){
void afficherMenuPrincipal() {
ChargerImageFond("../img/menu_principal.png");
/*Affiche le bouton "Jouer"*/
ChoisirCouleurDessin(CouleurParComposante(0,151,178));
RemplirRectangle(67, 850, 300, 100);
ChoisirCouleurDessin(CouleurParNom("black"));
EcrireTexte(180, 910, "Jouer", 2);
/*Affiche le bouton "Quitter"*/
ChoisirCouleurDessin(CouleurParComposante(0,151,178));
RemplirRectangle(800, 850, 300, 100);
ChoisirCouleurDessin(CouleurParNom("black"));
EcrireTexte(910, 910, "Quitter", 2);
/* Affiche le bouton "Jouer" */
afficherBouton(67, 850, 367, 950, "Jouer", CouleurParComposante(0,151,178), CouleurParNom("black"), CouleurParNom("black"), 2);
/* Affiche le bouton "Quitter" */
afficherBouton(800, 850, 1100, 950, "Quitter", CouleurParComposante(0,151,178), CouleurParNom("black"), CouleurParNom("black"), 2);
}
void afficherMenuModesDeJeu(){
/*Affiche l'image de fond des modes de jeu*/
void afficherMenuModesDeJeu() {
/* Affiche l'image de fond des modes de jeu */
ChargerImageFond("../img/modes_de_jeu.png");
/*Affiche le bouton n°1*/
ChoisirCouleurDessin(CouleurParComposante(168,116,67));
RemplirRectangle(38.7, 639.9, 241.6, 103);
ChoisirCouleurDessin(CouleurParNom("black"));
EcrireTexte(87.6, 700, "Classique", 2);
/*Affiche le bouton n°2*/
ChoisirCouleurDessin(CouleurParComposante(168,116,67));
RemplirRectangle(332.6, 639.9, 241.6, 103);
ChoisirCouleurDessin(CouleurParNom("black"));
EcrireTexte(360.4, 700, "MultiPommes", 2);
/*Affiche le bouton n°3*/
ChoisirCouleurDessin(CouleurParComposante(168,116,67));
RemplirRectangle(626.2, 639.9, 241.6, 103);
ChoisirCouleurDessin(CouleurParNom("black"));
EcrireTexte(700.1, 700, "Rapide", 2);
/*Affiche le bouton n°4*/
ChoisirCouleurDessin(CouleurParComposante(168,116,67));
RemplirRectangle(919.7, 639.9, 241.6, 103);
ChoisirCouleurDessin(CouleurParNom("black"));
EcrireTexte(960.7, 700, "Ultra rapide", 2);
/* Affiche les boutons des modes de jeu */
afficherBouton(38.7, 639.9, 280.3, 742.9, "Classique", CouleurParComposante(168, 116, 67), CouleurParNom("nom_de_la_couleur_bordure"), CouleurParNom("nom_de_la_couleur_texte"), 2);
afficherBouton(332.6, 639.9, 574.2, 742.9, "MultiPommes", CouleurParComposante(168, 116, 67), CouleurParNom("nom_de_la_couleur_bordure"), CouleurParNom("nom_de_la_couleur_texte"), 2);
afficherBouton(626.2, 639.9, 867.8, 742.9, "Rapide", CouleurParComposante(168, 116, 67), CouleurParNom("nom_de_la_couleur_bordure"), CouleurParNom("nom_de_la_couleur_texte"), 2);
afficherBouton(919.7, 639.9, 1161.3, 742.9, "Ultra rapide", CouleurParComposante(168, 116, 67), CouleurParNom("nom_de_la_couleur_bordure"), CouleurParNom("nom_de_la_couleur_texte"), 2);
}
void afficherMenuGameOver(void) {
/* Affiche l'image game over */
ChargerImageFond("../img/game_over.png");
@ -134,3 +113,23 @@ int attendreChoixMenu(){
}
}
}
void afficherBouton(double x1, double y1, double x2, double y2, const char *texte, couleur arriere_plan, couleur bordure, couleur couleur_texte, int taille_texte) {
/* Copie la chaîne constante dans une nouvelle chaîne non constante */
char *texte_modifiable = strdup(texte);
/* Affiche le bouton avec la couleur d'arrière-plan spécifiée */
ChoisirCouleurDessin(arriere_plan);
RemplirRectangle(x1, y1, x2 - x1, y2 - y1);
/* Affiche la bordure avec la couleur spécifiée */
ChoisirCouleurDessin(bordure);
DessinerRectangle(x1, y1, x2 - x1, y2 - y1);
/* Affiche le texte centré sur le bouton avec la couleur de texte spécifiée */
ChoisirCouleurDessin(couleur_texte);
EcrireTexte((int)((x1 + x2) / 2 - TailleChaineEcran(texte_modifiable, taille_texte) / 2), (int)((y1 + y2) / 2 + TailleSupPolice(taille_texte) / 2), texte_modifiable, taille_texte);
/* Libère la mémoire allouée pour la copie de la chaîne */
free(texte_modifiable);
}

34
src/pomme.c Normal file
View File

@ -0,0 +1,34 @@
#include <stdlib.h>
#include <graph.h>
#include "../include/grille.h"
#include "../include/serpent.h"
typedef struct {
int x;
int y;
} Pomme;
Pomme creerPomme() {
Pomme pomme;
pomme.x = rand() % 60;
pomme.y = rand() % 40;
return pomme;
}
void dessinerPomme(Pomme pomme) {
/* Affichez une pomme*/
int id_pomme;
id_pomme = ChargerSprite("../img/pomme1.png");
AfficherSprite(id_pomme,pomme.x * TAILLE_CASE, pomme.y * TAILLE_CASE);
}
int verifierCollisionPommeSerpent(Pomme pomme, Segment serpent[], int longueur) {
int i;
/*Vérifie si la pomme est sur une case occupée par le serpent*/
for (i = 0; i < longueur; ++i) {
if (pomme.x == serpent[i].x && pomme.y == serpent[i].y) {
return 1; /* Collision */
}
}
return 0; /* Pas de collision */
}