我的任务是在大学里用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。
目前游戏刚刚在控制台中运行,如果有帮助的话。对于这个问题的格式感到抱歉,之前从未问过这个问题。
非常感谢
答案 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;
}