Exemplo n.º 1
0
        public void CanAddPointsToScore()
        {
            var scoreBoard = new ScoreBoard();

            scoreBoard.AddPoint();
            scoreBoard.AddPoint();

            scoreBoard.Score.Should().Be(2);
        }
Exemplo n.º 2
0
        public void CanResetPointsToZero()
        {
            var scoreBoard = new ScoreBoard();

            scoreBoard.AddPoint();
            scoreBoard.AddPoint();
            scoreBoard.Reset();

            scoreBoard.Score.Should().Be(0);
        }
Exemplo n.º 3
0
    public bool EndProcess()
    {
        bool result = false;

        //여기까진 턴플레이어가 안 바뀜
        //즉 턴플레이어가 종료된 플레이어

        //일단 종료된 값을 올린다.
        ++m_teamFlag[m_turnPlayer.TeamID];

        //팀플래그가 2가 되면 같은 팀이 먼저 났는지 확인을 해봐야 된다.
        if (m_teamFlag[0] - m_teamFlag[1] == 2)
        {
            //스코어 보드에 점수를 더해준다.
            int teamAAddPoint = 200 + m_players[0].GetBonusPoint() + m_players[2].GetBonusPoint();

            m_players[1].SuccesFirst(false);
            m_players[3].SuccesFirst(false);

            //A팀이 먼저 2명이 났음
            m_nTeamAPoint = m_nTeamAPoint + 200 + m_players[0].GetBonusPoint() + m_players[2].GetBonusPoint();
            m_nTeamBPoint = m_nTeamBPoint + m_players[1].GetBonusPoint() + m_players[3].GetBonusPoint();

            m_scoreBoardPopup.AddPoint(teamAAddPoint, m_nTeamAPoint, 0, m_nTeamBPoint);

            m_endRound = true;
            result     = true;
        }
        else if (m_teamFlag[1] - m_teamFlag[0] == 2)
        {
            //스코어 보드에 점수를 더해준다.
            int teamBAddPoint = 200 + m_players[0].GetBonusPoint() + m_players[2].GetBonusPoint();

            m_players[0].SuccesFirst(false);
            m_players[2].SuccesFirst(false);

            //B팀이 먼저 2명이 났음
            m_nTeamBPoint = m_nTeamBPoint + 200 + m_players[1].GetBonusPoint() + m_players[3].GetBonusPoint();
            m_nTeamAPoint = m_nTeamAPoint + m_players[0].GetBonusPoint() + m_players[2].GetBonusPoint();

            m_scoreBoardPopup.AddPoint(0, m_nTeamAPoint, teamBAddPoint, m_nTeamBPoint);

            m_endRound = true;
            result     = true;
        }
        else if (m_teamFlag[0] + m_teamFlag[1] == 3)
        {
            //일단 한팀이 2명이 난게 아니다.
            //그럼 한명만 남은 상황인지 확인을 해보자.

            //이렇게 되면 남은 플레이어는 1등에게 자기가 먹은 점수를
            //자기 손패는 다른 팀에게 점수를 줘야 된다.
            //일단 이번턴 카드는 현재 플레이어에게 먹어줘야 된다.
            int teamAAddPoint = 0;
            int teamBAddPoint = 0;

            for (int i = 0; i < playerSize; ++i)
            {
                if (m_players[i].GetCardCount() > 0)
                {
                    //이놈이 꼴지다.
                    //1등에서 점수를 주고
                    //티츄 성공 여부를 확인해주자,.
                    m_players[i].SuccesFirst(false);
                    m_firstPlayer.GivePoint(m_players[i].GetPoint());
                    m_players[i].SetPoint(0);

                    switch (m_players[i].TeamID)
                    {
                    case 0:
                    {
                        teamBAddPoint = m_players[i].CalcHandCardPoint();
                    }
                    break;

                    case 1:
                    {
                        teamAAddPoint = m_players[i].CalcHandCardPoint();
                    }
                    break;
                    }

                    break;
                }
            }

            teamAAddPoint += m_players[0].GetPoint() + m_players[0].GetBonusPoint()
                             + m_players[2].GetPoint() + m_players[2].GetBonusPoint();

            teamBAddPoint += m_players[1].GetPoint() + m_players[1].GetBonusPoint()
                             + m_players[3].GetPoint() + m_players[3].GetBonusPoint();

            //점수 계산을 하자.
            m_nTeamAPoint += teamAAddPoint;
            m_nTeamBPoint += teamBAddPoint;

            m_scoreBoardPopup.AddPoint(teamAAddPoint, m_nTeamAPoint, teamBAddPoint, m_nTeamBPoint);

            //라운드 종료 처리
            m_endRound = true;

            result = true;
        }
        else
        {
            result = false;
        }

        if (result)
        {
            //ScoreBoard에 티츄 성공여부 정보를 보내자.
            for (int i = 0; i < playerSize; ++i)
            {
                m_scoreBoardPopup.LastScoreItem().SetTichuInfo(m_players[i].IsCallTichu(), m_players[i].IsCallLargeTichu(),
                                                               m_players[i] == m_firstPlayer, i);
            }
        }

        //그 이외에 종료조건이 아니다. 그냥 나가자?
        return(result);
    }