-1

我在想 if 语句,但我不确定它会如何工作..

if(user.position >= gameBoard[0])     //user.position is the player position on the board
          passGo = true;

但这会引发任何超过 0 的情况。那么,一旦它们通过然后取消,我怎样才能让它标记呢?

4

3 回答 3

0

如果用户在移动开始时在 GO 之前并且在移动结束时在 GO 之后,则用户已通过 GO。所以也考虑记录以前的位置......

于 2013-11-11T16:51:16.197 回答
0

考虑到大富翁的规则和游戏玩法,请了解游戏本身区分了跨空间移动和直接传送到空间。(例如,“直接去监狱。不要通过 Go,不要收取 200 美元。”)

因此,如果您的代码正在执行此操作,那么您就错过了 Monopoly 的那一部分:

user.position = newposition;

相反,考虑在用户的当前位置和新位置之间循环。在伪代码中,更像这样:

while (user.position != newposition) {
    // move the user to the next position
    // apply the rules for that position
    // in special cases where movement is interrupted, break out of the loop
}

在这种情况下,您将在循环的每次迭代中应用游戏逻辑。如果循环中的“当前”位置是围棋,那么您应用收集 200 美元的逻辑。在用户被“转移”的情况下(例如直接进入监狱),循环会通过user.position显式更改到监狱位置而中断,因此循环永远不会越过 Go。

这样,您就不会沉浸在试图弄清楚用户在哪里、用户在哪里以及两者之间发生了什么的数学和逻辑中。相反,您正在从一个空间移动到另一个空间,并在此过程中应用游戏规则。

于 2013-11-11T17:03:03.737 回答
0

当你掷骰子时:

user.position += diceRoll;
if(user.position >= 40)
{
    //award $200
    user.position -= 40;
}

这是处理掷骰子的简单事情。然后,您只需单独对每张机会卡进行编程。不要在回合开始/结束时进行所有位置检查。它变得非常复杂。

于 2013-11-11T17:10:37.727 回答