public Card(int _month, Jokbo _jokbo, bool _ssangpi, int number) { month = _month; jokbo = _jokbo; ssangpi = _ssangpi; card_No = number; }
//턴 종료한 유저기준으로 상대먹은 카드를 보고 상대박을 셋해준다. 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); }
} //현재 플레이어 손패 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>()); } }
//점수 계산 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); }