微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

关于pygame使用pyinstaller“Fail to execute script”错误

如何解决关于pygame使用pyinstaller“Fail to execute script”错误

我只是做一个小游戏。并希望将其制作为 .exe 文件

所以我使用 pyinstaller -w -F ."file_name"。但是“无法执行脚本错误”。

我尝试制作游戏并将其发送给我的朋友,但同样的错误不断发生。

不知道为什么在没有导入和使用外部图像时会出现这个问题。

需要你的帮助。我可以请你帮忙吗。

这是一个代码

import pygame
from random import *

def setup(level):
    global display_time
    display_time = 10 - (level // 3)
    display_time = max(display_time,5)


    number_count = (level //3) +5
    number_count = min(number_count,20)

    shuffle_grid(number_count)

def shuffle_grid(number_count):
    rows = 5
    columns = 9

    cell_size = 130 
    button_size = 110

    screen_left_margin = 55
    screen_top_margin = 20



    grid = [[0 for col in range(columns)] for row in range(rows)] # 5*9

    number = 1
    while number <= number_count:
        row_idx = randrange(0,rows) 
        col_idx = randrange(0,columns) 

        if grid[row_idx][col_idx] == 0:
            grid[row_idx][col_idx] =  number 
            number += 1

            center_x = screen_left_margin + (col_idx * cell_size) + (cell_size / 2)
            center_y = screen_top_margin + (row_idx * cell_size) + (cell_size / 2)
            button = pygame.Rect(0,button_size,button_size)
            button.center = (center_x,center_y)

            number_buttons.append(button)
    print(grid)

def display_start_screen():
    pygame.draw.circle(screen,WHITE,start_button.center,60,5)

    msg = game_font.render(f"{curr_level}",True,WHITE)
    msg_rect = msg.get_rect(center =start_button.center)
    screen.blit(msg,msg_rect)

def display_game_screen():
    global hidden

    if not hidden:
        elapsed_time = (pygame.time.get_ticks() - start_ticks) / 1000
        if elapsed_time > display_time:
            hidden = True

    for idx,rect in enumerate(number_buttons,start = 1):
        if hidden:
            pygame.draw.rect(screen,rect)
        else:
            cell_text = game_font.render(str(idx),WHITE)
            text_rect = cell_text.get_rect(center = rect.center)
            screen.blit(cell_text,text_rect)

def check_buttons(pos):
    global start,start_ticks
    if start:
        check_number_buttons(pos)
    elif start_button.collidepoint(pos):
        start = True
        start_ticks = pygame.time.get_ticks()

def check_number_buttons(pos):
    global start,hidden,curr_level

    for button in number_buttons:
        if button.collidepoint(pos):
            if button == number_buttons[0]:
                print("Correct!")
                del number_buttons[0]
                if not hidden:
                    hidden = True
            else:
                game_over()
            break
    if len(number_buttons) == 0:
        start = False
        hidden = False
        curr_level += 1
        setup(curr_level)

def game_over():
    global running
    running = False
    msg1 = game_font.render(f"Your level is {curr_level}",WHITE)
    msg1_rect = msg1.get_rect(center =(screen_width/2,screen_height/2))
    msg2 = game_font.render(f"GAME OVER",RED)
    msg2_rect = msg2.get_rect(center =(screen_width/2,screen_height/3))
    screen.fill(BLACK)
    screen.blit(msg1,msg1_rect)
    screen.blit(msg2,msg2_rect)

pygame.init()
screen_width = 1280
screen_height = 720
screen = pygame.display.set_mode((screen_width,screen_height))
pygame.display.set_caption("Memory Game")
game_font = pygame.font.Font(None,120)

start_button = pygame.Rect(0,120,120)
start_button.center = (120,screen_height- 120)

BLACK = (0,0)
WHITE = (255,255,255)
RED = (255,0)

number_buttons = []
curr_level = 1 
display_time = None 
start_ticks = None 

start = False

hidden = False

setup(curr_level)

running = True 
while running :
    click_pos = None
 
    for event in pygame.event.get(): 
        if event.type == pygame.QUIT: 
            running = False 
        elif event.type == pygame.MOUSEBUTTONUP: 
            click_pos = pygame.mouse.get_pos()
            print(click_pos)
    
    screen.fill(BLACK)
    if start: 
        display_game_screen()
    else:
        display_start_screen()
    
    if click_pos:
        check_buttons(click_pos)
    
    pygame.display.update()

pygame.time.delay(5000)

pygame.quit()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。