Grégory Bourguin
SysReIC - LISIC - ULCO
TP 01 (PHP Objet)

Learning Souls Game

Ce 1er TP est destiné à vous entraîner à utiliser la syntaxe PHP, et plus particulièrement les objets PHP.

Le but est de convertir le TP de LOO/Java n°2 en une version PHP (en ligne) : les affichages ne sont plus faits dans la console Java, mais dans une page web.

Étape 1

Dans cette 1ère étape, vous allez recréer toutes les classes du TP02 en PHP objet.

Pour mémoire, le TD2 de LOO était une évolution du TD1 (TD_Java_01.pdf, TD_Java_02.pdf).
Vous pouvez repartir de la correction Java qui vous avait été fournie pour le TD2.


Vous devriez obtenir une structure du type :
    /
    |-- playLSG.php
    |-- lsg
         |-- LearningSoulsGame.php
         |
         |-- characters
         |       |-- Character.php
         |       |-- Hero.php
         |       |-- Monster.php
         |
         |-- helper
         |       |-- Dice.php
         |
         |-- weapons
                 |-- Claw.php
                 |-- Sword.php
                 |-- Weapon.php

Le script playLSG.php fera office de "main" qu'on appellera pour afficher une partie :
playLSG.php
<?php
require_once "lsg/LearningSoulsGame.php" ;
$lsg = new LearningSoulsGame() ;
$lsg->play_v1() ;
?>

Quelques éléments pour vous aider :
  • Par rapport à la version Java, la boucle de combat ne se met plus en pause en attendant que l'utilisateur frappe une touche. Ici, la boucle se déroule directement entièrement jusqu'à la mort d'un personnage.
  • Les classes PHP ne peuvent avoir qu'un seul constructeur... mais il est possible de donner une valeur par défaut aux paramètres.
  • Vous pouvez générer un entier aléatoire grâce à random_int.
  • Vous pouvez faire un arrondi grâce à round.
  • Vous pouvez formatter une chaîne grâce à sprintf.
  • Pour récupérer le nom (court, sans namespace) de la classe dans un objet :
    $nom_classe = (new \ReflectionClass(get_called_class()))->getShortName() ;

Résultat de l'exécution de playLSG.php
(rechargez la page/le script pour exécuter une nouvelle partie)

Étape 2

L'étape 2 consiste "simplement" à modifier les sorties (echo) afin d'obtenir un résultat formaté avec du HTML/CSS/Javascript plus "évolué".

On ajoutera aussi un bouton replay pour pouvoir relancer une partie ! :)


Nouveau résultat attendu.