Python Turtle开发Pong游戏:Paddle无响应问题求助
Python Turtle Pong游戏 Paddle无响应问题解决
你的代码核心问题是死循环while game_is_on写在了键盘监听逻辑的前面——这个循环会一直无限运行,程序根本没机会执行后面的screen.listen()和按键绑定代码,自然接收不到键盘输入,Paddle也就不会动。
修复步骤:
- 把
screen.listen()和所有onkeypress按键绑定代码,移到while循环的前面 - 给
while循环添加小延迟,避免CPU占用过高,同时让动画更平滑 - 确保你的
Paddle类里的go_up、go_down方法逻辑正确(比如正确修改y坐标)
修改后的完整代码:
from turtle import Screen, Turtle from paddle import Paddle import time # 需要导入time模块做延迟 screen = Screen() screen.setup(800, 600) screen.bgcolor("black") screen.title("My PONG") screen.tracer(0) r_paddle = Paddle() r_paddle.goto(350, 0) l_paddle = Paddle() l_paddle.goto(-350, 0) # 先设置键盘监听和按键绑定 screen.listen() screen.onkeypress(r_paddle.go_up, "Up") screen.onkeypress(r_paddle.go_down, "Down") screen.onkeypress(l_paddle.go_up, "w") screen.onkeypress(l_paddle.go_down, "s") game_is_on = True while game_is_on: time.sleep(0.01) # 添加小延迟 screen.update() screen.exitonclick()
补充:Paddle类的正确示例
如果你的Paddle类还没写对,参考这个基础实现:
from turtle import Turtle class Paddle(Turtle): def __init__(self): super().__init__() self.shape("square") self.color("white") self.shapesize(stretch_wid=5, stretch_len=1) self.penup() def go_up(self): new_y = self.ycor() + 20 self.goto(self.xcor(), new_y) def go_down(self): new_y = self.ycor() - 20 self.goto(self.xcor(), new_y)
内容的提问来源于stack exchange,提问作者user101
相关产品推荐
相关产品推荐

