Esempio n. 1
0
        public void Test_RunWithSimpleCharacters()
        {
            List <Character> characters = new List <Character>();

            characters.Add(
                builder.WithBasicStats("helga", 100, 7).Build()
                );

            List <Character> enemies = new List <Character>();

            enemies.Add(
                builder.WithBasicStats("hugo", 50, 20).Build()
                );

            SimulationResult result = Engine.Simulate(
                characters,
                enemies,
                true,
                CombatBehavior.Default(),
                CombatBehavior.Random()
                );

            Assert.False(result.PartyVictorious);


            Assert.True(someoneIsAlive(result.Enemies));
            Assert.False(someoneIsAlive(result.Party));
        }
Esempio n. 2
0
        public void Test_VeryLongRun()
        {
            List <Character> characters = new List <Character>();

            characters.Add(
                builder.WithBasicStats("helga", (long)1.0E6, 1).Build()
                );

            List <Character> enemies = new List <Character>();

            enemies.Add(
                builder.WithBasicStats("hugo", (long)5.0E5, 4).Build()
                );

            SimulationResult result = Engine.Simulate(
                characters,
                enemies,
                true,
                CombatBehavior.Default(),
                CombatBehavior.Random()
                );

            Assert.False(result.PartyVictorious);


            Assert.True(someoneIsAlive(result.Enemies));
            Assert.False(someoneIsAlive(result.Party));
        }
Esempio n. 3
0
        public void Test_RunEmpty()
        {
            // Here, a rather worrying misfeature of C# is obvious.
            // In order to access the classes in a test project, they need to be public. So you'd need to nest
            // solutions and/or projects in order to a) stick to information hiding principle and b) have
            // testable classes. 😠
            List <Character> characters = new List <Character>();
            List <Character> enemies    = new List <Character>();
            SimulationResult result     = Engine.Simulate(
                characters,
                enemies,
                true,
                CombatBehavior.Default(),
                CombatBehavior.Random()
                );

            Assert.Equal(0, result.Rounds);
            Assert.Empty(result.EventLog);
        }
Esempio n. 4
0
        static void Main(string[] args)
        {
            Console.WriteLine("Hi there! Welcome to the dungeon explorer.");
            Console.WriteLine("Let's get to know our party!");
            List <Character> characters = QueryPartyMembers();

            Console.WriteLine("Now let's talk about the enemies our party faces.");
            List <Character> enemies = QueryEnemies();

            Console.WriteLine("====== OVERVIEW ======");
            Console.WriteLine("====== THE PARTY ======");
            foreach (Character character in characters)
            {
                Console.WriteLine(character.ToString());
            }
            Console.WriteLine("-----------------------");
            Console.WriteLine("====== THE ENEMIES ======");
            foreach (Character enemy in enemies)
            {
                Console.WriteLine(enemy.ToString());
            }
            Console.WriteLine("-----------------------");

            Console.WriteLine("Processing...");
            SimulationResult result = Engine.Simulate(
                characters,
                enemies,
                true,
                CombatBehavior.Default(),
                CombatBehavior.Random()
                );

            Console.WriteLine("");
            Console.WriteLine("Simulation Complete!");
            Console.WriteLine("====== RESULTS =======");
            Console.WriteLine(result.ToString());
            Console.WriteLine("kthxbye ^u^");
        }