【问题标题】:Why isn't my turtle keybinding responding?为什么我的海龟键绑定没有响应?
【发布时间】:2020-10-01 22:41:08
【问题描述】:

我正在为我编写的游戏修改代码。当我调制播放器类时,我添加了所有额外的参数/参数,以便可以将其分开。我将键绑定保留在主游戏模块中。

键绑定代码如下所示


turtle.listen()
a=turtle.onkey(player.go_left(walls), "Left")
b=turtle.onkey(player.go_right(walls), "Right")
c=turtle.onkey(player.go_up(walls), "Up")
d=turtle.onkey(player.go_down(walls), "Down")
e=turtle.onkey(player.headright(missile,lives), "d")
f=turtle.onkey(player.headleft(missile,lives), "a")
g=turtle.onkey(player.headdown(missile,lives),"s")
h=turtle.onkey(player.headup(missile,lives),"w")
i=turtle.onkey(player.headright(missile,lives),"D")
j=turtle.onkey(player.headleft(missile,lives), "A")
k=turtle.onkey(player.headdown(missile,lives),"S")
l=turtle.onkey(player.headup(missile,lives),"W")
o=turtle.onkey(player.drink(info),"space")
m=turtle.onkey(player.fireball(missile2,info,lives),"z")
n=turtle.onkey(player.fireball(missile2,info,lives),"Z")

游戏运行正常,但按键没有响应操作。

您可以在

中找到代码

https://github.com/Ninedeadeyes/7-Dungeons-Deep/tree/master

键绑定代码在游戏中(mod版本)

所有函数都在'player.py'中

任何帮助都会很棒。

【问题讨论】:

  • 为什么要在变量中捕获来自onkey 的返回值?总是无?你为什么要在 turtle 上调用 onkeylisten - 通常,在 screen 上调用 onkey
  • 我正在尝试一些东西,但即使你删除了变量,它也没有任何区别。 onkey 和 listen 都是海龟方法。你可以在这些方法中使用其他东西,但如果你使用海龟库,这应该可以工作。当我在一个文件中编写游戏时它可以工作,但由于调制代码而不得不添加额外的增强.如果你能提供一些关于它应该是什么而不是turtle.onkey的反馈,我将不胜感激
  • 再读一点,我想我只能添加一个没有参数的函数才能工作docs.python.org/2/library/turtle.html#turtle.onkey
  • 因此为什么我的原始代码可以工作,而当我分离代码并添加增强功能时,它不再工作了。
  • 由于您没有提供player.go_left(walls) 等代码的示例,我假设它返回了适当的类型(即没有参数的回调函数) - 但是是的,需要一个函数。如果你的问题基本上可以这样回答,要么写一个好的答案并接受它,要么关闭问题。

标签: python module turtle-graphics key-bindings


【解决方案1】:

onkey 函数只允许没有参数的函数,因此不能使用带参数的函数,因此它不起作用。

https://docs.python.org/2/library/turtle.html#turtle.onkey

但是...如果你使用

turtle.onkey((lambda:player.go_left(walls)), "Left")

它会起作用,因为您正在一个函数中创建一个函数,该函数将表达输出,就好像它没有参数一样。

【讨论】:

    猜你喜欢
    • 2020-06-17
    • 2011-11-05
    • 2023-02-25
    • 1970-01-01
    • 2019-04-23
    • 1970-01-01
    • 2020-01-10
    • 1970-01-01
    • 2020-09-27
    相关资源
    最近更新 更多