制作游戏,无法导入背景图片或精灵
Making a game, I can't import a background image or sprite
我是一名新程序员,正在尝试制作一款平台战斗 2D 卷轴游戏,我已经创建了我的背景和角色精灵,但我正在尝试 blit
将它们添加到我的代码中,但我收到一条错误消息说
The first argument needs to be pygame.Surface()
当我这样做时,它会告诉我
ValueError: size needs to be (int width, int height)
我已经看了很多关于这个的问题,尝试了很多东西,但没有任何效果。请帮忙。
import pygame
pygame.init()
global X, Y, gameBackground
bg = [pygame.image.load("pygame/gameBackground.png")]
char = [pygame.image.load("pygame/characterStandingRight.png")]
#I have my .png files in a folder named "pygame" inside of my general program folder
windowWidth = 1366
windowHeight = 697
Width = 40
Height = 64
X = 5
Y = windowHeight - (Height + 5)
tick = 30
run = True
def redrawGameWindow():
window.blit(pygame.Surface(bg), (0, 0)) #draws Window Background
window.blit(pygame.Surface(char), (X, Y)) #draws Character Sprite
pygame.display.update()
#above is where I have my errors of "pygame.Surface" and "(int width, int height)"
window = pygame.display.set_mode((windowWidth, windowHeight))
pygame.display.set_caption("Game")
while run:
pygame.time.delay(tick)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
#other game code which controls character movement functions
redrawGameWindow()
pygame.quit()
quit()
我认为您将列表放入 blit 中,这会产生错误。应该是:
window.blit(bg[0], (0, 0)) #draws Window Background
错误是由pygame.Surface(bg)
分别bygame.Surface(char)
引起的,其中bg
和char
是对象列表。另一个 Surface 甚至 Surface 对象列表都没有 pygame.Surface
的构造函数。
注意你有一个背景列表和一个字符列表
bg = [ pygame.image.load("pygame/gameBackground.png") ]
char = [ pygame.image.load("pygame/characterStandingRight.png") ]
要访问列表中的对象,您必须使用索引运算符(例如 char[0]
)。 bg[0]
和 char[0]
是 pygame.Surface
objects and can be used directly in the method blit()
。例如:
def redrawGameWindow():
window.blit(bg[0], (0, 0))
window.blit(char[0], (X, Y))
pygame.display.update()
如果您只需要一个 pygame.Surface
,则必须跳过 square brackets
(例如 bg = pygame.image.load("pygame/gameBackground.png")
)。
bg = pygame.image.load("pygame/gameBackground.png")
char = pygame.image.load("pygame/characterStandingRight.png")
def redrawGameWindow():
window.blit(bg, (0, 0))
window.blit(char, (X, Y))
pygame.display.update()
我是一名新程序员,正在尝试制作一款平台战斗 2D 卷轴游戏,我已经创建了我的背景和角色精灵,但我正在尝试 blit
将它们添加到我的代码中,但我收到一条错误消息说
The first argument needs to be
pygame.Surface()
当我这样做时,它会告诉我
ValueError: size needs to be (int width, int height)
我已经看了很多关于这个的问题,尝试了很多东西,但没有任何效果。请帮忙。
import pygame
pygame.init()
global X, Y, gameBackground
bg = [pygame.image.load("pygame/gameBackground.png")]
char = [pygame.image.load("pygame/characterStandingRight.png")]
#I have my .png files in a folder named "pygame" inside of my general program folder
windowWidth = 1366
windowHeight = 697
Width = 40
Height = 64
X = 5
Y = windowHeight - (Height + 5)
tick = 30
run = True
def redrawGameWindow():
window.blit(pygame.Surface(bg), (0, 0)) #draws Window Background
window.blit(pygame.Surface(char), (X, Y)) #draws Character Sprite
pygame.display.update()
#above is where I have my errors of "pygame.Surface" and "(int width, int height)"
window = pygame.display.set_mode((windowWidth, windowHeight))
pygame.display.set_caption("Game")
while run:
pygame.time.delay(tick)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
#other game code which controls character movement functions
redrawGameWindow()
pygame.quit()
quit()
我认为您将列表放入 blit 中,这会产生错误。应该是:
window.blit(bg[0], (0, 0)) #draws Window Background
错误是由pygame.Surface(bg)
分别bygame.Surface(char)
引起的,其中bg
和char
是对象列表。另一个 Surface 甚至 Surface 对象列表都没有 pygame.Surface
的构造函数。
注意你有一个背景列表和一个字符列表
bg = [ pygame.image.load("pygame/gameBackground.png") ] char = [ pygame.image.load("pygame/characterStandingRight.png") ]
要访问列表中的对象,您必须使用索引运算符(例如 char[0]
)。 bg[0]
和 char[0]
是 pygame.Surface
objects and can be used directly in the method blit()
。例如:
def redrawGameWindow():
window.blit(bg[0], (0, 0))
window.blit(char[0], (X, Y))
pygame.display.update()
如果您只需要一个 pygame.Surface
,则必须跳过 square brackets
(例如 bg = pygame.image.load("pygame/gameBackground.png")
)。
bg = pygame.image.load("pygame/gameBackground.png")
char = pygame.image.load("pygame/characterStandingRight.png")
def redrawGameWindow():
window.blit(bg, (0, 0))
window.blit(char, (X, Y))
pygame.display.update()