/// <summary>
/// 开始游戏。
/// </summary>
public void Start()
{
Player currentPlayer;
GameCardHeap heap = new GameCardHeap(selectedPackages); // 创建牌堆
while(true)
{
currentPlayer = players[currentToken]; // 设置当前有令牌的玩家
// 摸牌阶段
GameCard[] newCards = heap.Pop(2, true);
currentPlayer.Draw(newCards);
// 出牌阶段
while(currentPlayer.HasPlayableCard)
{
// NOTE:为了简单,先实现只杀下家,并只使用杀、闪、桃
int nextToken = currentToken == players.Length - 1 ? 0 : currentToken + 1;
currentPlayer.Play(players[nextToken], currentPlayer.FirstPlayableCard);
if (IsGameEnds())
goto label;
}
// 弃牌阶段
// NOTE:为了简单,先实现只弃从头开始的牌到当前体力值
int disCardCount = currentPlayer.HandCards.Length - currentPlayer.Hp;
if (disCardCount > 0)
{
GameCard[] removeCards = currentPlayer.HandCards.Take(disCardCount).ToArray();
currentPlayer.Discard(removeCards);
}
// 将令牌给下一个人
GiveTokenToNext();
}
label:
Console.WriteLine("游戏结束!");
}