我从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)
而不是一个表面(pyplay.表面)
.你的第二个是,你把一个元组的第二个参数,而不是rect(pyplay.要修复第一个问题,只需将背景文件(您以前将表面保存为)而不是
background.png
。要解决第二个问题,请使用backgroudfile.get_rect()
获取背景的rect。你的行应该是:
screen.blit(backgroundfile,backgroundfile.get_rect()
由于您以前没有将backgroundfile保存为曲面对象,因此此操作本身将不起作用。而不是
backgroundfile=“back.png”
put
backgroundfile=pygame.image.load(“back.png”)
如果将“back.png”
保存为同一文件夹中的文件,则将返回曲面。对另一个加载的图像执行相同的操作。做了所有这些事情,你的程序就会工作。
你有两个问题。首先,在back.png
周围加上引号,使其成为字符串(str)而不是曲面(pygame.surface)。第二个是为第二个参数放置一个元组,而不是一个rect(pygame.rect)。要修复第一个问题,只需将backgroundfile
(您以前将曲面保存为的内容)而不是“background.png”
。要修复第二个问题,请使用backgroundfile.get_rect()
获取背景的rect。您的线路应该是:
screen.blit(backgroundfile, backgroundfile.get_rect()
这本身不起作用,因为您以前没有将backgroundfile保存为曲面对象。而不是
backgroundfile = "back.png"
放
backgroundfile = pygame.image.load("back.png")
如果“back.png”保存为同一文件夹中的文件,则将返回曲面。对另一个加载的图像执行相同的操作。做了所有这些事情,你的程序就会工作。
我想先说一下,我确实查过这个问题,但每个似乎有类似问题的人都找到了一个不适合我的解决方案。我正在使用Python3.4.3 64位和pygame 1.9.2a,并在标题中说明了错误。目前我的代码如下所示: 运行它给了我以下信息: 提前谢谢,如果这听起来像个愚蠢的问题,我很抱歉。 编辑:多亏了布莱恩,这个问题现在已经解决了。对于任何有类似问题的人来说,以后可能会看到这个,更正后的版本是这样的: 关键
我有一个问题,我做了一个乒乓游戏,但我有一个问题,把分数打印到pyplay窗口。 我得到错误'TypeError:参数1必须是pygame.Surface,而不是str 我在文本中输入了blit,但出现了一个错误。我知道代码乱七八糟,我稍后会修复它
我正在编写一个小型python游戏,我的一些代码似乎不起作用。看一看: 是啊......所以错误是:
你好,我正在创建一个游戏使用pyplay和我有一些问题。我创建了一些按钮(使用图像),并根据某些操作,此按钮的图像将发生变化。我将向您展示代码中存在错误的部分。抱歉,我是西班牙人,我的英语不好。这是代码: 那么错误就是那个: 例如,在代码的最后一行: 如果我把默认,图像是那些所谓的default_ap和default_ip,那些: 如果我把丘巴卡,图像将被称为chewbacca_ap和chewba
我无法理解Stackoverflow中的其他问题。当圆圈向屏幕末端移动时,它会向相反方向移动。 发出错误消息而未执行。 screen.blit(圆圈,[x,y]) 类型错误:参数1必须是pygame.Surface,而不是pygame.Rect 有什么问题吗?