Example #1
0
 public Card(int _month, Jokbo _jokbo, bool _ssangpi, int number)
 {
     month   = _month;
     jokbo   = _jokbo;
     ssangpi = _ssangpi;
     card_No = number;
 }
Example #2
0
    //턴 종료한 유저기준으로 상대먹은 카드를 보고 상대박을 셋해준다.
    public List <Bak> AddTurnWaitPlayerBak(List <List <Card> > turnendPlayerCards, List <List <Card> > turnwaitPlayerCards)
    {
        List <Bak> bak_ptr = new List <Bak>();

        for (int numofjokbo = 0; numofjokbo < Jokbo.GetNames(typeof(Jokbo)).Length; numofjokbo++)
        {
            switch ((Jokbo)numofjokbo)
            {
            case Jokbo.GWONG:
                if (turnendPlayerCards[numofjokbo].Count >= 3)
                {
                    if (turnwaitPlayerCards[numofjokbo].Count == 0)
                    {
                        bak_ptr.Add(Bak.GWANG);
                    }
                }
                break;

            case Jokbo.YEOLGGUT:
                if (turnendPlayerCards[numofjokbo].Count + turnendPlayerCards[(int)Jokbo.GODORI].Count >= 7)
                {
                    if (turnwaitPlayerCards[numofjokbo].Count + turnwaitPlayerCards[(int)Jokbo.GODORI].Count == 0)
                    {
                        bak_ptr.Add(Bak.MUNG);
                    }
                }
                break;

            case Jokbo.CHODAN:
                if (turnendPlayerCards[numofjokbo].Count + turnendPlayerCards[(int)Jokbo.CHUNGDAN].Count + turnendPlayerCards[(int)Jokbo.HONGDAN].Count >= 5)
                {
                    if (turnwaitPlayerCards[numofjokbo].Count + turnwaitPlayerCards[(int)Jokbo.CHUNGDAN].Count + turnwaitPlayerCards[(int)Jokbo.HONGDAN].Count == 0)
                    {
                        bak_ptr.Add(Bak.TTI);
                    }
                }
                break;

            case Jokbo.PI:
                if (turnendPlayerCards[numofjokbo].Count >= 10)
                {
                    if (turnwaitPlayerCards[numofjokbo].Count > 0 && turnwaitPlayerCards[numofjokbo].Count < 6)
                    {
                        bak_ptr.Add(Bak.PI);
                    }
                }
                break;
            }
        }
        return(bak_ptr);
    }
Example #3
0
    }                                    //현재 플레이어 손패

    public Player(string _name)
    {
        name          = _name;
        Bakstates     = new List <Bak>();
        score         = 0;
        piscore       = 0; //피 갯수를 계산하고 출력하여하기 때문에 변수만듬
        goNum         = 0;
        shake         = new bool[2]; shake[0] = false; shake[1] = false;
        multipleScore = 1;
        handCards     = new List <Card>();
        acquiredCards = new List <List <Card> >();
        for (int i = 0; i < Jokbo.GetNames(typeof(Jokbo)).Length; i++) //족보별로 나두기위해 2차원배열을 사용
        {
            acquiredCards.Add(new List <Card>());
        }
    }
Example #4
0
    //점수 계산
    public List <SpecialCombo> CalcurateScore(List <List <Card> > playerAcquiredCards, out int playerScore, out int piScore)
    {
        int score   = 0;
        int piscore = 0;
        List <SpecialCombo> combos = new List <SpecialCombo>();

        for (int numofjokbo = 0; numofjokbo < Jokbo.GetNames(typeof(Jokbo)).Length; numofjokbo++)
        {
            switch ((Jokbo)numofjokbo) //족보 먹은패 체크
            {
            case Jokbo.GWONG:
                if (playerAcquiredCards[numofjokbo].Count == 3)     //삼광
                {
                    for (int B_search = 0; B_search < playerAcquiredCards[numofjokbo].Count; B_search++)
                    {
                        if (playerAcquiredCards[numofjokbo][B_search].Get_month() == 12)
                        {
                            combos.Add(SpecialCombo.GWONG3B);
                            score += 2;
                        }
                        else
                        {
                            combos.Add(SpecialCombo.GWONG3);
                            score += 3;
                        }
                    }
                }
                else if (playerAcquiredCards[numofjokbo].Count == 4)     //사광
                {
                    combos.Add(SpecialCombo.GWONG4);
                    score += 4;
                }
                else if (playerAcquiredCards[numofjokbo].Count == 5)     //오광
                {
                    combos.Add(SpecialCombo.GWONG5);
                    score += 15;
                }
                break;

            case Jokbo.GODORI:
                if (playerAcquiredCards[numofjokbo].Count == 3)
                {
                    combos.Add(SpecialCombo.GODORI);
                    score += 5;
                }
                break;

            case Jokbo.HONGDAN:
                if (playerAcquiredCards[numofjokbo].Count == 3)
                {
                    combos.Add(SpecialCombo.HONGDAN);
                    score += 3;
                }
                break;

            case Jokbo.CHODAN:
                if (playerAcquiredCards[numofjokbo].Count == 4)
                {
                    combos.Add(SpecialCombo.CHODAN);
                    score += 3;
                }
                break;

            case Jokbo.CHUNGDAN:
                if (playerAcquiredCards[numofjokbo].Count == 3)
                {
                    combos.Add(SpecialCombo.CHUNGDAN);
                    score += 3;
                }
                break;

            case Jokbo.PI:
                for (int piofnum = 0; piofnum < playerAcquiredCards[numofjokbo].Count; piofnum++)
                {
                    if (playerAcquiredCards[numofjokbo][piofnum].Get_ssangpi())
                    {
                        piscore += 2;
                    }
                    else
                    {
                        piscore += 1;
                    }
                }
                if (piscore >= 10)
                {
                    score = piscore - 9;
                }
                break;

            case Jokbo.YEOLGGUT:
                int GGUTscore = playerAcquiredCards[(int)Jokbo.YEOLGGUT].Count + playerAcquiredCards[(int)Jokbo.GODORI].Count;
                if (GGUTscore >= 5)
                {
                    score = GGUTscore - 4;
                }
                break;
            } //족보 먹은패 체크
        }
        int TTIscore = playerAcquiredCards[(int)Jokbo.CHODAN].Count + playerAcquiredCards[(int)Jokbo.CHUNGDAN].Count + playerAcquiredCards[(int)Jokbo.HONGDAN].Count; //청단 홍단 초단 띠의 수를 더함

        if (TTIscore >= 5)
        {
            score = TTIscore - 4;
        }
        playerScore = score;
        piScore     = piscore;
        return(combos);
    }