PyGame 不会在窗口上加载图像并立即崩溃



所以我用pygame在python中制作了一个游戏,我有一些资产作为角色。我把所有东西都编对了。但当我运行该程序时,没有任何图像显示,窗口立即崩溃。

import pygame
import os
import random
WIDTH, HEIGHT = 900, 500
WIN = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Fly game")
FPS = 60
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
RED = (255, 0, 0)
YELLOW = (255, 255, 0)
FPS = 60
VEL = 5
BORDER = pygame.Rect(WIDTH//2 - 5, 0, 10, HEIGHT)
PLAYER_WIDTH, PLAYER_HEIGHT = 55, 40
SKY = pygame.image.load(
os.path.join('C:\Users\Kostadin Klemov\Desktop\Programms\Python\projects\Fly game\Assets\SKY.jpg')), (WIDTH, HEIGHT)

JETPACK_MAN_IMAGE = pygame.image.load(
os.path.join('C:\Users\Kostadin Klemov\Desktop\Programms\Python\projects\Fly game\Assets\JETPACK_MAN.jpg'))
JETPACK_MAN = pygame.transform.scale(
JETPACK_MAN_IMAGE, (PLAYER_WIDTH, PLAYER_HEIGHT))
FLY_IMAGE = pygame.image.load(
os.path.join('C:\Users\Kostadin Klemov\Desktop\Programms\Python\projects\Fly game\Assets\FLY.png'))
FLY = pygame.transform.scale(
FLY_IMAGE, (PLAYER_WIDTH, PLAYER_HEIGHT))

def draw_window(jetpack, fly):
WIN.blit(SKY, (0, 0))
pygame.draw.rect(WIN, BLACK, BORDER)

WIN.blit(JETPACK_MAN, (jetpack.x, jetpack.y))
WIN.blit(FLY, (fly.x, fly.y))
pygame.display.update()

def main():
jetpack = pygame.Rect(225, 250, PLAYER_WIDTH, PLAYER_HEIGHT)
fly = pygame.Rect(675, 250, PLAYER_WIDTH, PLAYER_HEIGHT)
clock = pygame.time.Clock()
run = True
while run:
clock.tick(FPS)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
pygame.quit()

draw_window(jetpack, fly)
main()
if __name__ == "__main__":
main

没有出现任何错误,所以我不知道出了什么问题。如果可以的话,请检查代码并尝试修复它!

这是一个缩进错误。

while run:
clock.tick(FPS)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
pygame.quit()
# <---- INDENTATION
# this should be in the while loop, the "game loop", not in the quit condition
draw_window(jetpack, fly)

另外,您可能不想在程序终止后调用main()。(假设你希望人们能够轻松退出你的游戏。

if __name__ == "__main__":
main

这个main什么都不做,它需要被调用,就像main()一样。用括号。这不是";立即崩溃;它只是没有运行任何东西。

SKY = pygame.image.load(
os.path.join('C:\Users\Kostadin Klemov\Desktop\Programms\Python\projects\Fly game\Assets\SKY.jpg')), (WIDTH, HEIGHT)

结尾处的(宽度、高度)非常可疑。假设您只想将图像放在SKY变量中,而不是另一个随机元组中。

另一方面,如果将完整路径作为参数,os.path.join()将不起任何作用。

最新更新