Navigation▲
I. Vidéo▲
Cliquez pour lire la vidéo
II. Exercice▲
Vous pouvez lire l'énoncé de l'exercice ici.
III. Solution▲
La solution utilise l'héritage, donc n'hésitez pas à revoir la vidéo dédiée à ce sujet.
III-A. La classe « Personnage »▲
La classe « Personnage » constitue la classe de base de tous nos personnages, que ce soit Link (un Heros) ou Armos (un Ennemi). Pour cela, elle contient deux variables membres :
- le nom du personnage ;
- la vie du personnage (définie par défaut à 100).
Son constructeur est simple et ne fait que copier le nom passé en paramètre à celui-ci.
class
Personnage
{
var
nomPersonnage:
String
;
var
viePersonnage:
int
=
100
;
function
Personnage
(
nom:
String
){
nomPersonnage =
nom;
}
}
III-B. La classe « Heros »▲
class
Heros
{
var
chance:
int
;
function
Heros
(
nom:
String
){
super
(
nom);
Debug.
Log
(
"
Je
suis
un
héros
:
"
+
nomPersonnage);
}
function
Attaquer
(
){
Debug.
Log
(
nomPersonnage +
"
attaque
!
"
);
chance =
Random.
Range
(
1
,
6
);
if
(
chance =
=
1
){
return
true
;
}
else
{
return
false
;
}
}
}
III-C. La classe « Ennemi »▲
class
Ennemi
{
var
chance:
int
;
function
Ennemi
(
nom:
String
){
super
(
nom);
Debug.
Log
(
"
Je
suis
un
méchant
:
"
+
nomPersonnage);
}
function
Attaquer
(
){
Debug.
Log
(
nomPersonnage +
"
attaque
!
"
);
chance =
Random.
Range
(
1
,
6
);
if
(
chance =
=
1
){
return
true
;
}
else
{
return
false
;
}
}
}
III-D. La fonction Start()▲
La fonction Start() est l'endroit où le combat se déroule.
function
Start
(
){
var
heros:
Heros =
new
Heros
(
"
LINK
"
);
var
ennemi:
Ennemi =
new
Ennemi
(
"
ARMOS
"
);
while
(
heros.
viePersonnage >
0
&
&
ennemi.
viePersonnage >
0
){
Debug.
Log
(
"
État
des
vies
:
"
+
heros.
nomPersonnage +
"
:
"
+
heros.
viePersonnage +
"
-------
"
+
ennemi.
nomPersonnage +
"
:
"
+
ennemi.
viePersonnage);
var
attaqueLink =
heros.
Attaquer
(
);
if
(
attaqueLink)
{
ennemi.
viePersonnage -
=
10
;
Debug.
Log
(
heros.
nomPersonnage +
"
fait
perdre
-10
à
"
+
ennemi.
nomPersonnage);
}
else
{
Debug.
Log
(
heros.
nomPersonnage +
"
échoue
"
);
}
var
attaqueArmos =
ennemi.
Attaquer
(
);
if
(
attaqueArmos)
{
heros.
viePersonnage -
=
10
;
Debug.
Log
(
ennemi.
nomPersonnage +
"
fait
perdre
-10
à
"
+
heros.
nomPersonnage);
}
else
{
Debug.
Log
(
ennemi.
nomPersonnage +
"
échoue
"
);
}
}
Debug.
Log
(
"
Fin
de
partie
!
"
);
if
(
heros.
viePersonnage >
ennemi.
viePersonnage){
Debug.
Log
(
heros.
nomPersonnage +
"
gagne!
"
);
}
else
{
Debug.
Log
(
ennemi.
nomPersonnage +
"
gagne!
"
);
}
}
IV. Améliorations des classes▲
Ici, les deux classes sont très semblables, voire trop. En effet, le code des deux fonctions « Attaquer », que ce soit dans Heros ou dans Ennemi est identique. Le code aurait pu être implémenté une unique fois, dans la classe Personnage.
L'avantage des classes est de permettre de créer de nouvelles aptitudes qui ne seraient disponibles, soit que pour les Heros, soit que pour les Ennemis. N'hésitez pas à expérimenter avec le code et à rajouter des améliorations dans ce combat.
V. Commenter▲
Vous pouvez commenter et donner vos avis dans la discussion associée sur le forum, ou encore, poser vos questions dans le forum Unity.
VI. Remerciements▲
Nous remercions « ToutApprendre » pour l'élaboration et la réalisation de ces vidéos. Vous pouvez retrouver sa chaîne YouTube en suivant ce lien.