Программа Pyinstaller перестает отвечать сразу после запуска - PullRequest
0 голосов
/ 26 апреля 2020

Я сделал простую игру в понг и хотел преобразовать ее в exe с помощью pyinstaller.

Я устанавливаю pyinstaller с помощью команды "pip install pyinstaller" в командной строке, и она отлично устанавливается, затем я запускаю это для моей игры в понг с использованием команды "pyinstaller pong.py", и она конвертируется без каких-либо ошибок.

Однако, когда я пытаюсь запустить exe, открывается окно правильного размера, но все, что у меня есть черный экран, через несколько секунд он говорит, что программа перестала работать, и закрывает его

Вот мой код:

import pygame
pygame.init()
clock = pygame.time.Clock()
window = pygame.display.set_mode((1200, 800))
pygame.display.set_caption("PONG")
font = pygame.font.SysFont("comicsans", 30, True)
title_font = pygame.font.SysFont("comicsans", 100, True)
def intro():
    global bot_speed
    global ball_speed
    intro = True
    while intro:
        for event in pygame.event.get():
            print(event)
        if event.type == pygame.QUIT:
            pygame.quit()
            quit()
        clock.tick(20)
        mouse = pygame.mouse.get_pos()
        click = pygame.mouse.get_pressed()
        window.fill((0,0,0))
        title = title_font.render("PONG", 1, (255,255,255))
        window.blit(title, (490, 200))
        pygame.draw.rect(window, (255,255,255), (500, 400, 200, 50))
        pygame.draw.rect(window, (0,0,0), (510, 410, 180, 30))
        easy = font.render("Easy", 1, (255,255,255))
        window.blit(easy, (575, 415))
        pygame.draw.rect(window, (255,255,255), (500, 500, 200, 50))
        pygame.draw.rect(window, (0,0,0), (510, 510, 180, 30))
        medium = font.render("Medium", 1, (255,255,255))
        window.blit(medium, (555, 515))
        pygame.draw.rect(window, (255,255,255), (500, 600, 200, 50))
        pygame.draw.rect(window, (0,0,0), (510, 610, 180, 30))
        hard = font.render("Hard", 1, (255,255,255))
        window.blit(hard, (575, 615))
        if 700 > mouse[0] > 500 and 450 > mouse[1] > 400:
            if click[0] == 1:
                bot_speed = 0.5
                ball_speed = 1
                intro = False
                game_loop()
        if 700 > mouse[0] > 500 and 550 > mouse[1] > 500:
            if click[0] == 1:
                bot_speed = 1
                ball_speed = 1.5
                intro = False
                game_loop()
        if 700 > mouse[0] > 500 and 650 > mouse[1] > 600:
            if click[0] == 1:
                bot_speed = 1.9
                ball_speed = 2
                intro = False
                game_loop()
        pygame.display.update()
def game_loop():
    global bot_speed
    global ball_speed
    player_score = 0
    bot_score = 0
    direction = "playerup"
    game = True
    ball_x = 600
    ball_y = 390
    player_y = 350
    bot_y = 350
    while game:
        window.fill((0,0,0))
        for event in pygame.event.get():
            print(event)
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()
        clock.tick(200)
        mouse = pygame.mouse.get_pos()
        pygame.draw.rect(window, (255,255,255), (1150, player_y, 20, 100))
        pygame.draw.rect(window, (255,255,255), (50, bot_y, 20, 100))
        pygame.draw.rect(window, (255,255,255), (ball_x, ball_y, 20, 20))
        if mouse[1] > player_y:
            if player_y < 700:
                player_y += 1
        elif mouse[1] < player_y:
            if player_y > 0:
                player_y -= 1
        if ball_x >= 1200:
            bot_score += 1
            ball_x = 600
            ball_y = 390
            player_y = 350
            bot_y = 350
        elif ball_x <= 0:
            player_score += 1
            ball_x = 600
            ball_y = 390
            player_y = 350
            bot_y = 350
        if direction == "playerup":
            if ball_y > 0:
                ball_x += ball_speed
                ball_y -= ball_speed
                if ball_y + 20 > bot_y:
                    if bot_y < 700:
                        bot_y += bot_speed
                if ball_y - 20 < bot_y:
                    if bot_y > 0:
                        bot_y -= bot_speed
            else:
                direction = "playdown"
        elif direction == "playdown":
            if ball_y < 780:
                ball_x += ball_speed
                ball_y += ball_speed
                if ball_y + 20 > bot_y:
                    if bot_y < 700:
                        bot_y += bot_speed
                if ball_y - 20 < bot_y:
                    if bot_y > 0:
                        bot_y -= bot_speed
            else:
                direction = "playerup"
        elif direction == "botup":
            if ball_y > 0:
                ball_x -= ball_speed
                ball_y -= ball_speed
                if ball_y + 20 > bot_y:
                    if bot_y < 700:
                        bot_y += bot_speed
                if ball_y - 20 < bot_y:
                    if bot_y > 0:
                        bot_y -= bot_speed
            else:
                direction = "botdown"
        elif direction == "botdown":
            if ball_y < 780:
                ball_x -= ball_speed
                ball_y += ball_speed
                if ball_y + 20 > bot_y:
                    if bot_y < 700:
                        bot_y += bot_speed
                if ball_y - 20 < bot_y:
                    if bot_y > 0:
                        bot_y -= bot_speed
            else:
                direction = "botup"
        if 1135 >= ball_x >= 1130 and ball_y + 20 >= player_y >= ball_y - 80:
            if direction == "playerup":
                direction = "botup"
            if direction == "playdown":
                direction = "botdown"
        if 65 <= ball_x <= 70 and ball_y + 20 >= bot_y >= ball_y - 80:
            if direction == "botup":
                direction = "playerup"
            if direction == "botdown":
                direction = "playdown"
        player = font.render("PLAYER", 1, (255,255,255))
        window.blit(player, (1050, 50))
        player = font.render("BOT", 1, (255,255,255))
        window.blit(player, (50, 50))
        score = str(player_score)
        play_score = font.render(score, 1, (255,255,255))
        score = str(bot_score)
        botscore = font.render(score, 1,(255,255,255))
        window.blit(botscore, (100, 700))
        window.blit(play_score, (1100, 700))
intro()

Я пробовал некоторые другие программы, и они делают то же самое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...