You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Turtle开发Pong游戏:Paddle无响应问题求助

Python Turtle Pong游戏 Paddle无响应问题解决

你的代码核心问题是死循环while game_is_on写在了键盘监听逻辑的前面——这个循环会一直无限运行,程序根本没机会执行后面的screen.listen()和按键绑定代码,自然接收不到键盘输入,Paddle也就不会动。

修复步骤:

  1. 把screen.listen()和所有onkeypress按键绑定代码,移到while循环的前面
  2. 给while循环添加小延迟,避免CPU占用过高,同时让动画更平滑
  3. 确保你的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 13:07:35