Cours de Rémi JarjatCours de Rémi Jarjat
  • Liste des cours
  • Culture numérique
  • Git
    • Terminologie
    • Avant de commencer
    • Créer un dépôt (local)
    • Enregistrer des changements
    • Des branches
    • Mise en commun du travail
    • Annuler des changements
    • Réécrire l'historique
    • Des outils pour se simplifier Git
    • Exercices
    • Exemples pratiques
  • Linux
    • Installation
    • Historique
    • Rangement des fichiers
    • Les processus
    • Commandes de base
    • Commandes avancées
    • /linux/6-other-technologies.html
    • Exercices
    • Correction des exercices
  • PHP
    • Environnement de travail
    • Bases du PHP
    • Tests et boucles
    • Procédures et fonctions
    • Interagir avec l'utilisateur
    • La temporisation de sortie
    • PHP Doc et PSR
    • PHP Orienté objet
    • Héritage et objets
    • Factorisation
    • Manipuler la BdD avec PDO (PHP Data Object)
    • Architecture MVC
    • Webservices REST
    • Exercices - Bases
    • Exercices - Séparer en plusieurs fichiers
    • Exercices - POST et SESSION
    • Exercices - Panier et validation
    • Exercices - Objets
    • Exercices - BdD avec PDO
    • Projet - montage d'ordinateurs
    • Projet - Personnages de Jeux de Rôle
  • Symfony
    • Installer Symfony et son environnement de travail
    • Structure et utilisation d'un projet
    • Le routing
    • Les controllers
    • Twig
    • Les services et l'injection de dépendances
    • Doctrine et la BdD
    • Formulaires
    • Les traductions
    • Event listeners/subscribers
    • Connexion et sécurisation
    • Bundles
    • Easy Admin Bundle
    • API Platform
    • Pense-bêtes
    • Symfony au quotidien
    • Travailler avec Docker
    • Projet : annonces de SPA / éleveurs
    • Exercices
  • Javascript
    • Les bases du langage
    • Manipulation logique
    • Le DOM
    • JQuery
    • Ajax
    • Programmation orientée objet
    • Webpack
    • Outils utiles
    • Révisions
  • Serveur Lamp
  • Déploiement
    • Des outils et manières de faire
    • Déploiement par FTP
    • Wordpress
    • Intégrer Git dans le processus
    • GitHub Pages pour déployer facilement
    • Symfony et Angular
  • Docker
  • Intégration continue
  • Sécurité informatique

Projet - Personnages de Jeux de Rôle

  • La demande client
    • Fonctionnalités supplémentaires pour le Maître de Jeu (optionnelles)
  • Page de connexion
  • Accueil de l'utilisateur
  • Voir une fiche
  • Créer / modifier les informations de base
  • Créer / modifier un équipement
  • Créer / modifier une compétence
  • Suppression de la fiche
  • Fonctionnalités MJ (optionnelles)
  • Fonctionnalités de gestion de parties (optionnelles)
    • Lancers de dés
    • Filtres et tris
    • Gestionnaire de parties
    • Extension des parties à tous les joueurs
  • Critères d'acceptation (notation)

Nous allons mettre en place un projet Php, rendu sur Github/Gitlab, en utilisant des tickets (outil à définir). Le processus de travail doit être comme suit :

  • utiliser Git pour enregistrer les modifications de chaque développeur
  • une branche doit être créée pour chaque ticket de code
    • lorsque le ticket est terminé, une Pull/Merge Request (appelée MR par la suite) doit être créée
    • cette MR doit être relue par un autre développeur pour :
      • remonter des incohérences
      • vérifier que le code écrit répond à la demande
      • vérifier que le code écrit correspond aux normes de codage défini au sein de l'équipe (et peut permettre de les définir)

Ce projet est prévu pour une équipe de 2 à 3 personnes.

La demande client

Wizards of the Cost, notre client, veut que ses joueurs de PâteFinder (leur dernier jeu de rôle papier) puissent gérer leurs feuilles de personnages en ligne.

Une feuille de personnage contient :

  • le nom du personnage
  • le nom du joueur / de la joueuse
  • des caractéristiques
  • des compétences
  • des équipements

Les caractéristiques d'un personnage :

  • son initiative (maximum 10)
  • points de vie maximum
  • points de vie actuels
  • points de magie maximum
  • points de magie actuels
  • la force (maximum 20)
  • la dextérité (maximum 20)
  • la constitution (maximum 20)
  • l'intelligence (maximum 20)
  • la sagesse (maximum 20)
  • la chance (maximum 20)

Une compétence contient :

  • un nom
  • une caractéristique associée
  • un niveau (nombre entier entre 0 et 5)

Un équipement est défini par :

  • un nom
  • des dégâts (nombre supérieur ou égal à 0)
  • une portée (nombre entier entre 0 et 5)

Chaque joueur pourra se connecter et voir / créer / modifier ses fiches de personnages. Son espace personnel contiendra donc une liste de ses fiches, avec quelques informations.

Fonctionnalités supplémentaires pour le Maître de Jeu (optionnelles)

Le client veut, si possible et dans un second temps, ajouter un ensemble de fonctionnalités pour le MJ, lui permettant de créer des feuilles de personnage pour ses joueurs et de les mettre à jour.

Page de connexion

Pour utiliser le site, un utilisateur doit être connecté. Si un utilisateur n'est pas connecté, mais cherche à accéder à une autre page, il sera renvoyé vers la page de connexion.

Ce formulaire demandera un nom d'utilisateur et un mot de passe. Les informations seront conservées dans la session si elles correspondent à une entrée en BdD. Sinon, on affichera un message d'erreur approprié.

Accueil de l'utilisateur

Quand un utilisateur s'est connecté, il peut accéder à la liste de ses fiches de personnage.

Il doit pouvoir accéder à un formulaire pour créer un nouveau personnage depuis cette page.

Chaque fiche doit présenter :

  • le nom du personnage
  • ses caractéristiques
  • la liste des compétences
  • la liste des équipements
  • un lien pour modifier les informations de base et les caractéristiques
  • un lien pour modifier une compétence
  • un lien pour ajouter une compétence
  • un lien pour modifier un équipement
  • un lien pour ajouter un équipement
  • un lien pour voir la fiche en entier
  • un lien pour supprimer la fiche

Voir une fiche

Cette fonctionnalité affiche toutes les informations d'une fiche de personnage de manière plus lisible, afin d'être utilisée pendant une partie de JdR.

Créer / modifier les informations de base

Le propriétaire de la fiche doit pouvoir mettre à jour tous les éléments de base et les caractéristiques de la fiche.

Les éléments de base modifiable :

  • le nom du personnage
  • le nom du joueur / de la joueuse
  • des caractéristiques
  • des compétences
  • des équipements

Les caractéristiques du personnage :

  • son initiative (maximum 10)
  • points de vie maximum
  • points de vie actuels (inférieur ou égal aux points de vie maximum)
  • points de magie maximum
  • points de magie actuels (inférieur ou égal aux points de magie maximum)
  • la force (compris entre 5 et 20)
  • la dextérité (compris entre 5 et 20)
  • la constitution (compris entre 5 et 20)
  • l'intelligence (compris entre 5 et 20)
  • la sagesse (compris entre 5 et 20)
  • la chance (compris entre 5 et 20)

Pour un nouveau personnage, la somme totale des caractéristiques doit être comprise entre 60 et 80. Cette règle n'est plus vraie pour un personnage modifié, dont les caractéristiques vont évoluer avec les parties.

Créer / modifier un équipement

La création / modification d'un équipement se fait pour un personnage et permet de définir les informations suivantes :

  • un nom
  • des dégâts (nombre supérieur ou égal à 0)
  • une portée (nombre entier entre 0 et 5)

Créer / modifier une compétence

La création / modification d'une compétence se fait pour un personnage et permet de définir les informations suivantes :

  • un nom
  • une caractéristique associée
  • un niveau (nombre entier entre 0 et 5)

Suppression de la fiche

La suppression d'une feuille de personnage supprime tous les éléments associés. Il ne doit pas y avoir de données orphelines dans la BdD.

Fonctionnalités MJ (optionnelles)

Un MJ est un type d'utilisateur à part entière. Il peut créer / modifier des tables (ses parties), y associer des joueurs et leur assigner des personnages. Il peut également créer / modifier des personnages (y compris les personnages de ses joueurs), des équipements et des compétences.

Cette fonctionnalité désactive la création / modification de personnages côté joueur et seul l'affichage de ses fiches lui est disponible.

Le MJ peut créer des fiches des personnages, des équipements et des compétences sans les assigner à des joueurs ou des personnages. Équipements et compétences peuvent alors être sélectionnés dans une liste déroulante, lors de la création / modification d'un personnage.

Fonctionnalités de gestion de parties (optionnelles)

⚠️ nécessite les fonctionnalités de MJ.

Lancers de dés

Lors d'une partie, les joueurs comme le MJ aimeraient avoir une page pour gérer leurs lancers de dés. Ils peuvent sélectionner un nombre de dés (entre 1 et 50) et un type de dé (nombre de faces possibles : 2, 4, 6, 8, 10, 12, 20 ou 100).

Les lancés de dés se font dans le cadre d'une partie et sont liés à un personnage ou un MJ et on veut un historique des lancers de chaque joueur et du MJ. Chaque joueur ne peut voir que ses lancers, alors que le MJ peut voir les lancers de tout le monde et leurs historiques.

Filtres et tris

Pour facilité la gestion d'un grand nombre de personnages, d'équipements et de compétences, on aimerait un ensemble de tris et de filtres sur les différentes listes.

Équipements

Il faudrait pouvoir filtrer la liste des équipements par :

  • portée (avec un min et un max)
  • dégâts (avec un min et un max)

On veut pouvoir trier (ordres croissant ou décroissant) la liste par :

  • nom
  • portée
  • dégâts

Compétences

Il faudrait pouvoir filtrer la liste des compétences par :

  • caractéristique associée
  • un niveau (avec un min et un max)

On veut pouvoir trier (ordres croissant ou décroissant) la liste par :

  • nom
  • niveau

Fiches de personnages

Il faudrait pouvoir filtrer la liste des personnages par :

  • nom du personnage (champ de recherche, où l'on veut entrer tout ou partie du nom)
  • nom du joueur / de la joueuse (choisir dans les joueurs disponibles)

On veut pouvoir trier (ordres croissant ou décroissant) la liste par :

  • nom du personnage
  • nom du joueur

Gestionnaire de parties

Un utilisateur ayant les droits MJ doit pouvoir gérer les parties : les lister, les mettre à jour, en archiver (on ne les supprime pas, mais une partie archivée n'est plus visible par défaut) ou en créer de nouvelles.

Une partie a :

  • un MJ
  • des joueurs (peut ne pas en avoir)
  • des fiches de personnage
  • une date de création
  • des dates de jeu (dates où la partie a été ou va être jouée par les joueurs et le MJ)

Il faudrait pouvoir filtrer la liste des parties par :

  • joueur
  • date de création
  • date de jeu

On veut pouvoir trier (ordres croissant ou décroissant) la liste par :

  • nombre de joueurs
  • date de création
  • date de jeu

Extension des parties à tous les joueurs

Pour étendre le système et refléter au mieux la réalité des JdR, il faut que les joueurs puissent devenir MJ et vice versa. Un utilisateur sera MJ sur une ou des parties, pourra en créer, etc. et pourra être joueur sur d'autres.

Un utilisateur pourra donc modifier/archiver des parties où il est MJ, mais pas celles où il est simplement joueur.

Critères d'acceptation (notation)

Pour valider le rendu, voici ce qui est attendu par votre chef de projet, pour chacun d'entre vous :

  • Création/manipulation d'au moins une classe/objet.
  • Création de requêtes de BdD (au moins une insertion, une mise à jour et une récupération de données) avec gestion des erreurs.
  • Manipulation d'un formulaire complexe (filtre, création/modification d'un objet, etc. avec validation et affichage des données et requête(s) associées).
  • Travail d'équipe (lecture des PRs et remontée des problèmes, création de PR, utilisation de git rebase pour simplifier l'historique et gérer les conflits, etc.).

Bonus :

  • Respect des normes PSR (1, 12 et 4) pour tout le code.

Éléments communs à fournir (conseil : ajoutez-les dans le projet, dans un dossier docs, resources ou autre nom) :

  • Un schéma de base de données (fichier Looping, schéma image ou autre).
  • un dump de la base de données finale.
  • un fichier README.md affichant :
    • Le schéma de la BdD.
    • La démarche pour installer le projet (le chef de projet doit pouvoir le faire sans erreurs).
Dernières mise à jour :
Prev
Projet - montage d'ordinateurs