// カードを配る public void DealCards() { int handMax = rule.CountOfMoment.Value * 2; // 切り札をドロー if (rule.IsEnableTrump) { Player1.DrawTrump(deck); Player2.DrawTrump(deck); } // 両プレイヤーの手札がMaxになるまで交互にドローする IPlayer targetPlayer = Player1; while (Player1.Hand.Cards.Count < handMax || Player2.Hand.Cards.Count < handMax) { if (deck.IsEmpty()) // デッキが空になったらtrashから全部取り出してシャッフルしてデッキにする { deck.AppendCards(trash.Remove().Shuffle(randGen)); } targetPlayer.Hand.Cards.Add(deck.Deal()); targetPlayer = targetPlayer == Player1 ? Player2 : Player1; } isP1MovePlotted = false; isP2MovePlotted = false; isP1ActionPlotted = false; isP2ActionPlotted = false; CurrentPhase = Phase.MovePlot; }
// ボードを作成する public void MakeBoard(bool isPlayer1) { CurrentPhase = Phase.Start; Player1 = new Player(true, rule); Player2 = new Player(false, rule); cardSet = new CardSet.Factory(this).CreateClassic(); deck = new Deck(); trash = new Trash(); deck.AppendCards(cardSet.EnumerateNormalCards().Shuffle(randGen)); deck.AppendTrumps(cardSet.EnumerateTrumps().Shuffle(randGen)); MyPlayer = isPlayer1 ? Player1 : Player2; currentIndex = -1; }