static void Main(string[] args) { int sleepRatio = 1; Random rnd = new Random(); Player pTest = new Player(); int newCurHp = 0; int regenedHp = 0; int curExp = 0; /*debut test*/ int loseHp = 0; /*fin test*/ int curDmg = 0; bool hasWeapon = false; Weapon curWeapon = new Weapon(pTest.GetLvl()); int curAmmo = 0; int curEnnemyHp = 0; int eAmount = 0; Ennemy newEnnemy = new Ennemy(); Queue<Ennemy> eList = new Queue<Ennemy>(); Ennemy curEnnemy = new Ennemy(); Ennemy[] attackers = new Ennemy[99]; int attackersCount = 0; int attackersTotal = 0; int attackerTotalDmg = 0; int nQueue = 0; int maxRand = 0; bool dead = false; for (int round = 1; round <= 200; round++) { Console.WriteLine("Round " + (round.ToString())); System.Threading.Thread.Sleep(8*sleepRatio); if ((rnd.Next(1, 5) == 1)) { Console.WriteLine("Bravo ! Vous avez trouve une arme."); if (pTest.CountWeapons() < 4) { pTest.AddWeapon(new Weapon(pTest.GetLvl())); } else { Console.WriteLine("Dommage, votre inventaire est plein."); } } if (pTest.GetCurHp() < pTest.GetHp()) { regenedHp = Convert.ToInt32((pTest.GetHp()) / (rnd.Next(9, 12))); newCurHp = pTest.GetCurHp() + regenedHp; if (newCurHp > pTest.GetHp()) { regenedHp = pTest.GetHp() - pTest.GetCurHp(); newCurHp = pTest.GetHp(); } pTest.SetCurHp(newCurHp); } else { regenedHp = 0; } Console.WriteLine("HP récupérés ce round : " + regenedHp.ToString()); Console.WriteLine("LVL : " + (pTest.GetLvl()).ToString() + " - EXP : " + curExp.ToString() + "/" + (pTest.GetLvl()).ToString() + " - HP : " + (pTest.GetCurHp()).ToString() + "/" + (pTest.GetHp()).ToString()); eAmount = (rnd.Next(0, ((pTest.GetLvl()) + 1))); Console.WriteLine("Ennemis apparus : " + eAmount.ToString()); for (int ennemies = eAmount; ennemies > 0; ennemies--) { eList.Enqueue(new Ennemy()); } Console.WriteLine("Nombre d'ennemis : " + (eList.Count).ToString()); if (eList.Count > 0) { Console.WriteLine("---- Debut du combat -----"); for (int tour = 1; tour <= 5; tour++) { if (dead == true) { break; } System.Threading.Thread.Sleep(80 * sleepRatio); Console.WriteLine("--------- Tour " + tour.ToString() + " ---------"); Console.WriteLine("-- Vous attaquez le premier ennemi"); System.Threading.Thread.Sleep(8 * sleepRatio); if (pTest.CountWeapons() == 0) { curDmg = 5 + ((pTest.GetLvl()) * 2); hasWeapon = false; Console.WriteLine("Vous n'avez pas d'arme, vous attaquez a la main. Votre degat est de " + curDmg.ToString()); } else { curWeapon = pTest.RemoveLastWeapon(); curDmg = curWeapon.GetLvl(); curAmmo = curWeapon.GetAmmo(); hasWeapon = true; Console.WriteLine("Vous avez une arme qui inflige " + curDmg.ToString() + "degats et il reste " + curAmmo.ToString() + " munitions."); } System.Threading.Thread.Sleep(8 * sleepRatio); /*si les hp de l'ennemi est égal ou inférieur à zero, il est mort donc il faut un nouvel ennemi*/ if ((curEnnemyHp <= 0) && (eList.Count != 0)) { Console.WriteLine("Vous attaquez un nouvel ennemi."); /* on copie les ennemis dans un array qu'on aura besoin pour les faire attaquer*/ eList.CopyTo(attackers, 0); attackersTotal = eList.Count; curEnnemy = eList.Dequeue(); curEnnemyHp = curEnnemy.GetCurHp(); } /* hp de l'ennemi recalculé : hp de l'objet - dmg */ curEnnemyHp -= curDmg; if (curEnnemyHp < 0) { curEnnemyHp = 0; } /* si l'objet n'a plus de vie, on a tué l'ennemi*/ if (curEnnemyHp <= 0) { System.Threading.Thread.Sleep(8 * sleepRatio); Console.WriteLine("Vous avez tue l'ennemi ! Vous avez gagné 1 exp"); curExp++; /*si l'exp est égal au lvl, donc barre remplie, on lvl up le perso*/ if (curExp == pTest.GetLvl()) { System.Threading.Thread.Sleep(8 * sleepRatio); pTest.SetLvl((pTest.GetLvl()) + 1); curExp = 0; Console.WriteLine("Bravo! Vous etes maintenant au niveau " + (pTest.GetLvl()).ToString()); } Console.WriteLine("Il reste " + (eList.Count).ToString() + " ennemis pour ce round."); } /*ou sinon on print les hp qu'il lui reste*/ else { System.Threading.Thread.Sleep(8 * sleepRatio); Console.WriteLine("L'ennemi a pris " + curDmg.ToString() + "degats et il lui reste " + curEnnemyHp + "HP"); } if (hasWeapon && (curAmmo > 1)) { curAmmo--; curWeapon.SetAmmo(curAmmo); pTest.AddWeapon(curWeapon); } if ((curEnnemyHp <= 0) && (eList.Count == 0)) { break; } /* ennemis attaquent */ for (int i = 0; i < attackersTotal; i++) { if (pTest.GetCurHp() <= 0) { dead = true; break; } /* probabiliter de toucher (de reduire les hp du perso)*/ nQueue = i; if (nQueue > 10) { nQueue = 10; } maxRand = rnd.Next(1, ((10 - nQueue) + 1)); Console.WriteLine("Random : " + maxRand.ToString()); if (maxRand != 1) { attackerTotalDmg = attackers[i].GetPower(); if (attackersTotal > 1) { if (attackers[i + 2] != null) { attackerTotalDmg += Convert.ToInt32((attackers[i + 1].GetPower()) / 9 + (attackers[i + 2].GetPower()) / 10); } else if (attackers[i + 1] != null) { attackerTotalDmg += Convert.ToInt32((attackers[i + 1].GetPower()) / 9); } } pTest.SetCurHp((pTest.GetCurHp()) - attackerTotalDmg); Console.WriteLine("Ennemi " + i + " vous a inflige " + attackers[i].GetPower() + " dégats."); Console.WriteLine("Il vous reste " + pTest.GetCurHp() + "HP"); } else { Console.WriteLine("Ennemi " + i + " a rate son tire."); } } } Console.WriteLine("----- Fin du combat ------"); } else { Console.WriteLine("- Il n'y a pas d'ennemi --"); Console.WriteLine("------ Round passe -------"); } System.Threading.Thread.Sleep(50 * sleepRatio); /* debut test*//* loseHp = Convert.ToInt32((pTest.GetHp()) / (rnd.Next(6, 15)) ); pTest.SetCurHp(pTest.GetCurHp() - loseHp); Console.WriteLine("HP perdus ce round : " + loseHp.ToString());*/ /* fin test*/ System.Threading.Thread.Sleep(400*sleepRatio); Console.WriteLine("-------- -------- --------"); Console.WriteLine("-------- -------- --------"); if (round == 200) { Console.WriteLine("Simulation terminé."); } if (dead == true) { Console.WriteLine("Vous etes mort."); break; } } Console.ReadKey(); }