SAE11_2023/make_test/menu.c

136 lines
4.6 KiB
C
Raw Normal View History

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <graph.h>
#include "menu.h"
#include "main.h"
void afficherMenuPrincipal() {
ChargerImageFond("../img/menu_principal.png");
/* 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 */
ChargerImageFond("../img/modes_de_jeu.png");
/* Affiche les boutons des modes de jeu */
afficherBouton(38.7, 639.9, 280.3, 742.9, "Classique", CouleurParComposante(168, 116, 67), CouleurParNom("black"), CouleurParNom("black"), 2);
afficherBouton(332.6, 639.9, 574.2, 742.9, "MultiPommes", CouleurParComposante(168, 116, 67), CouleurParNom("black"), CouleurParNom("black"), 2);
afficherBouton(626.2, 639.9, 867.8, 742.9, "Obstacles", CouleurParComposante(168, 116, 67), CouleurParNom("black"), CouleurParNom("black"), 2);
afficherBouton(919.7, 639.9, 1161.3, 742.9, "Acceleration", CouleurParComposante(168, 116, 67), CouleurParNom("black"), CouleurParNom("black"), 2);
}
void afficherMenuGameOver(void) {
/* Affiche l'image game over */
ChargerImageFond("../img/game_over.png");
}
int attendreChoixGameOver() {
int x, y;
while (1) {
if (SourisCliquee()) {
SourisPosition();
x = _X;
y = _Y;
/* Vérifie si le bouton "Menu Principal" est cliqué */
if (x >= 379 && x <= 830.7 && y >= 530.3 && y <= 670.1) {
EffacerEcran(CouleurParNom("white"));
menus(); /* Renvoie vers le menu principal" */
}
}
}
}
int attendreChoixModesDeJeu(){
int x, y;
while (1){
if(SourisCliquee()){
SourisPosition();
x = _X;
y = _Y;
/*Vérifie si le bouton n°1 est cliqué*/
if (x >= 38.7 && x <= 280.3 && y >= 639.9 && y <= 742.9) {
return 1; /*Renvoie le choix bouton n°1*/
}
/*Vérifie si le bouton n°2 est cliqué*/
if (x >= 332.6 && x <= 574.2 && y >= 639.9 && y <= 742.9) {
return 2; /*Renvoie le choix bouton n°2*/
}
/*Vérifie si le bouton n°3 est cliqué*/
if (x >= 626.2 && x <= 867.8 && y >= 639.9 && y <= 742.9) {
return 3; /*Renvoie le choix bouton n°3*/
}
/*Vérifie si le bouton n°4 est cliqué*/
if (x >= 919.7 && x <= 1161.3 && y >= 639.9 && y <= 742.9) {
return 4; /*Renvoie le choix bouton n°4*/
}
}
}
}
int attendreChoixMenu(){
int x, y;
while (1){
if (SourisCliquee()){
SourisPosition();
x = _X;
y = _Y;
/*Vérifie si le bouton "Jouer" est cliqué*/
if (x >= 67 && x <= 367 && y >= 850 && y <= 950) {
return 1; /*Renvoie le choix bouton "Jouer"*/
}
/*Vérifie si le bouton "Quitter" est cliqué*/
if (x >= 800 && x <= 1100 && y >= 850 && y <= 950) {
return 2; /*Renvoie le choix bouton "Quitter"*/
}
}
}
}
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 = malloc(strlen((const char *)texte) + 1);
strcpy(texte_modifiable, (const char *)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);
}