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
相关产品推荐
相关产品推荐

