Ejemplo n.º 1
0
        private void EnemyMove()
        {
            IPokemon enemyPokemon         = EnemyTrainer.GetCurrentPokemon();
            int      randomEnemyMoveIndex = new Random().Next(0, enemyPokemon.Moves.Count);

            PokemonAttack(enemyPokemon, Player.GetCurrentPokemon(), randomEnemyMoveIndex);
        }
Ejemplo n.º 2
0
        private void BothTrainersSendPokemon()
        {
            Player.SetPokemonAsCurrent(Player.GetNextAvailablePokemon());
            EnemyTrainer.SetPokemonAsCurrent(EnemyTrainer.GetNextAvailablePokemon());

            EnemyAction.EnemyTrainerSendsPokemon(EnemyTrainer);
            PlayerAction.PlayerSendsPokemon(Player.GetCurrentPokemon());
        }
Ejemplo n.º 3
0
        private bool PromptTrainerForPokemonMove()
        {
            bool keepBattleGoing = true;
            int  chosenMove      = BattleAux.KeepPlayerChoosingMove(LIMIT_OF_MOVES_PER_POKEMON);

            PokemonAttack(Player.GetCurrentPokemon(), EnemyTrainer.GetCurrentPokemon(), chosenMove);

            return(keepBattleGoing);
        }
Ejemplo n.º 4
0
        private bool KeepBattleGoingWhileBothPlayersHavePokemonLeft()
        {
            bool playerWon = false, keepBattleGoing, isChangingToNextAvailablePokemon;

            while (Player.HasAvailablePokemon() && EnemyTrainer.HasAvailablePokemon())
            {
                keepBattleGoing = false;
                isChangingToNextAvailablePokemon = false;

                if (Player.GetCurrentPokemon().HasFainted() && EnemyTrainer.HasAvailablePokemon())
                {
                    PromptPlayerToSelectPokemonAfterOwnPokemonFainted();
                    PlayerAction.PlayerSendsPokemon(Player.GetCurrentPokemon());
                    isChangingToNextAvailablePokemon = true;
                }
                else
                {
                    ConsoleBattleInfoPokemon.ShowBothPokemonStats(Player.GetCurrentPokemon(), EnemyTrainer.GetCurrentPokemon());
                    keepBattleGoing = PlayerMove();
                }

                if (keepBattleGoing && !isChangingToNextAvailablePokemon)
                {
                    if (EnemyTrainer.GetCurrentPokemon().HasFainted() && Player.HasAvailablePokemon())
                    {
                        if (BattleAux.CannotSendNextAvailablePokemon(isEnemyTrainer: true))
                        {
                            break;
                        }
                        else
                        {
                            PromptPlayerToSelectPokemonAfterEnemyPokemonFainted();
                            BattleAux.ShowTrainerSentPokemonMessage(isEnemyTrainer: true);
                            PlayerAction.PlayerSendsPokemon(Player.GetCurrentPokemon());
                        }
                    }
                    else
                    {
                        EnemyMove();
                    }
                }
            }

            if (Player.HasAvailablePokemon())
            {
                playerWon = true;
            }

            return(playerWon);
        }
Ejemplo n.º 5
0
        private void PromptPlayerToSelectPokemonAfterEnemyPokemonFainted()
        {
            int chosenPokemonIndex = 0;

            if (Player.PokemonTeam.Where(w => !w.Pokemon.HasFainted()).Count() > 1)
            {
                ConsoleUtils.ShowMessageAndWaitTwoSeconds($"{EnemyTrainer.GetType().Name} is about to send out {EnemyTrainer.GetCurrentPokemon().GetType().Name}");
                ConsoleUtils.ShowMessageBetweenEmptyLines("Which pokemon will you choose?");
                chosenPokemonIndex = BattleAux.KeepPlayerChoosingPokemon();
                SwitchCurrentPokemon(chosenPokemonIndex, isChangingAfterOwnPokemonFainted: true);
            }
            else
            {
                chosenPokemonIndex = Player.PokemonTeam.IndexOf(Player.PokemonTeam.Where(w => !w.Fainted).FirstOrDefault());
                SwitchCurrentPokemon(chosenPokemonIndex, isChangingAfterOwnPokemonFainted: true);
            }
        }