我會像我的播放器下面類的一些屬性:
public bool IsComputer { get; set; }
public bool IsCurrentTurn { get; set; }
public int TurnOrder { get; set; }
這樣的話,你可以寫你的邏輯基礎上,如果他們是人或者沒有,如果它是否輪到他們。您將使用TurnOrder屬性來確定下一個輪到誰。
所以,如果你正在創建您的播放器對象是這樣的:
Player player1 = new Player();
你可以添加到您的主邏輯是這樣的:
if (player1.IsComputer)
{
PerformTurn();
}
else //Human
{
//Logic to wait and allow human player to do his or her turn here
}
編輯:
要確定現在輪到我了,我首先會讓我的球員進入球員列表。例如:
List<Player> players = new List<Player>
{
new Player {Name = "Player 1", IsComputer = false, TurnOrder = 0, IsCurrentTurn = true},
new Player {Name = "Player 2", IsComputer = true, TurnOrder = 1, IsCurrentTurn = false},
new Player {Name = "Player 3", IsComputer = true, TurnOrder = 2, IsCurrentTurn = false}
};
其次,我會創建一個函數,使用每個玩家的TurnOrder屬性來確定下一個是誰。像這樣的方法會做到這一點:
public Player GetNextPlayer()
{
Player currentPlayer = players.First(x => x.IsCurrentTurn);
//if player is last in the turn order return first player
if (currentPlayer.TurnOrder == players.Max(x => x.TurnOrder).TurnOrder)
{
return players.Min(x => x.TurnOrder);
}
else
{
return players.First(x => x.TurnOrder == (currentPlayer.TurnOrder + 1));
}
}
當然,你可以只使用列表中的索引,共使用TurnOrder跳過,但如果你想擴展您的遊戲,使用索引的輪候次序可能會在以後傷害你。我認爲TurnOrder屬性更加靈活。
要獲得在轉彎未來的球員,只要使用此:
Player currentPlayer = GetNextPlayer();
對不起,轉貼,但我沒來得及編輯 – capzulu
你的問題被關閉,所以你決定重新發布它沒有修改?你爲什麼期望得到不同的結果? –
我增加了更多的信息...對不起,如果它仍然令人困惑 – capzulu