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

MacOS环境下pygame开发游戏调用WIN.blit方法报错求解决

错误原因

报错和你设置的900*500窗口宽高无关,问题出在WIN.blit()的传参不符合pygame的方法要求:
blit()方法的第二个入参需要是包含x、y坐标的二元组,你代码里直接拆成了两个独立参数300, 200,不符合参数规则,所以触发报错。

修复方案
  • 把draw_window函数里的blit调用改为:WIN.blit(YELLOW_SPACESHIP_IMAGE, (300, 200))
  • 补充pygame初始化逻辑,MacOS环境下必须显式调用pygame.init()才能正常加载渲染资源,否则也可能触发异常
  • 图片加载时建议加上.convert_alpha()处理,适配png透明通道,避免Mac下偶发的渲染异常

修正后的完整可运行代码如下:

import pygame
import os

# MacOS环境必须显式初始化pygame
pygame.init()

WIDTH, HEIGHT = 900, 500
WIN = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Boom Boom!")

WHITE = (255, 255, 255)

FPS = 60
# 图片加载时处理透明通道优化渲染
YELLOW_SPACESHIP_IMAGE = pygame.image.load(os.path.join('Assets', 
'spaceship_yellow.png')).convert_alpha()
RED_SPACESHIP_IMAGE = pygame.image.load(os.path.join('Assets', 'spaceship_red.png')).convert_alpha()

def draw_window():
  WIN.fill(WHITE)
  # 坐标改为二元组传参
  WIN.blit(YELLOW_SPACESHIP_IMAGE, (300, 200)) 
  pygame.display.update() 

# 补充基础事件循环,避免窗口闪退/无响应
def main():
    clock = pygame.time.Clock()
    run = True
    while run:
        clock.tick(FPS)
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                run = False
        draw_window()
    pygame.quit()

if __name__ == "__main__":
    main()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:54:05