Files
SAE11_2025/src/main.c
T

84 lines
2.4 KiB
C
Raw Normal View History

2025-11-30 15:40:46 +01:00
/* src/main.c
* Point d'entrée du programme Taquin.
* Gère la boucle principale des événements et la transition de vue (Menu -> Jeu).
*/
2025-12-01 19:32:24 +01:00
#include "game_view.h"
2025-11-30 15:40:46 +01:00
#include "menu_view.h"
2025-12-01 22:10:36 +01:00
#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 */
2025-11-30 15:56:48 +01:00
#include <graph.h>
#include <stdlib.h>
#include <stdio.h>
2025-12-01 22:10:36 +01:00
#include <time.h>
2025-11-30 15:40:46 +01:00
int main(void)
{
menu_state_t menu_state;
unsigned long next_update;
/* 1. Initialisation de l'environnement IUT */
InitialiserGraphique();
CreerFenetre(10, 10, WINDOW_WIDTH, WINDOW_HEIGHT);
2025-11-30 15:56:48 +01:00
srand((unsigned int)time(NULL));
2025-11-30 15:40:46 +01:00
menu_init(&menu_state);
next_update = Microsecondes() + REFRESH_CYCLE;
2025-11-30 15:56:48 +01:00
/* 2. Boucle du Menu */
2025-11-30 15:40:46 +01:00
while (menu_state.ready_to_play == 0)
{
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);
}
2025-12-01 22:10:36 +01:00
/* 3. Transition vers le jeu */
2025-11-30 15:40:46 +01:00
if (menu_state.ready_to_play == 1) {
2025-11-30 15:56:48 +01:00
image_source_t img_src;
tile_t **tiles;
game_state_t game_state;
int num_tiles = menu_state.rows * menu_state.cols;
2025-12-01 22:10:36 +01:00
/* Préparation des données et initialisation du moteur de jeu */
2025-11-30 15:56:48 +01:00
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);
2025-11-30 15:40:46 +01:00
2025-12-01 22:10:36 +01:00
/* Mélange le plateau */
2025-11-30 15:56:48 +01:00
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);
2025-12-01 22:12:51 +01:00
<<<<<<< HEAD
2025-12-01 22:10:36 +01:00
/* Lancement de la BOUCLE DE JEU */
game_loop(&game_state);
2025-12-01 22:12:51 +01:00
=======
2025-11-30 15:56:48 +01:00
/* TODO: Boucle de JEU (GRANDE PARTIE 3) */
2025-12-01 19:32:24 +01:00
game_loop(&game_state);
2025-12-01 22:12:51 +01:00
>>>>>>> 35d0b2d664efc5214a4ffbfd165dbee45dba3a2c
2025-11-30 15:56:48 +01:00
2025-12-01 22:10:36 +01:00
/* Nettoyage final (après que le joueur a fini de jouer) */
2025-11-30 15:56:48 +01:00
images_free_tiles(tiles, num_tiles);
game_free(&game_state);
}
2025-11-30 15:40:46 +01:00
FermerGraphique();
return EXIT_SUCCESS;
}