La classe
TP POO : Mini-jeu de combat
Cahier des charges
Nous allons créer une sorte de jeu. Chaque visiteur pourra créer un personnage (pas de mot de passe requis pour faire simple) avec lequel il pourra frapper d'autres personnages. Le personnage frappé se verra infliger un certain degré de dégâts.
Un personnage est défini selon 2 caractéristiques :- Son nom (unique).
- Ses dégâts.
Les dégâts d'un personnage sont compris entre 0 et 100. Au début, il a bien entendu 0 de dégât. Chaque coup qui lui sera porté lui fera prendre 5 points de dégâts. Une fois arrivé à 100 points de dégâts, le personnage est mort (on le supprimera alors de la BDD).
Notions utilisées
Voici une petite liste vous indiquant les points techniques que l'on va mettre en pratique :
- Les attributs et méthodes ;
- l'instanciation de la classe ;
- les constantes de classe ;
- et surtout, tout ce qui touche à la manipulation de données stockées.
CREATE TABLE IF NOT EXISTS `personnages` (
`id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`nom` varchar(50) COLLATE utf8_general_ci NOT NULL,
`degats` tinyint(3) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `nom` (`nom`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
Première étape : le personnage
Caractéristiques et fonctionnalités du personnage<?php
class Personnage {
// attributs
private $_id,
$_degats,
$_nom;
// Trois constantes de classe renvoyées par la méthode `frapper`
// si on se frappe soi-même
const CEST_MOI = 1;
// si on a tué le personnage en le frappant
const PERSONNAGE_TUE = 2;
// si on a bien frappé le personnage
const PERSONNAGE_FRAPPE = 3;
// méthode
public function frapper(Personnage $perso) {
// renvoie la constante de classe CEST_MOI
}
// méthode
public function recevoirDegats() {
// renvoie les constantes de classe PERSONNAGE_TUE ou PERSONNAGE_FRAPPE
}
}
Les méthodes n'ont en général pas besoin d'être masquées à l'utilisateur, on les met souvent en public