使用Pygame绘制的小球无法实现动画效果求助
问题分析
你的代码里有两个核心问题导致小球不动:
- 每次绘制都用固定坐标:你每次调用
pygame.draw.circle时都写死了(100,100),哪怕修改ball.x,下一次绘制还是会回到初始位置,相当于白改。 - 没处理屏幕刷新痕迹:如果不清空屏幕,小球移动后会留下一串轨迹,也会让你误以为小球没动。
修复方案
单独维护小球的坐标变量,每次循环更新坐标后,用新坐标绘制小球,同时记得先清空屏幕。
修改后的代码:
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
相关产品推荐
相关产品推荐

