制作游戏,无法导入背景图像或精灵

2024-05-16 18:44:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一个新的程序员,试图做一个平板战斗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()

Tags: toruneventpngmydisplaybewindow
2条回答

我想你是把列表放到blit中,这会产生一个错误。应该是:

window.blit(bg[0], (0, 0)) #draws Window Background

错误是由pygame.Surface(bg)分别bygame.Surface(char)引起的,其中bgchar是对象列表。没有其他曲面的^{}构造函数,甚至没有曲面对象列表

注意你有一个背景列表和一个字符列表

bg   = [ pygame.image.load("pygame/gameBackground.png") ]
char = [ pygame.image.load("pygame/characterStandingRight.png") ]

要访问列表中的对象,必须使用index操作符(例如char[0]bg[0]char[0]^{}对象,可以直接在方法^{}中使用。e、 g.:

def redrawGameWindow():
    window.blit(bg[0], (0, 0))
    window.blit(char[0], (X, Y))
    pygame.display.update()

如果您只需要一个^{},则必须跳过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()

相关问题 更多 >