【发布时间】:2020-06-17 23:32:02
【问题描述】:
我正在制作一款冒险/棋盘游戏,如果玩家踩到该物品,则可以在其中收集物品。所以我做了函数check_item()来检查这个:
def check_is_inside_screen(check_x, check_y):
if check_x < -450 or check_x > 450 or check_y < -350 or check_y > 300:
return False
return True
def check_item(player_x, player_y):
global pick_armor, pick_key, pick_sword
if not pick_armor and -395 < player_x < -405 and 270 < player_y < 280:
armor.hideturtle()
pick_armor = True
elif not pick_sword and 395 < player_x < 405 and 270 < player_y < 280:
sword.hideturtle()
pick_sword = True
elif not pick_key and 395 < player_x < 405 and -320 < player_y < -330:
key.goto(400, 325)
pick_key = True
def move(move_x, move_y):
player.forward(-100)
px, py = player.pos()
if not check_is_inside_screen(px, py):
player.forward(100)
return
check_item(px, py)
def movePlayer():
player.onclick(move, 1)
问题是,有时有效,有时无效。我玩测试游戏,有时armor 乌龟被成功隐藏,有时它不是。此外,sword 对象通常不会隐藏,key 只是不起作用。我尝试摆脱布尔参数,但没有任何效果。知道该函数在move() 函数内部调用也很有用,该函数是从onclick() 事件调用的。基本上,每当我单击播放器对象时,它都会移动,然后检查位置。
【问题讨论】:
-
请不要将代码作为图片。
-
也不要比较布尔值 == True 或 == False,并避免使用全局变量。坐标是整数还是浮点数?
-
我对图片感到非常抱歉,我是该网站的新手,我只是在发布后才阅读它的指示。至于布尔值,我想要一个变量来存储玩家拾取物品的信息,以便之后不会考虑 if 语句。我从 pos() 方法获取玩家坐标,当我打印出来时,它们似乎是整数。
-
尝试创建minimal reproducible example 并将代码作为文本发布。这样做,我可能会重新提出问题
-
阅读this article 了解调试代码的技巧。
标签: python if-statement boolean global turtle-graphics