python - 如何使用函数更改全局变量
问题描述
好的,所以我正在为学校项目制作一个小的文字迷宫游戏。我用 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 值会非常方便。我正在考虑尝试将变量放在我的运动循环中(它会一直播放到玩家死亡或走出迷宫),但这似乎是一个问题,有一个非常简单的解决方案,我只是没有看到这样,在我去尝试各种愚蠢的东西之前,我想我只是在这里提出一个问题......
解决方案
好吧,只是不要使用全局变量。你可以像这样传递它们:
def otherFunction():
playerX = 0
playerX = 0
UpMove(playerX, playerY)
# other stuff
def UpMove(playerX, playerY):
reference = []
# your other stuff
推荐阅读
- ios - 如何将 SpriteKit Sprite 节点的可点击区域从矩形更改为圆形?
- javascript - 使用 TeaVM 将 java 库移植到 wasm
- javascript - 使用 javascript 检查段落中的 ClassName 是否等于按钮中的 TextContent
- snowflake-cloud-data-platform - 无法取消查询
- scala - 在 scala 中,是否可以阻止编译器首先搜索 Predef 隐式?
- javascript - 如何将数字数组转换为仅在单击加号图标时出现的列表?
- python - 计算 pandas 文本列中最常见的短语
- python - 如何将数据帧转换为 0 和 1 的 ndarray?
- sql - 在 postgresql 中匹配客户 ID 值
- sql - IF 在 SAP HANA 中的时间间隔