我正在进行游戏的小型娱乐活动" Virus"。我正在为两名球员制作比赛,但计划为更多球员做出选择。
如果您进行移动,则将瓷砖复制到您旁边的瓷砖并接管所有周围的敌方瓷砖。我现在有以下内容(评论,因为一切都在荷兰语中):
//Go through the list of direct neighbors of the destination tile
//if that neighbor's team is not neutral and not of their own team, take that tile over
//taking over that tile is currently as follows:
for(int i = 0; i < destinationTile.DirectNeighbors.Count(); i++)
{
destinationTile.DirectNeighbors[i].Backcolor = players[currentPlayer].teamColor;
players[currentPlayer].tilesOwned.Add(DirectNeighbors[i]);
players[currentEnemy].tilesOwned.Remove(DirectNeighbors[i]);
} //tilesOwned being a List on every Player
这适用于我目前所拥有的:只有2名玩家的游戏。但是,如果我想与超过2名球员一起比赛,这并不起作用。我必须找回瓦片被接管的敌人。
如何确定哪个玩家的牌被接管?
答案 0 :(得分:5)
必须添加到玩家列表并从其他列表中删除是多余的,因为相同的数据会被表示两次,这可能会导致不一致。
只保留一个唯一的磁贴列表,每个磁贴都可以拥有一个所有者属性(无人或玩家ID)。然后你可以通过颜色/玩家获得计数。
使用此系统将图块添加到玩家列表并从其他列表中删除,您只需将图块所有者属性更改为currentPlayer