如何使用函数更改全局变量

2024-10-03 06:29:09 发布

您现在位置:Python中文网/ 问答频道 /正文

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

然而,为了使移动工作,我使用了一个功能,首先检查是否有任何地形的球员想要去。这很好,但问题是我不知道如何从函数中修改全局变量“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值进行全局编辑就非常方便了。我想尝试把变量放在我的运动循环中(直到玩家死了或者走出迷宫为止),但是这个问题似乎有一个非常简单的解决方案,我只是没有看到,所以在我尝试各种愚蠢的东西之前,我想我会在这里提出一个问题。。。你知道吗


Tags: infalsetrue列表forreturnif玩家
1条回答
网友
1楼 · 发布于 2024-10-03 06:29:09

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

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

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

相关问题 更多 >