Giter VIP home page Giter VIP logo

pa-2020-projet's Introduction

Projet Programmation avancée 2019-2020

Description

Le but de ce projet est d'écrire un petit jeu dont la majorité des fonctionnalités sera implémentée sous forme de plugins. La partie graphique utilisera OpenJFX.

Gameplay

Une partie du jeu se déroule de la façon suivante :

  • Un nombre variable de joueurs se déplace à l'écran
  • Chaque joueur a une barre de vie
  • Une collision entre joueurs leur fait perdre de la vie
  • Le gagnant est le dernier à avoir encore de la vie De base tous les joueurs sont controlés par l'ordinateur, sans intervention humaine

Principe des plugins

Le point important du projet est d'avoir une architecture à plugins. La majorité de l'application devra être configurée grâce à des classes qui seront chargées dynamiquement à l'exécution. Par exemple, on peut imaginer spécifier un comportement différent pour le déplacement avec la classe suivante

public class NimporteComment implements PluginMouvement {

	public void move(...) {
	    ...
	}
}

Concrètement, le jeu devra

  1. Charger la classe à l'exécution en la trouvant sur le disque
  2. Appeler la méthode move(...) (venant de l'interface PluginMouvement) quand ça sera nécessaire

Liste non exhaustive de plugins

Une fois l'architecture pour plugins mise en place, il devrait être très facile d'en ajouter. Mais il faut avoir bien prévu ce qu'on voulait faire dès le début. Voici une petite liste de plugins qui devront être implémentés. Cette liste devrait permettre de décider quand un plugin est appelé et comment il est appelé (i.e. avec quels paramètres).

  • Mouvement de joueur :
    • déplacement aléatoire
    • suivi, fuite
  • Formes/Graphismes joueurs
    • Affichage de figures géométriques, images
    • Affichage barre de vie, perte de vie...
  • Aire de jeu
    • Charger une image pour mettre en aire de jeu (fond d'écran)
    • Générer aléatoirement des obstacles sur l'aire de jeu
    • Charger un fichier décrivant les obstacles
  • Comportement si collisions
    • Changement d’image en cas de collision
    • Création de nouveaux sprites lors d’une collision
  • Armes
    • Mine, missile à trajectoire variable...
  • GUI
    • Ajout d’une barre de menu pour faire pause, redémarrer la partie...
    • Ajout d'informations tel que durée de partie, longueur des déplacements...
  • Autre
    • Avoir un comportement pour les joueurs morts (par exemple ralentir les autres joueurs en cas de contact)
    • Avoir un joueur humain (pilotage au clavier)

Code démo

Le code fournit dans ce dépot est destiné à vous montrer le fonctionnement de JavaFX et vous fournir la boucle de jeu (classe GameGUI). Il ne contient aucun code lié aux plugins.

Fonctionnalités de l'application

L'application finale devra permettre de choisir, au lancement, le nombre de joueurs, ainsi que les plugins du jeu, grâce à une fenêtre. Le mockup suivant est juste un exemple.

mokup de fenêtre

Elle devra aussi afficher le gagnant lors de la fin de partie.

Évaluation et rendu

Le travail se fait en groupe de 3 étudiants en moyenne, choisis aléatoirement. Tout le projet devra être fait dans un dépôt GitHub classroom privé. Ce depot doit être créé par le chef de projet. Le projet doit être multimodule de sorte à pouvoir compiler les plugins séparément. L'application principale doit être un jar exécutable. La date de rendu est le 7 mai 2020 à 18.00. Tout commit fait après ne sera pas considéré. La note finale tiendra compte des critères suivants

  • Qualité de l'architecture
  • Plugins (nombre, originalité, intégration dans le jeu...)
  • Travail en équipe (répartition des taches, travail régulier...)
  • Qualité globale du jeu
  • Démonstration ou rendu vidéo (10 min par groupe

Gestion de groupe

Chaque projet devra désigner un chef de projet. Son rôle sera d'assurer un suivi régulier (au moins bi-hebdomadaire) du travail. Le suivi des taches devra être effectué avec le Kanban intégré à GitHub. La note des membres du groupe pourra être différente suivant le travail accompli par chacun. C'est pour ça que le suivi régulier des taches est très important. En cas de problèmes dans le groupe. Il faut essayer de le traiter en interne. Par exemple assigner les taches en fonction de la disponibilité et les compétences techniques. Si le problème persiste, me contacter pour que j'intervienne.

pa-2020-projet's People

Contributors

fabricehuet avatar

Stargazers

William POITEVIN avatar Hugo Beranger avatar

Watchers

James Cloos avatar  avatar Mohammed Moussaoui 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.