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

pygame.draw.rect运行异常仅绘制部分精灵,5行雨网格只显示第一行求助

问题排查与解决方案

1. 行间距过大导致后续行超出屏幕范围

你当前行间距设置为3 * rain_drop_height,如果单个雨滴高度偏大,5行的总高度很容易超出屏幕高度,导致后面的行直接在可视区域外无法显示。
排查方式:在绘制雨滴的循环中添加打印,确认坐标是否在屏幕范围内:

for rain_drop in self.rain.sprites():
    # 新增打印确认坐标合法性
    print(f"绘制雨滴坐标:x={rain_drop.rect.x}, y={rain_drop.rect.y}, 屏幕高度={self.settings.screen_height}")
    rain_drop.draw_rain()

如果打印的y值大于屏幕高度,直接修改_create_rain方法里的行间距系数即可,比如将3 * rain_drop_height改为1 * rain_drop_height缩小间距。

2. Rain类的draw_rain方法写死了y坐标

这是最常见的出错点,很多人写绘制逻辑时会不小心固定y坐标为第一行的位置,导致所有雨滴都叠在第一行:
错误的draw_rain写法示例:

def draw_rain(self):
    # 错误:y坐标写死为固定值,所有雨滴都会绘制到第一行
    pygame.draw.rect(self.screen, self.color, (self.rect.x, 20, self.width, self.height))

正确写法直接传入完整rect对象即可:

def draw_rain(self):
    pygame.draw.rect(self.screen, self.color, self.rect)

3. 其他逻辑误清理了非第一行的雨滴

排查代码中是否有调用self.rain.empty()、精灵kill()方法的逻辑,确认没有在创建完5行雨滴后,误删除了后面4行的精灵实例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 18:18:01