我对Python很陌生,在Python学习课程中做了一些小游戏,但从来没有在家。所以最近我开始做一个游戏,但仅仅10分钟后我就发现了一个问题:
当我按“W”时什么也没发生,尽管我在键盘上输入了密码。 你自己看看:
import turtle
s = turtle.Screen()
g = turtle.Turtle()
t = turtle.Turtle()
#Ground
t.speed(0)
t.up()
t.goto(-1000,-200)
t.down()
t.goto(1000,-200)
#Player
g.speed(0)
PlayerX = -600
def moveX():
g.clear()
global PlayerX
g.up()
g.goto(PlayerX,-99)
g.down()
g.color("Slate Gray")
g.begin_fill()
g.circle(-50)
g.end_fill()
PlayerX = PlayerX - 1
turtle.onkeypress(moveX, "w")
moveX()
顺便说一句,我完全知道我没有做一个后退按钮。
我想它叫
onkey
而不是onkeypress
。 另外,我认为您需要聆听(如果您希望它运行,则添加一个mainloop
):您可能需要重新访问正在使用的数字,以确保形状在窗口上。
不确定是不是和Python3有关。但onkey函数似乎被拖到Screen()下面。
turtle.Screen().onkey(movex,“w”)
除了@doctorlove对添加
listen()
以允许窗口接收键盘事件的修正点(+1)之外,还有两条评论:首先,用鼠标点击窗口使其处于活动状态,否则它不会响应键盘。其次,在事件处理程序中停用事件处理程序并在退出时重新激活它可能会有帮助,以避免在有人反复非常快地按键时出现问题。
下面是第二条评论以及其他一些代码建议:
不需要运行
mainloop()
,但是程序将在没有它的初始moveX()
调用后退出。mainloop()
将控制权移交给Tk事件处理程序,因此没有它,某些事件可能不会触发。如果这是Python 2,则需要将
onkeypress()
更改为onkey()
,并更改调用mainloop()
的方式。相关问题 更多 >
编程相关推荐