Git Product home page Git Product logo

minesweepergame's Introduction

MineSweeperGame

Basic Swift implementation of the famous Minesweeper Game.

Installation

Cloner ou Télécharger le repo sur votre espace de travail et lancer le fichier MineSweeperGame.xcodeproj

Fonctionnement

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...

Architecture

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.

Points à améliorer

  1. 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 :(
  2. 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.
  3. 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.

Divers

Temps de développement : 8h

Credits

Jordan T.

minesweepergame's People

Contributors

pownedjojo avatar pownedjo avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.