Ejemplo n.º 1
0
        static void RunSampleGame_Scrypt()
        {
            Console.WriteLine("input a seed (2112): ");
            var strSeed = Console.ReadLine();

            if (!int.TryParse(strSeed, out int seed))
            {
                seed = 2112;
            }

            var rng    = new RNG(seed);
            var mobGen = new GameMobGenerator(
                rng,
                () => new GameActor(GameActor.Alignment.Mob, "rat", 10, new GameWeapon("teeth", 4)),
                () => new GameActor(GameActor.Alignment.Mob, "mole", 8, new GameWeapon("claw", 6)),
                () => new GameActor(GameActor.Alignment.Mob, "lynx", 15, new GameWeapon("pounce", 10))
                );

            RunGame(CreateSampleGame2(rng), mobGen, GameMobGenerator.ActionType.Scrypt);
        }
Ejemplo n.º 2
0
        static void RunGame(Game game, GameMobGenerator mobGen, GameMobGenerator.ActionType actionType)
        {
            GameEvents.Instance.ActorAdded += (g, a) =>
            {
                Console.WriteLine($"ActorAdded: {a}");
            };
            GameEvents.Instance.RoundStart += g =>
            {
                Console.WriteLine("RoundStart");
                Console.ReadKey();
            };
            GameEvents.Instance.RoundEnd += g =>
            {
                Console.WriteLine("RoundEnd");
                Console.ReadKey();
            };
            GameEvents.Instance.AttackStart += (a, b) =>
            {
                Console.WriteLine($"{a.uniqueName} attacking {b.uniqueName} with {a.Weapon}");
                Console.ReadKey();
            };
            GameEvents.Instance.ActorHealthChange += (a, o, n) =>
            {
                Console.WriteLine($"{a.uniqueName} health {o} => {n}");
                Console.ReadKey();
            };
            GameEvents.Instance.Death += a =>
            {
                Console.WriteLine($"=-=-=RIP=-=-= {a.uniqueName}");
                Console.ReadKey();
            };
            if (verbose)
            {
                GameEvents.Instance.ActorActionsStart += (g, a) =>
                {
                    Console.WriteLine($"{a.uniqueName} starting turn");
                    Console.ReadKey();
                };
                GameEvents.Instance.ActorActionsEnd += (g, a) =>
                {
                    Console.WriteLine($"{a.uniqueName} ending turn");
                    Console.ReadKey();
                };
                GameEvents.Instance.AttackEnd += (a, b) =>
                {
                    Console.WriteLine($"attack finished, target {b.uniqueName} health {b.Health}/{b.baseHealth}");
                    Console.ReadKey();
                };
            }

            while (game.GameProgress != Game.Progress.MobsWin)
            {
                if (mobGen != null)
                {
                    Console.WriteLine("Generating mobs");
                    game.ClearActors(GameActor.Alignment.Mob);
                    for (int i = 0; i < 4; ++i)
                    {
                        game.AddActor(mobGen.Gen(actionType));
                    }
                }
                while (game.GameProgress == Game.Progress.InProgress)
                {
                    Console.WriteLine(game.ToString());
                    Console.WriteLine("Any key to continue...");
                    Console.ReadKey();

                    switch (actionType)
                    {
                    case GameMobGenerator.ActionType.IAction:
                        game.PlayRound();
                        break;

                    case GameMobGenerator.ActionType.Scrypt:
                        game.PlayRound_Scrypt();
                        break;
                    }

                    Console.WriteLine($"Round ended with result {game.GameProgress}");
                    Console.ReadKey();
                }
            }
            Console.WriteLine($"Game ended with result {game.GameProgress}");
            GameEvents.ReleaseAllListeners();
        }