Esempio n. 1
0
        static void Main(string[] args)
        {
            var battlefield = new Battlefield();

            List <MonsterController> allMonsterControllers = new List <MonsterController>();
            bool runAway = false;


            Console.WriteLine("========= Thorn and Bramble Battlefield View - ver 0.0.1a =========\n\n");

            Console.WriteLine("What is your player's name?");
            string playerName = Console.ReadLine();

            var player = new PlayerController(playerName);

            battlefield.SpawnPlayer(ref player);

            Console.WriteLine("Welcome " + playerName + " to Thorn And Bramble Battle: 0.0.1a. How many monsters do you want to fight against? (1-5)");
            int numberOfMonsters = int.Parse(Console.ReadLine());

            Console.Write("Spawning Monsters ...");


            for (int i = 0; i < numberOfMonsters; i++)
            {
                Console.Write(".");
                string monsterName = "Monster " + (i + 1);
                var    monster     = new MonsterController();
                monster.Name = monsterName;
                allMonsterControllers.Add(monster);
                battlefield.SpawnMonster(ref monster);
            }

            Console.WriteLine(numberOfMonsters + " spawned!  Battle Begins in 3 ... 2 ... 1... Battle Start!");
            battlefield.NewRound();

            while (battlefield.MonsterCount > 0 && battlefield.PlayerCount > 0 || !runAway)
            {
                var    actor      = battlefield.NextToAct();
                string actingName = actor.Name;
                Console.WriteLine("\r\nCurrent Initiative Is: " + battlefield.CurrentInitiative + " and " + actingName + " is up!");
                if (battlefield.NextToAct().GetType() == typeof(MonsterController))
                {
                    double chanceToHit = battlefield.CalculateAttackChance(actor.Name, "Strike", player.Name) * 100;
                    double damage      = battlefield.CalculateTotalDamage(actor.Name, "Strike");
                    Console.WriteLine("\r\n" + actingName + " attacks with Strike! There is a " + chanceToHit + "% chance it will hit and do " + damage + " points of damage!");


                    if (battlefield.Attack(actor.Name, "Strike", player.Name))
                    {
                        Console.WriteLine("\r\nThe attack succeded! You now have " + player.Stat("HealthCurrent") + " health left");
                    }
                    else
                    {
                        Console.WriteLine("\r\nThe Monster Missed! whew!");
                    }

                    battlefield.AdvanceTurn();
                }
                else
                {
                    Console.WriteLine("\r\nIt's your turn! What would you like to do?\r\n1. Attack \r\n2. Run away! ");
                    int choice = int.Parse(Console.ReadLine());

                    if (choice == 1)
                    {
                        Console.WriteLine("\r\nWhich Monster?");
                        int i = 1;
                        foreach (var monster in allMonsterControllers)
                        {
                            Console.WriteLine(i + ". " + monster.Name);
                            i++;
                        }
                        int monsterChoice = int.Parse(Console.ReadLine());

                        var attackedMonster = allMonsterControllers[monsterChoice - 1];

                        double chanceToHit = battlefield.CalculateAttackChance(actor.Name, "Strike", attackedMonster.Name) * 100;
                        double damage      = battlefield.CalculateTotalDamage(actor.Name, "Strike");
                        Console.WriteLine("\r\n" + actingName + " attacks with Strike! There is a " + chanceToHit + "% chance it will hit and do " + damage + " points of damage!");


                        if (battlefield.Attack(actor.Name, "Strike", attackedMonster.Name))
                        {
                            Console.WriteLine("\r\nThe attack succeded! " + attackedMonster.Name + " has " + attackedMonster.Stat("HealthCurrent") + " health left!");
                            if (attackedMonster.Stat("HealthCurrent") == 0)
                            {
                                Console.WriteLine("\r\nYou killed " + attackedMonster.Name + "!");
                                allMonsterControllers.Remove(attackedMonster);
                            }
                        }
                        else
                        {
                            Console.WriteLine("\r\nAww! You missed!");
                        }
                    }
                    else
                    {
                        Console.WriteLine("\r\nRun away!");
                        runAway = true;
                        break;
                    }


                    battlefield.AdvanceTurn();
                }
            }


            if (battlefield.PlayerCount == 0)
            {
                Console.WriteLine("\r\nSo ends the journey of " + playerName);
            }
            else if (battlefield.MonsterCount == 0)
            {
                Console.WriteLine("\r\nHurray! You have defeated all the monsters! Well fought!");
            }
            else
            {
                Console.WriteLine("You got away safely... the shivers are in your blood now...");
            }
        }