1D阵列冲突

时间:2012-11-02 17:12:30

标签: c# arrays collision-detection

我正在为一维阵列的碰撞检测类型方法苦苦挣扎。

我有一个最多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;
    }

}

这种让我头痛的方法。我一直在试验有条件的并且已经完成了一半,但似乎无法做到正确。

非常感谢提前。

2 个答案:

答案 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);
}