c#1D阵列冲突检测

时间:2012-11-01 17:20:06

标签: c# arrays collision

我的任务是在大学里用c#创建一个bard游戏。

将有2-4名玩家,每个玩家轮流掷骰子。目标是到达网格上的最后一个方格。

这个问题的唯一相关规则是一次只能有一个玩家在同一个广场上。

所以例如

两位球员都从0位开始。

玩家(A)在方阵1处掷出1 =玩家(A)。 玩家(B)在玩家(A)上滚动1 =玩家(B)'跳过'并落在广场2上。

我遗漏了骰子掷骰方法,据我所知,它与问题无关。

private static void PlayerTurn(int playerNo)
        {
        playerPositions[playerNo] = playerPositions[playerNo] + RollDice();  
        // The selected player rolls the dice and moves x amount of squares 
        //(dependant on dice roll value)
        }

这是移动每个玩家的方法。

我正在努力的是以下方法。

static bool RocketInSquare(int squareNo)
       {
        //TODO: write a method that checks through the 
        //rocket positions and returns true if there is a rocket in the given square
       }

该方法需要检查数组中的冲突。因此,如果玩家(A)在第一次滚动时滚动1并且玩家(B)在第一次滚动时滚动1,则需要使玩家(B)'越级'玩家(A)转到方形2。

目前游戏刚刚在控制台中运行,如果有帮助的话。对于这个问题的格式感到抱歉,之前从未问过这个问题。

非常感谢

1 个答案:

答案 0 :(得分:1)

那么你需要简单地检查两个玩家是否共享相同的位置,如果是这样的话,“主动玩家”可以再移动一个

if(playerpositions[otherPlayer] == playerpositions[currentPlayer])
    playerpositions[currentPlayer]++;

所以如果你需要为它做一个函数,那就是:

static bool RocketInSquare(int squareNo)
{
    return playerpositions[0] == squareNo ||
           playerpositions[1] == squareNo ||
           playerpositions[2] == squareNo ||
           playerpositions[3] == squareNo;
}

然后

int dice = RollDice();

if(RocketInSquare(playerPositions[playerNo] + dice))
{
    playerPositions[playerNo] += dice +1;
}
else
{
    playerPositions[playerNo] += dice;
}