This repository was archived by the owner on Dec 24, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathindex.php
More file actions
93 lines (76 loc) · 2.95 KB
/
Copy pathindex.php
File metadata and controls
93 lines (76 loc) · 2.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<?php
//création d'un objet
class Knight {
private $life = 100;
private $agility = 100;
private $strength = 10;
private $name;
//definir les propriétés d'objets
//(private donc accessible seulement depuis l'objet)
public function __construct($name, $options = [])
//définition d'une méthode(fonction dans une classe)
//public: la méthode peut etre appelée en dehors de la classe
//construct: méthode magique php.net/manual/fr/language.oop5.magic.php
//$name,$option sont les paramètres de la méthode construct
{
$this->name = $name;
//$this représente l'instance sur laquelle on appelle la méthode
//(elle est toujours une instanc de sa classe)
//l'opérateur -> entre $this et name permet d'accèder à
//la propriété($name) de l'objet (Knight) )
if(isset($options["life"])) {
// Si l'option life est définie alors elle prendra cette valeur
//sinon elle prendra la valeur précédemment définie dans l'objet (Knight)
$this->life = $options["life"];
}
if(isset($options["agility"])) {
$this->agility = $options["agility"];
}
if(isset($options["strength"])) {
$this->strength = $options["strength"];
}
echo "je suis le chevalier $this->name<br>";
// $this->name affiche le nom qui sera rentré en paramètre
}
public function attack(Knight $other) {
//définition de la méthode attack de la classe Knight
//( qui peut s'écrire Knight::attack)
echo "je suis le chevalier $this->name, et j'attaque $other->name<br>";
$precision = rand(0, 200);
//définition d'une variable qui génèrera un nombre compris entre 0 et 200
if($precision < $other->agility) {
echo "(mais j'ai loupé mon coup)<br>";
//définition d'un test par une condition (un test est un type de structure de
//contrôle permettant l'affichage conditionnel d'une partie du code :
// php.net/manual/fr/language.control-structures.php)
// Si l'agilité de celui qui est attaqué est inférieure à la précision
// de celui qui attaque alors, le echo s'affiche
} else {
$other->life -= $this->strength;
// équivalent à :
// $other->life = $other->life - $this->strength;
}
if($other->isAlive()) {
$other->attack($this);
}
}
//si other est encore vivant alors il attaque this (contre attaque)
public function isAlive() {
return $this->life > 0;
}
//methode publique qui retourne l'état du personnage (booléen)
};
$lancelot = new Knight("Lancelot", ["life" => 120, "strength" => 20]);
// création d'une instance de la classe Knight
var_dump($lancelot);
echo "<br>";
echo "<br>";
$bayard = new Knight("Bayard", ["agility" => 130]);
var_dump($bayard);
echo "<br>";
echo "<br>";
$lancelot->attack($bayard);
var_dump($lancelot);
echo "<br>";
echo "<br>";
var_dump($bayard);