예제 #1
0
        internal static void GoPlay(GameState state)
        {
            Player attackingPlayer = null;
            Player defendingPlayer = null;

            Player activePlayer = null;

            bool isVictory = false;

            while (!isVictory)
            {
                if (state.IsPlayerAsTurn)
                {
                    attackingPlayer = state.Player1;
                    defendingPlayer = state.Player2;
                }
                else
                {
                    attackingPlayer = state.Player2;
                    defendingPlayer = state.Player1;
                }

                if (state.IsPlayerAsTurn)
                {
                    activePlayer = state.Player1;
                }
                else
                {
                    activePlayer = state.Player2;
                }

                var ShotCoord = ConsoleInput.FireCoord(state);
                ConsoleOutput.DrawBoard(defendingPlayer.PlayerBoard);


                FireShotResponse response = defendingPlayer.PlayerBoard.FireShot(ShotCoord);

                switch (response.ShotStatus)
                {
                case ShotStatus.Hit:
                    ConsoleOutput.ShipHit(state);
                    state.IsPlayerAsTurn = !state.IsPlayerAsTurn;
                    break;

                case ShotStatus.Miss:
                    ConsoleOutput.ShotMiss(state);
                    state.IsPlayerAsTurn = !state.IsPlayerAsTurn;
                    break;

                case ShotStatus.Duplicate:
                    ConsoleOutput.ShotDuplicate(state);
                    state.IsPlayerAsTurn = true;
                    break;

                case ShotStatus.Invalid:
                    ConsoleOutput.InvalidShot(state);
                    state.IsPlayerAsTurn = true;
                    break;

                case ShotStatus.HitAndSunk:
                    ConsoleOutput.HitandSunk(state);
                    state.IsPlayerAsTurn = !state.IsPlayerAsTurn;
                    break;

                case ShotStatus.Victory:
                    ConsoleOutput.Victory(state);
                    isVictory = true;
                    break;
                }
            }
        }