我正在制作一款平台游戏,我正在尝试创建世界,但是 sky.png 没有出现,我尝试了其他 png,但它仍然不起作用,请帮助我作为初学者。
我插入了位置和坐标,但它没有出现,而是黑屏
这是我的代码:
import sys
import pygame
class Game:
def __init__(self):
pygame.init()
pygame.display.set_caption('Shadow samurai')
self.screen = pygame.display.set_mode((1200,800))
self.clock = pygame.time.Clock()
self.img = pygame.image.load('assets/sky.png')
self.img_pos = (160, 260)
self.movement = [False, False]
def run(self):
while True:
self.screen.blit(self.img, self.img_pos)
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP:
self.movement[0] = True
if event.key == pygame.K_DOWN:
self.movement[1] = True
pygame.display.update()
self.clock.tick(60)
Game().run()
如评论中所述,可以通过将显示更新行放在循环内而不是循环外来解决此问题。为了保持代码整洁和缩进一致(正如评论中所建议的那样),您可以使用 Black 或其他自动 Python 代码格式化程序来为您完成这项工作(您甚至可以在 VS Code 中将 Black 设置为默认格式化程序,在保存时激活格式以真正使其变得简单)。应用黑色并在循环内移动显示更新(和时钟刻度)线会产生以下代码,该代码显示 sky.png 图像(假设它存在于用于加载它的目录中):
import sys
import pygame
class Game:
def __init__(self):
pygame.init()
pygame.display.set_caption("Shadow samurai")
self.screen = pygame.display.set_mode((1200, 800))
self.clock = pygame.time.Clock()
self.img = pygame.image.load("assets/sky.png")
self.img_pos = (160, 260)
self.movement = [False, False]
def run(self):
while True:
self.screen.blit(self.img, self.img_pos)
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP:
self.movement[0] = True
if event.key == pygame.K_DOWN:
self.movement[1] = True
pygame.display.update()
self.clock.tick(60)
Game().run()