Ejemplo n.º 1
0
        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();
        }