Hello, I have a role-playing app with a hero that gains characteristics as you level up. This works well except for the display of pvMax which remains blocked on level 1.
I have an Entite.cs which will inherit a Personnage.cs which will itself inherit a Guerrier.cs.
As we see on the screenshots, at level 1, I have 250/250 hp but at level two, I should have 250/260 because I have a method that allows me to gain 10 hp at each level.
What did I miss please?

My Entite.cs
public abstract class Entite
{
protected string nom;
protected bool estMort = false;
protected int pointsDeVie;
protected int pvMax;
protected int degatsMin;
protected int degatsMax;
protected int potionsSoins;
protected int potionsSoinsMiraculeux;
protected int piecesOr;
protected int dePipe;
protected Random random = new Random();
public Entite(string nom)
{
this.nom = nom;
}
//Methode qui permet d'attaquer, se sert de la classe Entité (Monstre & Personnage) avec des dégats aléatoire entre les dégats min et dégats max
public void Attaquer(Entite uneEntite)
{
int degats = random.Next(degatsMin, degatsMax);
uneEntite.PerdrePointsDeVie(degats);
Console.WriteLine(this.nom + "(" + this.pointsDeVie + ")" + " attaque: " + uneEntite.nom);
Console.WriteLine(uneEntite.nom + " a perdu " + degats + " points de vie");
Console.WriteLine("Il reste " + uneEntite.pointsDeVie + " point de vie à " + uneEntite.nom);
if(uneEntite.estMort)
{
Console.WriteLine(uneEntite.nom + " est mort !");
}
}
//Methode qui permet de perdre les PV, indique quand on est mort et bloque les pv à 0 en cas de perte négative
protected void PerdrePointsDeVie(int pointsDeVie)
{
this.pointsDeVie -= pointsDeVie;
if(this.pointsDeVie <= 0)
{
this.pointsDeVie = 0;
estMort = true;
}
}
public bool EstMort()
{
return this.estMort;
}
}
My Personnage.cs
public class Personnage : Entite
{
protected int niveau;
private int experience;
public Personnage(string nom) : base(nom)
{
this.nom = nom;
niveau = 1;
experience = 0;
potionsSoins = 0;
potionsSoinsMiraculeux = 0;
dePipe = 0;
pvMax = 0;
}
public void GagnerExperience(int experience) //Méthode qui permet de passer de niveau et gagner des caractéristiques.
{
this.experience += experience;
while (this.experience >= ExperienceRequise())
{
Console.WriteLine("Bravo : Vous avez atteint le niveau " + niveau + " !");
string messageGainNiveau = "Kawabounga, vous avez atteint le niveau " + niveau + " !";
messageGainNiveau.ToString();
niveau += 1;
pointsDeVie += 10;
degatsMin += 4;
degatsMax += 6;
}
}
public double ExperienceRequise() //Methode qui permet de définir la montée des niveaux (basé sur Pokemon)
{
return Math.Round(4 * (Math.Pow(niveau, 3) / 5));
}
public string Caracteristiques() //Méthode qui permet de décrire le statut du héros
{
return nom + "\n" + "Niveau: " + niveau + "\n" + "Pv: " + pointsDeVie + " / " + pvMax + " pv\n" + "Points d'expérience: (" + experience + "/" + ExperienceRequise() + ")\n" + "Dégats: [" + degatsMin + "-" + degatsMax + "]\n" + "Vous possedez " + potionsSoins + " potions de soins et " + potionsSoinsMiraculeux + " potions de soins miraculeux et " + piecesOr + " pièces d'or.";
}
}
My Guerrier.cs
public class Guerrier: Personnage
{
public Guerrier (string nom) : base(nom)
{
pointsDeVie = 250;
degatsMin = 25;
degatsMax = 30;
pvMax = pointsDeVie + ((niveau - 1) * 10);
}
}
Here is my Donjon01.xamls.cs
public partial class Donjon01 : ContentPage
{
private int tentative = 0; // Sert de compteur pour la méthode des enigmes
private int nbrChoix = 0; // Sert de compteur pour la méthode du vol des objets (CheckBox)
private int nbrChoixMax = 1; // Limite à 2 tentatives le vol d'objets (CheckBox)
Personnage monPerso = new Personnage("Vous");
public Donjon01()
{
InitializeComponent();
}
//Methode qui permet de choisir son personnage avec des caractéristiques différentes pour l'aventure (Guerrier)
public void ChoisirGuerrier(object sender, CheckedChangedEventArgs e)
{
RadioButton button = sender as RadioButton;
personnageLabel.Text = $"Vous avez choisi: {button.Content}";
monPerso = new Guerrier(button.Content + ": Olafmegabaff");
Text01.Text = $"Vous êtes un puissant {button.Content} nommé \n" + monPerso.Caracteristiques() + "\nVous arrivez devant le Donjon et face à vous, une porte sombre et imposante se dresse. Cela semble être la seule entrée.\nQu'allez vous décider ?";
}
//Methode qui permet de choisir son personnage avec des caractéristiques différentes pour l'aventure (Archer)
public void ChoisirArcher(object sender, CheckedChangedEventArgs e)
{
RadioButton button = sender as RadioButton;
personnageLabel.Text = $"Vous avez choisi: {button.Content}";
monPerso = new Archer(button.Content + ": Waylander");
Text01.Text = $"Vous êtes un habile {button.Content} nommé \n" + monPerso.Caracteristiques() + "\nVous arrivez devant le Donjon et face à vous, une porte sombre et imposante se dresse. Cela semble être la seule entrée.\nQu'allez vous décider ?";
}
//Methode qui permet de choisir son personnage avec des caractéristiques différentes pour l'aventure (Voleur)
public void ChoisirVoleur(object sender, CheckedChangedEventArgs e)
{
RadioButton button = sender as RadioButton;
personnageLabel.Text = $"Vous avez choisi: {button.Content}";
monPerso = new Voleur(button.Content + ": Renshaw");
Text01.Text = $"Vous êtes un rapide {button.Content} nommé \n" + monPerso.Caracteristiques() + "\nVous arrivez devant le Donjon et face à vous, une porte sombre et imposante se dresse. Cela semble être la seule entrée.\nQu'allez vous décider ?";
}
//Méthode qui permet de lancer un D10
public int DeAleatoire()
{
Random deAlea = new Random();
return deAlea.Next(1, 11);
}
//Methode pour faire avancer le scénario
public void ActionButton01AClicked (object sender, EventArgs e)
{
if (Reponse01.Text == "A force de roder avec plus ou moins de discretion autour du donjon pour trouver une entrée secrète, vous vous faites alpaguer par une patrouille qui vous jette dans les oubliettes.\nAinsi s'achève votre carrière d'aventurier !")
{
Action01B.IsEnabled = false;
Reponse01.IsVisible = true;
}
else
{
Reponse01.TextColor = Color.DarkGray;
Text02.IsVisible = true;
Reponse01.Text = "Bravo, vous avez l'air malin à frapper à la porte d'un donjon. Mais cela semble marcher vu que la porte s'ouvre !";
Action01B.IsEnabled = false;
ActionButton02A.IsVisible = true;
ActionButton02B.IsVisible = true;
ChoixPerso.IsEnabled = false;
}
}
//Methode pour faire avancer le scénario mais sanctionné par l'échec si mauvais choix
public void ActionButton01BClicked (object sender, EventArgs e)
{
if (Reponse01.Text == "Bravo, vous avez l'air malin à frapper à la porte d'un donjon. Mais cela semble marcher vu que la porte s'ouvre !")
{
Action01A.IsEnabled = false;
Reponse01.IsVisible = true;
Text02.IsVisible = true;
ActionButton02A.IsVisible = true;
ActionButton02B.IsVisible = true;
}
else
{
Reponse01.TextColor = Color.DarkRed;
Action01A.IsEnabled = false;
Reponse01.Text = "A force de roder avec plus ou moins de discretion autour du donjon pour trouver une entrée secrète, vous vous faites alpaguer par une patrouille qui vous jette dans les oubliettes.\nAinsi s'achève votre carrière d'aventurier !";
DisplayAlert("Echec", "Vous avez perdu", "Recommencer");
ChoixPerso.IsEnabled = false;
}
}
//Methode pour faire avancer le scénario
public void ActionButton02AClicked (object sender, EventArgs e)
{
if (Reponse02.Text == "Vous prenez en face et trouvez un escalier dont vous commencez à escalader les marches.")
{
ActionButton02B.IsEnabled = false;
Reponse02.IsVisible = true;
Text03A.IsVisible = true;
ActionButton03A.IsVisible = true;
ActionButton03B.IsVisible = true;
}
else
{
Reponse02.TextColor = Color.DarkGray;
ActionButton02B.IsEnabled = false;
Reponse02.Text = "En prenant à droite, vous avancez dans un couloir assez sombre.";
Text03B.IsVisible = true;
ActionButton04A.IsVisible = true;
ActionButton04B.IsVisible = true;
}
}
//Methode pour faire avancer le scénario
public void ActionButton02BClicked (object sender, EventArgs e)
{
if (Reponse02.Text == "En prenant à droite, vous avancez dans un couloir assez sombre quand vous entendez un couinement. Vous avez peu de temps pour réagir.")
{
ActionButton02A.IsEnabled = false;
Reponse02.IsVisible = true;
Text03B.IsVisible = true;
ActionButton03A.IsVisible = true;
ActionButton03B.IsVisible = true;
}
else
{
Reponse02.TextColor = Color.DarkGray;
Reponse02.Text = "Vous prenez en face et trouvez un escalier dont vous commencez à escalader les marches.";
ActionButton03A.IsVisible = true;
ActionButton02A.IsEnabled = false;
ActionButton03B.IsVisible = true;
Text03A.IsVisible = true;
}
}
//Methode pour faire avancer le scénario
public void ActionButton03AClicked (object sender, EventArgs e)
{
if (Reponse03.Text =="L'enigme semble trop difficile pour vous, vous preferez faire demi tour et prendre l'embranchement de droite.")
{
ActionButton03B.IsEnabled = false;
}
else
{
Enigme01.IsVisible = true;
ActionButton03B.IsEnabled = false;
}
}
//Methode pour gerer l'enigme 01 avec nombre de tentative et gain d'expérience
//Limité à 3 tentatives avec un compteur et une variable globale déclarée au début
public void Enignme01_Completed(object sender, EventArgs e)
{
var reponseEnigme01 = Enigme01.Text;
int tentativeMax = 3;
string soluce1 = "chaussette";
if ((soluce1 != reponseEnigme01) & (tentative < tentativeMax))
{
DisplayAlert("Info:", "Mauvaise réponse", "ok");
tentative ++;
Reponse03.Text = "Essayez encore, il vous reste " + (tentativeMax - tentative) +" essais !";
}
else if (tentative == tentativeMax)
{
Reponse03.TextColor = Color.DarkRed;
Reponse03.Text = "A force de cogiter pour trouver la réponse, vous ne voyez pas les gardes arriver. Ils vous attrapent et finisser ainsi votre carrière d'aventurier dans une geôle.";
Enigme01.IsEnabled = false;
DisplayAlert("Echec", "Vous avez perdu", "Recommencer");
}
else
{
reponseEnigme01 = soluce1;
monPerso.GagnerExperience(5);
Reponse03.Text = "Bravo, vous avez trouvé la solution, ouvert la porte et gagné <<5 XP>> !" + monPerso.Caracteristiques();
Reponse03.IsVisible = true;
Enigme01.IsEnabled = false;
Text04.Text = "Après avoir triomphé de l'enigme, vous entrez dans une salle circulaire.";
Text04.IsVisible = true;
Text05A.Text = "Dans cette salle circulaire se trouve plusieurs étagères avec des fioles ainsi que des petits coffrets, une fouille serait peut-être interressante.\nA moins que vous ne souhaitiez rester prudent et avancer directement.";
Text05A.IsVisible = true;
ActionButton05A.IsVisible = true;
ActionButton05B.IsVisible = true;
}
}
//Méthode pour refuser l'enigme mais qui emmene à combattre un gobelin
public void ActionButton03BClicked(object sender, EventArgs e)
{
if (Reponse03.Text == "Bravo, vous avez trouvé la solution, ouvert la porte et gagné <<5 XP>> !")
{
ActionButton03A.IsEnabled = false;
}
else
{
Reponse03.Text = "L'enigme semble trop difficile pour vous, vous preferez faire demi tour et prendre l'embranchement de droite et sans crier garde...";
ActionButton03A.IsVisible = false;
ActionButton03B.IsVisible = false;
ActionButton04A.IsVisible = true;
ActionButton03A.IsEnabled = false;
ActionButton02B.IsEnabled = false;
}
}
//Methode qui permet le combat en cliquant sur le bouton avec gain d'expérience.
//Permet ensuite d'afficher la suite de l'aventure selon les choix précédents.
public void ActionButton04AClicked(object sender, EventArgs e)
{
if (Reponse04.Text == "Vous jugez préférable de fuir devant le gobelin pour éviter le combat, mais celui-ci étant plus rapide que vous, il vous rattrape et vous taille en pièce par derrière.\nAinsi s'achève votre carrière d'aventurier !")
{
ActionButton04B.IsEnabled = false;
}
else
{
Gobelin gobelin = new Gobelin("Gobelin");
bool victoire = true;
while (!gobelin.EstMort())
{
monPerso.Attaquer(gobelin);
if (monPerso.EstMort())
{
victoire = false;
break;
}
if (!gobelin.EstMort())
{
gobelin.Attaquer(monPerso);
}
}
if (victoire)
{
monPerso.GagnerExperience(5);
monPerso.GagnerPiecesOr();
Reponse04.Text = monPerso.Caracteristiques();
}
Caractéristiques.IsVisible = true;
Caractéristiques.Text = "Vous triomphez de votre premier combat et savourez un bref répit.\nVous gagnez <<5 XP>> et une <<poignée de pièces d'or>>.";
Caractéristiques.TextColor = Color.DarkGreen;
Reponse03.IsVisible = false;
Text04.Text = "Après avoir vaincu le gobelin, vous continuez votre chemin dans le couloir jusqu'à un croisement.";
Text04.IsVisible = true;
ActionButton04B.IsEnabled = false;
ActionButton02B.IsEnabled = false;
ActionButton04A.IsEnabled = false;
Text05B.Text = "Au croisement, vous avez le choix entre un couloir sombre face à vous pour lequel une torche serait appréciable ou tourner à droite pour avancer dans un couloir propre et bien éclairé.";
Text05B.IsVisible = true;
ActionButton05C.IsVisible = true;
ActionButton05D.IsVisible = true;
}
}
//Methode qui amene l'échec (la fuite c'est mal !)
public void ActionButton04BClicked(object sender, EventArgs e)
{
if (Reponse04.Text == "Vous triomphez de votre premier combat et savourez un bref répit.")
{
ActionButton04A.IsEnabled = false;
}
else
{
Reponse04.Text = "Vous jugez préférable de fuir devant le monstre pour éviter le combat, mais celui-ci étant plus rapide que vous, il vous rattrape et vous taille en pièce par derrière.\nAinsi s'achève votre carrière d'aventurier !";
Reponse04.TextColor = Color.DarkRed;
ActionButton04A.IsEnabled = false;
DisplayAlert("Echec", "Vous avez perdu", "Recommencer");
}
}
My Donjon.xaml
<Grid Margin="20,5,20,5"
RowSpacing="10"
ColumnSpacing="10">
<Grid.RowDefinitions>
<RowDefinition Height="250"/> <!--Row 00 -->
<RowDefinition Height="180"/> <!--Row 01 -->
<RowDefinition Height="80"/> <!--Row 02 -->
<RowDefinition Height="50"/> <!--Row 03 -->
<RowDefinition Height="50"/> <!--Row 04 -->
<RowDefinition Height="90"/> <!--Row 05 -->
<RowDefinition Height="100"/> <!--Row 06 -->
<RowDefinition Height="120"/> <!--Row 07 -->
<RowDefinition Height="130"/> <!--Row 08 -->
<RowDefinition Height="50"/> <!--Row 09 -->
<RowDefinition Height="50"/> <!--Row 10 -->
<RowDefinition Height="140"/> <!--Row 11 -->
<RowDefinition Height="50"/> <!--Row 12 -->
<RowDefinition Height="50"/> <!--Row 13 -->
<RowDefinition Height="130"/> <!--Row 14 -->
<RowDefinition Height="150"/> <!--Row 15 -->
<RowDefinition Height="150"/> <!--Row 16 -->
<RowDefinition Height="100"/> <!--Row 17 -->
<RowDefinition Height="160"/> <!--Row 18 -->
<RowDefinition Height="100"/> <!--Row 19 -->
<RowDefinition Height="100"/> <!--Row 20 -->
<RowDefinition Height="90"/> <!--Row 21 -->
<RowDefinition Height="230"/> <!--Row 22 -->
<RowDefinition Height="135"/> <!--Row 23 -->
<RowDefinition Height="80"/> <!--Row 24 -->
<RowDefinition Height="80"/> <!--Row 25 -->
<RowDefinition Height="130"/> <!--Row 26 -->
<RowDefinition Height="100"/> <!--Row 27 -->
<RowDefinition Height="100"/> <!--Row 28 -->
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="0.5*"/>
</Grid.ColumnDefinitions>
<StackLayout x:Name="ChoixPerso">
<Label Text="Choisissez votre avatar."
Margin="20"
HorizontalTextAlignment="Center"
HorizontalOptions="CenterAndExpand"
FontSize="Large"
Grid.ColumnSpan="2"/>
<RadioButton x:Name="ChoixPerso01"
Value="Guerrier"
Content="Guerrier"
CheckedChanged="ChoisirGuerrier"
Grid.ColumnSpan="2"/>
<RadioButton x:Name="ChoixPerso02"
Value="Archer"
Content="Archer"
CheckedChanged="ChoisirArcher"/>
<RadioButton x:Name="ChoixPerso03"
Value="Voleur"
Content="Voleur"
CheckedChanged="ChoisirVoleur"/>
<Label x:Name="personnageLabel"
Text="Vous avez choisi:"
Grid.ColumnSpan="2"/>
</StackLayout>
<!--Row 01-->
<Label HorizontalTextAlignment="Start"
Grid.Row="1"
Grid.ColumnSpan="2"
x:Name="Text01"
TextColor="Black"/>
<!--Row 02-->
<Button Text="Frapper à la porte"
x:Name="Action01A"
HorizontalOptions="FillAndExpand"
VerticalOptions="CenterAndExpand"
CornerRadius="60"
Clicked="ActionButton01AClicked"
BackgroundColor="DarkOrange"
TextColor="Black"
BorderWidth="10"
BorderColor="OrangeRed"
Grid.Row="2"
Grid.Column="0"/>
<Button Text="Faire le tour du Donjon"
x:Name="Action01B"
HorizontalOptions="FillAndExpand"
VerticalOptions="CenterAndExpand"
CornerRadius="60"
Clicked="ActionButton01BClicked"
BackgroundColor="DarkOrange"
TextColor="Black"
BorderWidth="10"
BorderColor="OrangeRed"
Grid.Row="2"
Grid.Column="1"/>
<!--Row 03-->
<Label x:Name="Reponse01"
Grid.ColumnSpan="2"
Grid.Row="3"/>
<!--Row 04-->
<Label Text="Une fois à l'interieur, vous commencez à avancer dans un couloir et au bout, deux choix s'offre à vous."
x:Name="Text02"
Grid.ColumnSpan="2"
Grid.Row="4"
TextColor="Black"
IsVisible="false"/>
<!--Row 05-->
<Button Text="Aller à droite"
x:Name="ActionButton02A"
HorizontalOptions="FillAndExpand"
VerticalOptions="CenterAndExpand"
CornerRadius="60"
Clicked="ActionButton02AClicked"
BackgroundColor="DarkOrange"
TextColor="Black"
BorderWidth="10"
BorderColor="OrangeRed"
Grid.Row="5"
Grid.Column="0"
IsVisible="false"/>
<Button Text="Monter l'escalier en face"
x:Name="ActionButton02B"
HorizontalOptions="FillAndExpand"
VerticalOptions="CenterAndExpand"
CornerRadius="60"
Clicked="ActionButton02BClicked"
BackgroundColor="DarkOrange"
TextColor="Black"
BorderWidth="10"
BorderColor="OrangeRed"
Grid.Row="5"
Grid.Column="1"
IsVisible="false"/>
<!--Row 06-->
<Label x:Name="Reponse02"
Grid.ColumnSpan="2"
Grid.Row="6"/>
<!--Row 07-->
<Label x:Name="Text03A"
Grid.ColumnSpan="2"
Grid.Row="7"
IsVisible="false"
Text="Une fois la dizaine de marche de l'escalier franchie, vous arrivez devant une porte fermé. Sur le coté, une plaque gravé attire votre attention. Vous lisez: Jamais je ne suis loin de mon autre jumelle, on m'associe souvent au parfum vomitif d'une partie du corps qui n'est pas vraiment belle, localisée fort loin de l'organe olfactif ! C'est une enigme, pas le choix, il faut la résoudre pour ouvrir la porte."/>
<Label x:Name="Text03B"
Grid.ColumnSpan="2"
Grid.Row="7"
IsVisible="false"
Text="Vous avancez quelques temps dans ce couloir sombre et soudain, vous entendez un couinement etouffé devant vous. Cela semble être un gobelin ! Qu'allez vous faire ?"/>
<!--Row 08-->
<Button Text="Repondre à l'enigme"
x:Name="ActionButton03A"
HorizontalOptions="FillAndExpand"
VerticalOptions="CenterAndExpand"
CornerRadius="60"
Clicked="ActionButton03AClicked"
BackgroundColor="DarkOrange"
TextColor="Black"
BorderWidth="10"
BorderColor="OrangeRed"
Grid.Row="8"
Grid.Column="0"
IsVisible="false"/>
<Button Text="Refuser l'enigme et faire demi-tour"
x:Name="ActionButton03B"
HorizontalOptions="FillAndExpand"
VerticalOptions="CenterAndExpand"
CornerRadius="60"
Clicked="ActionButton03BClicked"
BackgroundColor="DarkOrange"
TextColor="Black"
BorderWidth="10"
BorderColor="OrangeRed"
Grid.Row="8"
Grid.Column="1"
IsVisible="false"/>
<Button Text="Combattre le gobelin"
x:Name="ActionButton04A"
HorizontalOptions="FillAndExpand"
VerticalOptions="CenterAndExpand"
CornerRadius="60"
Clicked="ActionButton04AClicked"
BackgroundColor="DarkOrange"
TextColor="Black"
BorderWidth="10"
BorderColor="OrangeRed"
Grid.Row="8"
Grid.Column="0"
IsVisible="false"/>
<Button Text="Fuir le gobelin"
x:Name="ActionButton04B"
HorizontalOptions="FillAndExpand"
VerticalOptions="CenterAndExpand"
CornerRadius="60"
Clicked="ActionButton04BClicked"
BackgroundColor="DarkOrange"
TextColor="Black"
BorderWidth="10"
BorderColor="OrangeRed"
Grid.Row="8"
Grid.Column="1"
IsVisible="false"/>
<!--Row 09-->
<Entry x:Name="Enigme01"
IsVisible="false"
Placeholder="Ecrire la réponse."
ClearButtonVisibility="WhileEditing"
IsTextPredictionEnabled="False"
ReturnType="Send"
Completed="Enignme01_Completed"
Grid.ColumnSpan="2"
Grid.Row="9"/>
<!--Row 10-->
<Label x:Name="Caractéristiques"
Grid.ColumnSpan="2"
Grid.Row="10"
IsVisible="false"/>
<!--Row 11-->
<Label x:Name="Reponse04"
Grid.ColumnSpan="2"
Grid.Row="11"/>
<Label x:Name="Reponse03"
Grid.ColumnSpan="2"
Grid.Row="11"/>
<!--Row 12-->
<Label x:Name="Text04"
Grid.ColumnSpan="2"
IsVisible="false"
Grid.Row="12"/>
My Personnage.cs
public class Personnage : Entite
{
protected int niveau;
private int experience;
public Personnage(string nom) : base(nom)
{
this.nom = nom;
niveau = 1;
experience = 0;
potionsSoins = 0;
potionsSoinsMiraculeux = 0;
dePipe = 0;
pvMax = 0;
}
public void GagnerExperience(int experience) //Méthode qui permet de passer de niveau et gagner des caractéristiques.
{
this.experience += experience;
while (this.experience >= ExperienceRequise())
{
Console.WriteLine("Bravo : Vous avez atteint le niveau " + niveau + " !");
string messageGainNiveau = "Kawabounga, vous avez atteint le niveau " + niveau + " !";
messageGainNiveau.ToString();
niveau += 1;
pointsDeVie += 10;
degatsMin += 4;
degatsMax += 6;
}
}
public double ExperienceRequise() //Methode qui permet de définir la montée des niveaux (basé sur Pokemon)
{
return Math.Round(4 * (Math.Pow(niveau, 3) / 5));
}
public string Caracteristiques() //Méthode qui permet de décrire le statut du héros
{
return nom + "\n" + "Niveau: " + niveau + "\n" + "Pv: " + pointsDeVie + " / " + pvMax + " pv\n" + "Points d'expérience: (" + experience + "/" + ExperienceRequise() + ")\n" + "Dégats: [" + degatsMin + "-" + degatsMax + "]\n" + "Vous possedez " + potionsSoins + " potions de soins et " + potionsSoinsMiraculeux + " potions de soins miraculeux et " + piecesOr + " pièces d'or.";
}
public int Richesse() //Methode qui permet de décrire la richesse du héros
{
return piecesOr;
}
public string Inventaire() //Méthode qui permet de décrire le stock de potions
{
return "Vous avez maintenant " + potionsSoins + " potions de soins et " + potionsSoinsMiraculeux + " potions de soins miraculeuses.";
}
public int GagnerPotionsSoins() //Méthode qui permet de gagner des potions de soins
{
Random gainPopo = new Random();
return potionsSoins += gainPopo.Next(1,3);
}
public int GagnerPotionsSoinMiraculeux() //Methode qui permet de gagner 1 potion de soin miraculeux
{
return potionsSoinsMiraculeux++;
}
public int GagnerDePipe() //Methode qui permet de gagner 1 dés pipés
{
return dePipe++;
}
public int GagnerPiecesOr() //Méthode qui permet de gagner des pièces d'or
{
Random gainPiecesOr = new Random();
return piecesOr += gainPiecesOr.Next(30, 40);
}
public int GagnerBeaucoupOr() //Méthode qui permet de gagner beaucoup de pièces d'or
{
Random grosGainOr = new Random();
return piecesOr += grosGainOr.Next(80, 100);
}
public int Achat01() //Methode qui permet de payer l'achat de potion de soin miraculeux
{
return piecesOr -= 25;
}
public int Achat02() //Methode qui permet de payer l'achat du Casque de Puissance
{
return piecesOr -= 30;
}
public int Achat03() //Methode qui permet de payer l'achat des dés pipés
{
return piecesOr -= 15;
}
public void GanteletForce() //Methode qui permet de gagner de la puissance d'attaque via le Gantelet de force
{
degatsMin += 3;
degatsMax += 5;
}
public void CasquePuissance() //Methode qui permet de gagner de la puissance d'attaque via le Casque de Puissance
{
degatsMin += 2;
degatsMax += 3;
}
public void EpeeJustice() //Methode qui permet de gagner de la puissance d'attaque via l'Epée de Justice
{
degatsMin += 4;
degatsMax += 5;
}
public void BotteRapidité() //Methode qui permet de gagner de la puissance d'attaque via les Bottes de Rapidité
{
degatsMin += 2;
degatsMax += 2;
}
}