我从一个 youtbe 视频中对此进行了编码,他似乎做得很好,但是当我尝试时,我在底部收到错误消息,我很困惑,我需要帮助。
#!/usr/bin/env python
import pygame, sys
from pygame.locals import *
pygame.init()
screen = pygame.display.set_mode((370, 572), 0, 32)
backgroundfile = "back.png"
mousefile = "mouse.png"
back = pygame.image.load(backgroundfile).convert()
mouse = pygame.image.load(mousefile).convert_alpha()
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
#Now we have initialized everything lets start with the main part
screen.blit("back.png", (0,0))
pygame.display.flip()
当我运行程序时,我收到错误:
Traceback (most recent call last):
File "Tutorial 5 First game.py", line 26, in <module>
screen.blit("back.png", (0,0))
TypeError: argument 1 must be pygame.Surface, not str
我不确定这意味着什么或如何解决
这是修复
你有两个问题。你的第一个是你把引号放在周围
back.png
,使它变成一个字符串(str)
而不是一个表面(pygame.Surface)
。您的第二个是您为第二个参数而不是 rect 放置一个元组(pygame.Rect).
要修复第一个,只需放置 backgroundfile (您之前将表面保存为)而不是"background.png"
. 要修复第二个,请使用backgroudfile.get_rect()
获取背景的矩形。你的行应该是:
screen.blit(backgroundfile, backgroundfile.get_rect()
这本身不起作用,因为您之前没有将背景文件保存为表面对象。代替
backgroundfile = "back.png"
放
backgroundfile = pygame.image.load("back.png")
"back.png"
如果保存为同一文件夹中的文件,这将返回一个表面。对另一个加载的图像执行相同的操作。做所有这些事情,你的程序应该可以工作。