Giter VIP home page Giter VIP logo

firefighters's Introduction


Logo

Fire Fighters

À propos du projet

Le but de ce projet est d'implémenter un proto-simulateur d'automate cellulaire. À chaque tour, chaque pompier éteindra soit tous les feux autour de lui soit se dirigera vers le feu le plus proche et éteindra ensuite le feu autour de lui. Le feu de son côté s'étendra autour de lui tous les deux tours. Le but est de voir en combien de tours les pompiers arriveront à éteindre le feu.

Le but principal de ce projet est de rendre du code qui respecte les principes SOLID.

Les tâches à réaliser à partir de la base du projet

  • Tâche 1 :
    Ce modèle devra être étendu avec les fonctionnalités supplémentaires :
    • Des nuages qui se déplacent aléatoirement et qui éteignent les feux.
    • Des pompiers motorisés qui peuvent se déplacer de deux cases.
    • Des cases montagnes qui en sont pas franchissable par le feu ni par les pompiers.
    • Des cases routes qui ne sont franchissables que par les pompiers.
    • Des cases rocailles sur lesquelles le feu mets quatre tours à se propager.

  • Tâche 2 :
    Implémenter un autre modèle de votre choix avec de nouvelles règles, mais que vous garderez simples :
    • Pierre-feuille-ciseau : si un élément pierre atteint une case avec un ciseau, le ciseau est détruit etc... le premier type à éliminer toutes ses cibles gagne.

Description du code

Il y a trois packages dans le projet :

  • generalstructure : Correspond aux classes "générales", notre but était de créer une structure Model/Vue/Controller qui pourra être utilisé pour n'importe quel modèle d'automate cellulaire. Ainsi ce package contient : essentiellement des classes abstraites ou des interfaces qui pourront être étendues ou implémentées pour chaque modèle, les classes concrètes Model, Position et App et le package de l'implémentation du patron de conception Visitor pour peindre les cases. La classe Grid est abstraite pour pouvoir effectuer des initialisations différentes en fonction de chaque nouveau modèle.

  • firefightersgame et rockpaperscissors : Correspondent respectivement à l'implémentation de la tâche 1 et de la tâche 2 du projet, ces packages contiennent toutes les classes concrètes qui étendent ou implémentes les classes et les interface de la structure générale.

Patrons de conception utilisés :

  • Visitor : Utilisant l'interface PaintingVisitor et ConcretePaintingVisitor pour dessiner les entités sur la grille. Et une deuxième implémentation avec l'interface ObstacleVisitor pour vérifier si une Entity peut ou non se déplacer vers une case, toutes les Entity implémentent l'interface ObstacleVisitor.

  • Template Method : Utilisant la classe Grid et ses classes filles FireFightersGrid et RpsGrid.

  • Strategy : Utilisé par Model, on délègue l'initialisation et l'actualisation des entités et des obstacles à deux interfaces correspondant à deux implémentations de Strategy : ObstacleManager et EntityManager.


Langage et outil utilisés

Java

💻 IDE :
IntelliJ IDEA

Contribteurs

firefighters's People

Contributors

ycncy avatar mlizero avatar basilecouetoux avatar

Watchers

 avatar

Forkers

mlizero

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.