首页 > 解决方案 > 如何使用函数更改全局变量

问题描述

好的,所以我正在为学校项目制作一个小的文字迷宫游戏。我用 x 位置和 y 位置列表定义世界障碍物,列表中值的位置可用于匹配这两个值并创建坐标。这可能更有效,但至少它有效。现在,我通过将玩家和敌人的 X 和 Y 值保存在 2 个变量中来跟踪他们。这也很好用。

然而,为了让移动发挥作用,我使用了一个函数,它首先检查玩家是否想要去的任何地形。这一切都很好,但问题是我不知道如何从函数中更改全局变量“PlayerX”和“PlayerY”。

我已经尝试过“global”关键字,但它使编写代码变得有点困难,因为每当我用坐标编写新东西时我都需要注意它。我还阅读了我认为正在解决相同问题的其他主题,但似乎没有一个真正适合我遇到的问题(或更可能的情况:我无法很好地理解它,以至于我可以将它应用到我的问题适当)

def UpMove():
    reference = []
    listPosition = 0
    movePossible = False

    for x in worldObsY:
        if x == playerY + 1:
            reference.append(listPosition)

        listPosition += 1

    for x in reference:
        if worldObsX[x] == playerX:
            movePossible = False
        else:
            movePossible = True

    if movePossible == True:
      print ("You moved")
      return playerY + 1
    else:
      print ("There's terrain there. Try a different way")
      return playerY

仅全局编辑 X 和 Y 值会非常方便。我正在考虑尝试将变量放在我的运动循环中(它会一直播放到玩家死亡或走出迷宫),但这似乎是一个问题,有一个非常简单的解决方案,我只是没有看到这样,在我去尝试各种愚蠢的东西之前,我想我只是在这里提出一个问题......

标签: pythonfunctionglobal-variables

解决方案


好吧,只是不要使用全局变量。你可以像这样传递它们:

def otherFunction():
    playerX = 0
    playerX = 0
    UpMove(playerX, playerY)
    # other stuff

def UpMove(playerX, playerY):
    reference = []
    # your other stuff

推荐阅读