对于一个游戏,您制作的所有需要刷新的东西都需要在主游戏循环中,您的问题是,您是否在该游戏循环之外绘制图像,这意味着它被绘制一次然后被清除并且永远不会再次绘制。
要修复你的代码,你会这样写:
import pygame
pygame.init()
# screen
screen = pygame.display.set_mode((480, 700))
# 1.load_image
bg = pygame.image.load("./images/background.png")
while True:
# 2.blit
screen.blit(bg, (0, 0))
# 3.update
pygame.display.update()
pygame.quit()
但请注意bg=pygame.image... 是如何在循环外的,这是因为如果它在循环内,它会在每次循环发生时创建该图像的新实例。
主游戏循环的工作原理是循环遍历所有函数和其他内容,然后一次又一次地循环。
游戏循环是fps 的工作方式,基本上它是衡量游戏循环每秒发生多少次。
确保每当您在循环中执行任何操作时,它实际上都有一个位置,例如加载图像没有,但更新播放器在屏幕上的位置。
如果您想了解可应用于大多数游戏引擎的优秀游戏循环,此网站将为您提供帮助。但是在使用 pygame 时不要看最复杂的那个,因为它不是为此而构建的。 Fix Your Timestep!
但是您最初的图像未加载问题并非如此,它正在加载但您以错误的方式绘制图像,如果您想要有关 pygame 的基本教程,请观看这些视频:Game Development in Python 3 With PyGame - 1 - Intro
一个更好的系统来简化开发
import pygame
bg = None
def load_resources():
bg = pygame.image.load("./images/background.png")
# all other resources
def render():
screen.blit(bg, (0,0))
def update():
# all logic updates for example movement of entities.
### start of game
load_resources()
while True:
update()
render()
pygame.display.update()
pygame.quit()