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

使用Pygame绘制的小球无法实现动画效果求助

问题分析

你的代码里有两个核心问题导致小球不动:

  1. 每次绘制都用固定坐标:你每次调用pygame.draw.circle时都写死了(100,100),哪怕修改ball.x,下一次绘制还是会回到初始位置,相当于白改。
  2. 没处理屏幕刷新痕迹:如果不清空屏幕,小球移动后会留下一串轨迹,也会让你误以为小球没动。
修复方案

单独维护小球的坐标变量,每次循环更新坐标后,用新坐标绘制小球,同时记得先清空屏幕。

修改后的代码:

import pygame
from sys import exit

pygame.init()
screen = pygame.display.set_mode((800,500))
clock = pygame.time.Clock()
# 单独保存小球的坐标和速度
ball_x, ball_y = 100, 100
vel = 5
fps = 60

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            exit()

    # 每次循环先清空屏幕(用黑色作为背景,可替换成你需要的颜色)
    screen.fill("Black")
    # 更新小球的x坐标
    ball_x += vel
    # 用更新后的坐标绘制小球
    pygame.draw.circle(screen, "White", (ball_x, ball_y), 5, 5)

    pygame.display.flip()
    clock.tick(fps)
关键说明
  • screen.fill("Black"):必须在绘制前清空屏幕,否则之前的小球图像会保留,形成拖尾效果。
  • 用ball_x和ball_y维护位置:这两个变量会在每次循环中持续更新,绘制时直接用它们作为坐标,小球才会跟着移动。
  • vel放在循环外:避免每次循环都重置速度,现在配合坐标变量就能正常生效。

内容的提问来源于stack exchange,提问作者LGM

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 23:53:24