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

Pygame调用draw_window()报错:缺少yellow和red位置参数

解决Pygame中draw_window()的参数缺失错误

错误原因

你遇到的TypeError: draw_window() missing 2 required positional arguments: 'yellow' and 'red',核心问题是调用draw_window()时没有传入它声明的两个必填参数,同时当前draw_window函数里虽然定义了yellow和red参数,但并没有实际使用它们,而是硬编码了固定坐标。

修正步骤

  1. 在main()函数中添加draw_window(yellow, red)的调用,传入创建好的两个Rect对象
  2. 优化draw_window(),利用传入的Rect对象的坐标来绘制飞船,代替固定数值,这样后续移动飞船时无需修改绘制代码

修正后的完整代码示例:

def draw_window(yellow, red):
    WIN.fill(BACKGROUND)
    # 使用Rect对象的坐标来绘制,而不是固定值
    WIN.blit(YELLOW_SPACESHIP, (yellow.x, yellow.y))
    WIN.blit(RED_SPACESHIP, (red.x, red.y))
    pygame.display.update()

def main():
    yellow = pygame.Rect(700, 300, SPACESHIP_WIDTH, SPACESHIP_HEIGHT)
    red = pygame.Rect(100, 300, SPACESHIP_WIDTH, SPACESHIP_HEIGHT)
    
    # 游戏主循环(避免窗口一闪而过)
    run = True
    while run:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                run = False
        
        # 调用draw_window并传入参数
        draw_window(yellow, red)
    
    pygame.quit()

额外说明

  • 必须添加游戏主循环,否则程序会创建窗口后立刻退出,无法看到绘制效果
  • 后续实现飞船移动时,只需修改yellow和red这两个Rect对象的x/y属性,绘制逻辑会自动同步更新

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 05:36:07