Fin menu v2
This commit is contained in:
+65
-51
@@ -2,13 +2,12 @@
|
||||
* Point d'entrée du programme Taquin.
|
||||
* Gère la boucle principale des événements et la transition de vue (Menu -> Jeu).
|
||||
*/
|
||||
#include "game_view.h"
|
||||
|
||||
#include "menu_view.h"
|
||||
#include "game_logic.h"
|
||||
#include "images.h"
|
||||
#include "game_view.h" /* NOUVEAU: Pour la boucle de jeu */
|
||||
#include "defs.h" /* NOUVEAU: Pour les constantes de fenêtre */
|
||||
#include "game_view.h"
|
||||
#include "defs.h"
|
||||
#include <graph.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
@@ -18,66 +17,81 @@ int main(void)
|
||||
{
|
||||
menu_state_t menu_state;
|
||||
unsigned long next_update;
|
||||
int play_again = 1;
|
||||
|
||||
/* 1. Initialisation de l'environnement IUT */
|
||||
InitialiserGraphique();
|
||||
CreerFenetre(10, 10, WINDOW_WIDTH, WINDOW_HEIGHT);
|
||||
|
||||
srand((unsigned int)time(NULL));
|
||||
menu_init(&menu_state);
|
||||
|
||||
next_update = Microsecondes() + REFRESH_CYCLE;
|
||||
/* Grande boucle pour rejouer (retourne au menu) */
|
||||
do {
|
||||
play_again = 0; /* Réinitialisation pour cette tentative */
|
||||
|
||||
/* 2. Boucle du Menu */
|
||||
while (menu_state.ready_to_play == 0)
|
||||
{
|
||||
if (Microsecondes() > next_update)
|
||||
/* 2. Phase de Configuration (Menu) */
|
||||
menu_init(&menu_state);
|
||||
next_update = Microsecondes() + REFRESH_CYCLE;
|
||||
|
||||
while (menu_state.ready_to_play == 0 && menu_state.ready_to_play != -1)
|
||||
{
|
||||
menu_render(&menu_state);
|
||||
CopierZone(0, 0, 0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, 0, 0);
|
||||
next_update = Microsecondes() + REFRESH_CYCLE;
|
||||
if (Microsecondes() > next_update)
|
||||
{
|
||||
menu_render(&menu_state);
|
||||
CopierZone(0, 0, 0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, 0, 0);
|
||||
next_update = Microsecondes() + REFRESH_CYCLE;
|
||||
}
|
||||
|
||||
if (SourisCliquee()) {
|
||||
menu_handle_mouse_click(&menu_state);
|
||||
}
|
||||
menu_handle_key(&menu_state);
|
||||
}
|
||||
|
||||
/* Sortie du menu par validation */
|
||||
if (menu_state.ready_to_play == 1) {
|
||||
|
||||
image_source_t img_src;
|
||||
tile_t **tiles;
|
||||
game_state_t game_state;
|
||||
int num_tiles;
|
||||
|
||||
/* Préparation des données et initialisation du moteur de jeu */
|
||||
img_src = get_image_source(menu_state.selected_image);
|
||||
tiles = images_slice(img_src, menu_state.rows, menu_state.cols);
|
||||
|
||||
if (tiles == NULL) {
|
||||
fprintf(stderr, "Erreur: Allocation tuiles echouee. Retour au menu.\n");
|
||||
continue;
|
||||
}
|
||||
|
||||
num_tiles = menu_state.rows * menu_state.cols;
|
||||
game_init(&game_state, menu_state.rows, menu_state.cols, tiles);
|
||||
game_shuffle_safe(&game_state, 500);
|
||||
|
||||
printf("DEBUG: Jeu prêt. Grille %d x %d melangee.\n",
|
||||
game_state.rows, game_state.cols);
|
||||
|
||||
/* Lancement de la BOUCLE DE JEU */
|
||||
game_loop(&game_state);
|
||||
|
||||
/* Après game_loop (si la boucle est sortie par victoire ou ESC) */
|
||||
|
||||
/* S'assurer que le joueur veut rejouer */
|
||||
if (ToucheEnAttente()) {
|
||||
int final_key = Touche();
|
||||
if (final_key == 'n' || final_key == 'N') {
|
||||
play_again = 1; /* Remet la grande boucle en marche */
|
||||
}
|
||||
}
|
||||
|
||||
/* Nettoyage des ressources allouées */
|
||||
images_free_tiles(tiles, num_tiles);
|
||||
game_free(&game_state);
|
||||
}
|
||||
|
||||
if (SourisCliquee())
|
||||
{
|
||||
menu_handle_mouse_click(&menu_state);
|
||||
}
|
||||
} while (play_again == 1);
|
||||
|
||||
menu_handle_key(&menu_state);
|
||||
}
|
||||
|
||||
/* 3. Transition vers le jeu */
|
||||
if (menu_state.ready_to_play == 1) {
|
||||
|
||||
image_source_t img_src;
|
||||
tile_t **tiles;
|
||||
game_state_t game_state;
|
||||
int num_tiles = menu_state.rows * menu_state.cols;
|
||||
|
||||
/* Préparation des données et initialisation du moteur de jeu */
|
||||
img_src = get_image_source(menu_state.selected_image);
|
||||
tiles = images_slice(img_src, menu_state.rows, menu_state.cols);
|
||||
game_init(&game_state, menu_state.rows, menu_state.cols, tiles);
|
||||
|
||||
/* Mélange le plateau */
|
||||
game_shuffle_safe(&game_state, 500);
|
||||
|
||||
printf("DEBUG: Jeu prêt. Grille %d x %d melangee. Lancement de la boucle de jeu...\n",
|
||||
game_state.rows, game_state.cols);
|
||||
|
||||
<<<<<<< HEAD
|
||||
/* Lancement de la BOUCLE DE JEU */
|
||||
game_loop(&game_state);
|
||||
=======
|
||||
/* TODO: Boucle de JEU (GRANDE PARTIE 3) */
|
||||
game_loop(&game_state);
|
||||
>>>>>>> 35d0b2d664efc5214a4ffbfd165dbee45dba3a2c
|
||||
|
||||
/* Nettoyage final (après que le joueur a fini de jouer) */
|
||||
images_free_tiles(tiles, num_tiles);
|
||||
game_free(&game_state);
|
||||
}
|
||||
|
||||
FermerGraphique();
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user