首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PyGame不会将图像加载到窗口并立即崩溃

PyGame不会将图像加载到窗口并立即崩溃
EN

Stack Overflow用户
提问于 2021-08-05 08:53:59
回答 1查看 47关注 0票数 0

所以我用python和pygame做了一个游戏,我有一些资源作为角色。我把所有代码都写对了。但当我运行该程序时,没有任何图像显示,并且窗口立即崩溃。

代码语言:javascript
复制
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

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

EN

回答 1

Stack Overflow用户

发布于 2021-08-05 09:31:09

这是一个缩进错误。

代码语言:javascript
复制
    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()。(假设您希望人们能够轻松退出您的游戏。

代码语言:javascript
复制
if __name__ == "__main__":
    main

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

代码语言:javascript
复制
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(),则它不会执行任何操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68663447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档