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.



