Beispiel #1
0
    public void GameLoop()
    {
        BasePlayer computerPlayer = RPSModel.Instance.GetPlayerByName(RPSModel.Instance.COMPUTER_PLAYER);
        BasePlayer livePlayer     = RPSModel.Instance.GetPlayerByName(RPSModel.Instance.LIVEPLAYER);



        string answer = "";

        do
        {
            RPSModel.Instance.ChangeState(RPSModel.GameState.StartGame);


            computerPlayer.ChooseWeapon();
            do
            {
                RPSModel.Instance.ChangeState(RPSModel.GameState.PlayerCanChoose);


                livePlayer.ChooseWeapon();

                bool testResponse = livePlayer.IsAValidWeapon();
                if (testResponse == false)
                {
                    RPSModel.Instance.ChangeState(RPSModel.GameState.PlayerChooseError);
                }
            } while (livePlayer.IsAValidWeapon() == false);


            if (livePlayer == computerPlayer)
            {
                RPSModel.Instance.ChangeState(RPSModel.GameState.Draw);
                RPSModel.Instance.AddDrawScore();
            }
            else
            {
                BasePlayer winner = livePlayer * computerPlayer;
                winner.AddScore();
                if (winner.name.Equals((RPSModel.Instance.LIVEPLAYER)))
                {
                    RPSModel.Instance.ChangeState(RPSModel.GameState.PlayerWon);
                }
                else
                {
                    RPSModel.Instance.ChangeState(RPSModel.GameState.PlayerLose);
                }
            }

            RPSModel.Instance.ChangeState(RPSModel.GameState.PlayAgain);
            answer = Console.ReadLine();
        } while (answer.ToLower() == "y" || answer.ToLower() == "yes");
    }