Mettre en Ćuvre tout ce qui a Ă©tĂ© vu sur la SDL, en crĂ©ant un mini jeu. Nous proposons un jeu totalement diffĂ©rent (validĂ© par l'enseignant). Ce n'est qu'un exercice et il ne faudrait pas lui accorder plus d'une journĂ©e : nous avons passĂ© 2 jours sur cet exercice. Notre jeu mets en Ćuvre une chaĂźne de Markov afin de gĂ©rer le comportement d'au moins un Ă©lĂ©ment du jeu (le feu).
EmpĂȘcher la propagation du feu en Ă©teignant les flammes avec vos seaux d'eau.
Notre chaßne de Markov se déploie sur le comportement du feu.
Il y a 5 états pour un feu :
†s'éteint
†étincelle
†petit feu
†feu fort
†se propage
Un tableau de Markov pour l'Ă©volution du feu peut ĂȘtre comme ceci :
Le tableau dans le programme est généré depuis le fichier texte markov.txt.
DĂ©taillons une ligne de ce tableau. Prenons la ligne Ătincelle (1). Elle modĂ©lises qu'une Ătincelle (1) Ă 30% de chance de rester une Ătincelle (1) et 70% de devenir un Petit feu (2). Nous avons remplis ce tableau afin d'approcher une forme de comportement rĂ©el tout en donnant du challenge aux joueurs.
Un feu peut ĂȘtre Ă©teint (0) et existĂ© ! Il modĂ©lise un dĂ©part de feu soudain. L'Ă©tat Se propage (4) modĂ©lise la multiplication du feu. Dans cet Ă©tat, le feu a une probabilitĂ© uniforme de se propager en croix autour de lui. Il est effectivement créé s'il n'y a pas dĂ©jĂ un feu ou une source d'eau !
â
Nous avons travaillé avec Git et l'utilisation des branches. Nous avons rapidement séparé le travail comme suit :
†Taha Belkhiri : toute la partie visuelle (carte, assets, menu, dessins, implémentations) et les animations.
†Marc Beret : structure et mécanique du feu; chaßne de Markov; propagation du feu.
†Antoine Meyer : logique du personnage (collisions); gestion du clic et de ses actions possibles.
â
Chaque Ă©lĂ©ment du jeu doit ĂȘtre modĂ©lisĂ©. VoilĂ nos modĂ©lisations (non exhaustives) de nos principaux Ă©lĂ©ments :
†le pompier : position (x,y); nombre de seaux d'eau courant; vitesse de déplacement; nombre de points de vie courant; derniÚre fois qu'il a touché le feu.
†le feu : position (x,y); état (étincelle, petit feu, etc).
†liste chaßnée des feux courants : structure de feu; pointeur sur chainon suivant.
†la carte : générée depuis le fichier map.txt; dimension (20 cases par 20).
†le pompier a 3 animations : Se déplace, Immobile et Vient de subir des brûlures.
†le feu a différentes tailles suivant son état.
†les points de vie ont une petite animation de mouvement.
†éteindre le feu : Mat le pompier ne peut Ă©teindre le feu que dans un rayon de une case autour de lui. Si jamais le joueur clique sur une case non accessible, il perd un seau dâeau inutilement donc attention !
†remplir les seaux : Quand Mat se trouve Ă une case de portĂ©e dâune source dâeau il peut remplir ses seaux en cliquant sur lâeau.
†vie du pompier : Mat le pompier dispose de 3 point de vie. Il en perd un Ă chaque fois quâil entre en collision avec un feu.
†collisions : Mat le pompier ne peut pas traverser des arbres ou marcher sur lâeau. Il ne peut pas non plus sortir de la carte.
†prochain feu : Un timer annonce la prochaine évolution des feux (vague de propagation du feu, augmentation du feu, diminution du feu, etc).
†score : Chaque feu éteint correspond à un point.
†conditions de victoire : Mat gagne quand il a Ă©teint tous les feux. Le score est le nombre de feux Ă©teints : il doit ĂȘtre le plus petit possible. Nous n'avons pas eu le temps de faire un Ă©cran de victoire..
†conditions de défaite : Le joueur perd si Mat n'a plus aucuns points de vie. Il arrive alors sur un écran de défaite et peut choisir de recommencer une partie ou de quitter le jeu.
đ„ Tous les feux sont Ă©teints.