我正在为一维阵列的碰撞检测类型方法苦苦挣扎。
我有一个最多4名玩家的控制台游戏,每个玩家轮流掷骰子并在棋盘上移动。
规则是棋盘上只能同时有一名玩家。
因此,如果玩家一掷1,他就在正方形。 如果玩家2在他的回合中滚动1,则他在方形2上。 如果球员3在他的回合中滚动1,那么他就在方三。 等等...
private static void PlayerMove(int playerNo)
{
// TODO: Makes a move for the given player
for (int i = 0; i < NumberOfPlayers; i++)
{
NextMove = playerPositions[i] + playerPositions[i] + DiceThrow();
playerPositions[i] = NextMove;
}
}
这是我目前移动玩家的方法,这是一种分钟的测试方法,表明玩家都能够移动。结果是每个玩家都落在1号方位上。
static bool PlayerInSquare(int squareNo)
{
//TODO: write a method that checks through the
//rocket positions and returns true if there is a rocket in the given square
if (This conditional is what has me confused)
{
return true;
}
}
这种让我头痛的方法。我一直在试验有条件的并且已经完成了一半,但似乎无法做到正确。
非常感谢提前。
答案 0 :(得分:3)
假设playerPositions[]
是一个整数数组,其中包含玩家所在的方格数,您可以尝试:
static bool PlayerInSquare(int squareNo)
{
return playerPositions.Any(pos => pos == squareNo);
}
较少的Linq-y解决方案(相同的事情)将是:
static bool PlayerInSquare(int squareNo)
{
for (int i = 0; i < NumberOfPlayers; i++)
if (playerPositions[i] == squareNo)
return true;
return false;
}
答案 1 :(得分:1)
看起来你可以使用:
static bool PlayerInSquare(int squareNo)
{
return playerPositions.Any(pos => pos == squareNo);
}