Basic Swift implementation of the famous Minesweeper Game.
Cloner ou Télécharger le repo sur votre espace de travail et lancer le fichier MineSweeperGame.xcodeproj
Une fois l'application lancé, l'utilisateur est invité à cliquer sur le boutton info pour prendre connaissance des régles du jeu.
Avant de lancer le jeu (appui sur le boutton START), l'utilisateur peut sélectionner la difficulté (débutant par défaut) de la partie qu'il souhaite provoquer.
Le jeu propose 3 niveaux de difficulté qui permettent de faire varier la taille du plateau et le nombre de Mines sur celui-ci :
- Débutant : 10x10 (10 mines sur le plateau)
- Intermédiaire : 16x16 (40 mines sur le plateau)
- Difficile : 24x24 (99 mines sur le plateau)
Une fois la partie lancé, l'utilisateur peut alors commencer à "déverouiller" des cellules en espérant ne pas déclencher une mine, ce qui arrêterait instantanément la partie.
Une partie peut se terminer de 3 façons distinctes : l'utilisateur choisi d'abandonner et appui sur STOP, l'utilisateur déclenche une mine ou l'utilisateur déverouilles toutes les cellules ne cotenant pas de mine.
Il est à noté qu'un niveau basique d'anglais est nécessaire pour jouer avec cette application, toutes les textes étant en Anglais...
L'application suit le pattern MVC, les classes Helpers servent seulement de support pour certaines méthodes.
Model : Les classes Grid (plateau de jeu) et Cell (cellule du plateau)
View : La classe CellButton, qui représente une Cellule avec laquelle l'utilisateur pourra interagir (Simple press & Long press)
Controller : La classe MainVC pour interfacer entre les classes Model et View énoncées ci-dessus.
- Interface Utilisateur. UI basique, je me suis servi de buttons pour représenter les Cellules, sur lesquels je mets à jour le title en fonction de l'état de la Cellule. Il est aussi à noté que je n'ai pas mis en place les contraintes de Layout pour supporter diverses tailles d'écran :(
- Placement des Mines. La méthode de gestion du placement des mines dans Grid est à revoir pour respecter les régles du démineur. Il est aussi nécessaire de gérer plus efficacement le placement des mines pour ne pas avoir des parties trop faciles ou trop complexes.
- MVC. Séparé la GameView de la classe MainVC (éviter de tomber dans le Massive VC ici) et suivre au mieux les régles dicter par le pattern.
Temps de développement : 8h
Jordan T.