我使用pyinstaller使我的文件成为exe,但每次打开exe时,它都会给我一个错误,即Failed to execute main script
。我尝试了很多事情,询问了其他人,得出的结论是没有识别资产。那么,我该如何获得它呢?请确定资产,这样我就可以运行exe了
这是我的游戏代码
import random
import math
import time
from pygame import mixer
pygame.init()
#width, height
screen = pygame.display.set_mode((1000, 800))
background = pygame.image.load(r"C:\Users\35387\Documents\Python Coding\Shoot Deannes\back.png")
mixer.music.load(r"C:\Users\35387\Documents\Python Coding\Shoot Deannes\Song.mp3")
mixer.music.play(-1)
title = pygame.display.set_caption("Shoot Deannes")
icon = pygame.image.load(r"C:\Users\35387\Documents\Python Coding\Shoot Deannes\Deanne GYypsu python.png")
pygame.display.set_icon(icon)
lov = pygame.image.load(r"C:\Users\35387\Documents\Python Coding\Shoot Deannes\Lov.png")
show_image = False
playerImg = pygame.image.load(r"C:\Users\35387\Documents\Python Coding\Shoot Deannes\Python Player.png")
playerX = 450
playerY = 580
playerX_change = 0
playerY_change = 0
enemyImg = []
enemyX = []
enemyY = []
enemyX_change = []
enemyY_change = []
num_of_enemies = 5
for i in range(num_of_enemies):
enemyImg.append(pygame.image.load(r"C:\Users\35387\Documents\Python Coding\Shoot Deannes\Pygame Enemy D.png"))
enemyX.append(random.randint(0, 935))
enemyY.append(random.randint(40, 140))
enemyX_change.append(1.5)
enemyY_change.append(random.uniform(0.3, 0.8))
bulletImg = pygame.image.load(r"C:\Users\35387\Documents\Python Coding\Shoot Deannes\Shoot.png")
bulletX = 0
bulletY = 0
bulletX_change = 0
bulletY_change = 7
bullet_state = "ready"
score_value = 0
font = pygame.font.Font("freesansbold.ttf", 32)
textX = 20
textY = 20
def show_score(x, y):
score = font.render("Landed shots :" + str(score_value), True, (255, 192, 203))
screen.blit(score, (x, y))
def player(x, y):
screen.blit(playerImg, (x, y))
def enemy(x, y, i ):
screen.blit(enemyImg[i], (x, y))
def fire_bullet(x, y):
global bullet_state
bullet_state = "fire"
screen.blit(bulletImg, (x + 16, y + 10))
def isCollision(enemyX, enemyY, bulletX, bulletY):
distance = math.sqrt(math.pow(enemyX - bulletX,2)) + (math.pow(enemyY - bulletY,2))
if distance < 50:
return True
else:
return False
def isCollision2(enemyX, enemyY, playerX, playerY):
distance = math.sqrt(math.pow(enemyX - playerX,2)) + (math.pow(enemyY - playerY,2))
if distance < 70:
return True
else:
return False
running = True
while running:
screen.fill((0,0,0))
screen.blit(background, (0, 0))
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
playerX_change = -3.5
if event.key == pygame.K_RIGHT:
playerX_change = 3.5
if event.key == pygame.K_SPACE:
if bullet_state is "ready":
bullet_sound = mixer.Sound(r"C:\Users\35387\Documents\Python Coding\Shoot Deannes\ORG.wav")
bullet_sound.play()
bulletX = playerX
bulletY = playerY
fire_bullet(bulletX, bulletY)
if event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
playerX_change = 0
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_DOWN:
playerY_change = 2.5
if event.key == pygame.K_UP:
playerY_change = -2.5
if event.type == pygame.KEYUP:
if event.key == pygame.K_DOWN or event.key == pygame.K_UP:
playerY_change = 0
playerX += playerX_change
playerY += playerY_change
if playerX <=0:
playerX = 0
elif playerX >=935:
playerX = 935
for i in range(num_of_enemies):
enemyX[i] += enemyX_change[i]
enemyY[i] += enemyY_change[i]
if enemyX[i] <=0:
enemyX_change[i] = 1.5
enemyY[i] += enemyY_change[i]
elif enemyX[i] >=935:
enemyX_change[i] = -1.5
enemyY[i] += enemyY_change[i]
collision = isCollision(enemyX[i], enemyY[i], bulletX, bulletY)
if collision:
bulletY = 580
bullet_state = "ready"
score_value += 1
enemyX[i] = random.randint(0, 1000)
enemyY[i] = random.randint(40, 140)
collision2 = isCollision2(enemyX[i], enemyY[i], playerX, playerY)
if collision2:
playerX = 4000
playerY = 4000
gameover_sound = mixer.Sound(r"C:\Users\35387\Documents\Python Coding\Shoot Deannes\GAME OVER.wav")
gameover_sound.play()
show_image = True
if show_image:
pygame.display.set_mode((480, 910)).blit(lov, (0, 0))
enemy(enemyX[i], enemyY[i], i)
if bulletY <=0 :
bulletY =580
bullet_state = "ready"
if bullet_state is "fire":
fire_bullet(bulletX, bulletY)
bulletY -= bulletY_change
player(playerX, playerY)
show_score(textX, textY)
pygame.display.update()
这也是我第一次做这种事情,所以请不要介意我的沉默。我将所有资产和这个名为main.py的文件放在同一个文件夹中,无法成功将其转换为exe
将资产与可执行文件放在同一文件夹中。(或者,如果它希望资产位于子文件夹中,则将它们放在那里)
相关问题 更多 >
编程相关推荐