2

我的任务是在大学使用 c# 创建一个吟游诗人游戏。

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

与这个问题唯一相关的规则是同一方格中不能有超过一个玩家。

所以例如

两名球员都从位置 0 开始。

玩家 (A) 在方格 1 掷出 1 = Player(A)。玩家 (B) 掷出 1 = Player(B) “跳过”玩家(A) 并降落在方格 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。

如果有帮助的话,目前游戏只是在控制台中运行。很抱歉这个问题的格式,以前从未在这里问过。

非常感谢

4

1 回答 1

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;
}
于 2012-11-01T17:25:39.433 回答