1

我环顾四周,但没有找到任何可行的解决方案。

我只是在使用教程学习 pygame:https ://www.youtube.com/watch?v=jO6qQDNa2UY&list=WL&index=44&t=1379s

但是当我尝试链接图像时出现错误:pygame.error: File is not a Windows BMP file。

除了重新安装pygame(上一期)或重新安装python之外,我已经尝试了所有方法。

这是我的代码

import pygame
import os

pygame.init()
WIDTH, HEIGHT = 900, 500
WIN = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("First Game")

WHITE = (255,255,255)
RED = (255,0,0)

FPS = 60

YELLOW_SPACESHIP_IMAGE = pygame.image.load(
    os.path.join('Assets', 'spaceship_yellow.png')).convert()
RED_SPACESHIP_IMAGE = pygame.image.load(
    os.path.join('Assets', 'spaceship_red.png')).convert()

def draw_window():
    WIN.fill((RED))
    WIN.blit(YELLOW_SPACESHIP_IMAGE, (300,100))
    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()
4

2 回答 2

1

您尝试加载spaceship_yellow.png并且spaceship_red.png从扩展名判断哪个PNG不是BMPs,您的错误

pygame.error: File is not a Windows BMP file

建议 pygame 期待BMP文件。pygame.image 文档

image 模块是 pygame 的必需依赖项,但它只可选地支持任何扩展文件格式。默认情况下,它只能加载未压缩的 BMP 图像。当构建完整的图像支持时,该 pygame.image.load()函数可以支持以下格式。

然后枚举格式,显然您没有完整的图像支持,我认为最简单的解决方案是将PNGs 转换为未压缩的BMP图像格式。

于 2021-08-29T10:56:15.493 回答
0

将图像转换为 BMP 确实有效,但我宁愿仍然拥有 pygame 的全部功能。我为最终使它工作所做的工作来自这里的一个线程。我把它放在终端里让它工作:

python3 -m pip install git+https://github.com/nelsonlove/pygame.git

这会将您的 pygame 更新到版本 2.0.2.dev1,针对 m1 Mac 进行了修改。

于 2021-10-24T20:09:29.917 回答