所以我决定用Python编写Monopoly,但是我在更新玩家位置时遇到了一些麻烦.我写了一个for循环,遍历玩家,为每个玩家掷骰子,然后更新他们的位置.问题是位置变量没有保留最新位置,它在for循环开始时保持重置为0.这是我的代码:
player1location = 0
def turn(numberPlayers, player, player1location, Board):
for player in range(numberPlayers):
player = 'Player'+str(player+1)
print 'It\'s', player, 'turn!'
print player1location
rollDice = raw_input('Press Enter to roll the dice!')
diceRoll = random.randint(1,6)
print player, 'rolled a', diceRoll
player1location = player1location + diceRoll
print 'You landed on', player1location
print '\n'
while True:
turn(numberPlayers, player, player1location, Board)
Run Code Online (Sandbox Code Playgroud)
如有必要,我可以提供更多代码,但我认为这是控制玩家位置的所有内容.谢谢!
编辑:显然我正在改变局部变量而不是全局变量.我将如何更改全局变量?
您的函数参数与要更新的目标变量同名.因此,您所做的任何更改都是对函数参数进行的,而不是对全局变量进行的.那是因为function为传递给函数的参数创建了一个局部范围.因此,它覆盖了全局使用相同名称定义的变量.
因此,要么更改函数参数player1location的名称,要么更改全局变量的名称.