Menu v3
This commit is contained in:
+38
-18
@@ -4,11 +4,15 @@
|
||||
*/
|
||||
|
||||
#include "menu_view.h"
|
||||
#include <graph.h> /* La bibliothèque IUT */
|
||||
#include <stdlib.h> /* Pour EXIT_SUCCESS */
|
||||
#include <stdio.h> /* Pour printf */
|
||||
#include "game_logic.h" /* Nouveau: pour initialiser le jeu */
|
||||
#include "images.h" /* Nouveau: pour le chargement des tuiles */
|
||||
#include "utils.h" /* Nouveau: pour l'aléatoire */
|
||||
#include <graph.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <time.h> /* Pour srand() */
|
||||
|
||||
/* Constantes de la fenêtre (doivent être disponibles partout) */
|
||||
/* Constantes de la fenêtre */
|
||||
#define WINDOW_WIDTH 800
|
||||
#define WINDOW_HEIGHT 600
|
||||
|
||||
@@ -24,44 +28,60 @@ int main(void)
|
||||
InitialiserGraphique();
|
||||
CreerFenetre(10, 10, WINDOW_WIDTH, WINDOW_HEIGHT);
|
||||
|
||||
/* Initialisation du générateur aléatoire (OBLIGATOIRE pour game_shuffle) */
|
||||
srand((unsigned int)time(NULL));
|
||||
|
||||
menu_init(&menu_state);
|
||||
|
||||
next_update = Microsecondes() + REFRESH_CYCLE;
|
||||
|
||||
/* 2. Boucle du Menu (tant que le joueur n'a pas validé ou quitté) */
|
||||
/* 2. Boucle du Menu */
|
||||
while (menu_state.ready_to_play == 0)
|
||||
{
|
||||
/* Gestion du temps et Rendu (dessin) */
|
||||
if (Microsecondes() > next_update)
|
||||
{
|
||||
menu_render(&menu_state);
|
||||
|
||||
/* FORCER L'AFFICHAGE : Copier l'écran 0 vers l'écran 0
|
||||
(Technique souvent nécessaire avec XLib pour forcer le rafraîchissement) */
|
||||
/* Force l'affichage */
|
||||
CopierZone(0, 0, 0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, 0, 0);
|
||||
|
||||
next_update = Microsecondes() + REFRESH_CYCLE;
|
||||
}
|
||||
|
||||
/* Gestion des événements Souris */
|
||||
if (SourisCliquee())
|
||||
{
|
||||
/* _X et _Y sont mis à jour par SourisCliquee() */
|
||||
menu_handle_mouse_click(&menu_state);
|
||||
}
|
||||
|
||||
/* Gestion des événements Clavier */
|
||||
menu_handle_key(&menu_state);
|
||||
}
|
||||
|
||||
/* 3. Sortie */
|
||||
/* 3. Transition vers le jeu ou sortie */
|
||||
if (menu_state.ready_to_play == 1) {
|
||||
printf("Configuration valide. Image %d choisie, grille %d x %d. Lancement du jeu...\n",
|
||||
menu_state.selected_image + 1, menu_state.rows, menu_state.cols);
|
||||
|
||||
/* TODO: Appeler game_init, game_shuffle et la boucle de jeu (GRANDE PARTIE 2) */
|
||||
}
|
||||
image_source_t img_src;
|
||||
tile_t **tiles;
|
||||
game_state_t game_state;
|
||||
int num_tiles = menu_state.rows * menu_state.cols;
|
||||
|
||||
/* 3.1. Préparation des données et allocation */
|
||||
img_src = get_image_source(menu_state.selected_image);
|
||||
tiles = images_slice(img_src, menu_state.rows, menu_state.cols);
|
||||
|
||||
/* Initialisation du jeu */
|
||||
game_init(&game_state, menu_state.rows, menu_state.cols, tiles);
|
||||
|
||||
/* Mélange (Partie 3) */
|
||||
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);
|
||||
|
||||
/* TODO: Boucle de JEU (GRANDE PARTIE 3) */
|
||||
|
||||
/* 3.2. Nettoyage après la fin de la partie */
|
||||
images_free_tiles(tiles, num_tiles);
|
||||
game_free(&game_state);
|
||||
}
|
||||
|
||||
FermerGraphique();
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user