我在想 if 语句,但我不确定它会如何工作..
if(user.position >= gameBoard[0]) //user.position is the player position on the board
passGo = true;
但这会引发任何超过 0 的情况。那么,一旦它们通过然后取消,我怎样才能让它标记呢?
我在想 if 语句,但我不确定它会如何工作..
if(user.position >= gameBoard[0]) //user.position is the player position on the board
passGo = true;
但这会引发任何超过 0 的情况。那么,一旦它们通过然后取消,我怎样才能让它标记呢?
如果用户在移动开始时在 GO 之前并且在移动结束时在 GO 之后,则用户已通过 GO。所以也考虑记录以前的位置......
考虑到大富翁的规则和游戏玩法,请了解游戏本身区分了跨空间移动和直接传送到空间。(例如,“直接去监狱。不要通过 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。
这样,您就不会沉浸在试图弄清楚用户在哪里、用户在哪里以及两者之间发生了什么的数学和逻辑中。相反,您正在从一个空间移动到另一个空间,并在此过程中应用游戏规则。
当你掷骰子时:
user.position += diceRoll;
if(user.position >= 40)
{
//award $200
user.position -= 40;
}
这是处理掷骰子的简单事情。然后,您只需单独对每张机会卡进行编程。不要在回合开始/结束时进行所有位置检查。它变得非常复杂。