I just compiled a file with PyInstaller and when I run it, it says:
Error: Program stoped working
My program.py (I know it is very big and it is commented in portuguese):
# -*- coding: utf-8 -*-
from Crypto.Cipher import AES
import base64
import os
import pygame, sys, easygui, time, datetime
from socket import *
coinse=0
def resource_path(relative):
return os.path.join(
os.environ.get(
"_MEIPASS2",
os.path.abspath(".")
),
relative
)
def encryption(data):
BLOCK_SIZE = 32
PADDING = '{'
pad = lambda s: s + (BLOCK_SIZE - len(s) % BLOCK_SIZE) * PADDING
EncodeAES = lambda c, s: base64.b64encode(c.encrypt(pad(s)))
secret = "g5774b1111fdd3ty"
cipher = AES.new(secret)
encoded = EncodeAES(cipher, str(data))
return encoded
def decryption(data):
BLOCK_SIZE = 32
PADDING = '{'
secret = "g5774b1111fdd3ty"
DecodeAES = lambda c, e: c.decrypt(base64.b64decode(e)).rstrip(PADDING)
cipher = AES.new(secret)
decoded = DecodeAES(cipher, data)
return decoded
def asserver():
global coinse
address = ('0.0.0.0', 7000)
server = socket(AF_INET, SOCK_STREAM) #SERVER SOCKET
server.bind(address) #SERVER SOCKET
pos=[10,10]
pos2=[10, 10]
journey=[10,10]
white=(255,255,255)
red=(170, 20, 0)
black=(0, 0, 0)
pygame.init()
screen=pygame.display.set_mode([700,500])
screen.fill(white)
pygame.display.flip()
pygame.display.set_caption("Multiplayer Game")
health=100 # Vida
health2=100 #Vida do oponente
cool=datetime.datetime.now() # Variável usada para o cool-down
cool2=datetime.datetime.now()
cool3=datetime.datetime.now()
cool4=datetime.datetime.now()
bef=datetime.datetime.now() # o mesmo que cool(2)(3)(4)
bef2=datetime.datetime.now()
bef3=datetime.datetime.now()
bef4=datetime.datetime.now()
draw=False #Variável de valor True enquanto o player1 usa um/uma poder/abilidade
draw2=False
draw3=False
draw4=False
toatk=False #to: variáveis que convertem para draw(2)(3)(4)
todef=False
toinv=False
tosh=False
atk=False #Variáveis de valor True enquanto o player2 usa um/uma poder/abilidade
deff=False
inv=False
sh=False
loop2=True
loop=True
towin=False
won=False
data=None
font=pygame.font.Font(None, 25)
font2=pygame.font.Font(None, 35)
screen.fill([255,255,255])
screen.blit(font2.render("Press ENTER to start a game!", 1, (0,0,0)), [145, 230])
pygame.display.flip()
while loop2==True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
sys.exit()
elif event.type==pygame.KEYDOWN:
if event.key==pygame.K_RETURN:
loop2=False
break
server.listen(1)
server_socket, x = server.accept()
while loop==True:
print data
if won==" True":
screen.fill(white)
coinse=str(int(3000/health2))
if int(coinse)>60:
coinse="60"
easygui.msgbox("YOU LOST!\nYour enemy had "+str(int(health2))+" health left!\nYou earned "+coinse+"!")
break
if health2==0:
screen.fill(white)
coinse=str(int(health*2+50))
easygui.msgbox("YOU WON!\nYou had "+str(int(health))+" health left!\nYou earned "+coinse+" coins!")
towin=True
data=server_socket.recv(2048)
sending=str([pos[0], pos[1], toatk, int(health), todef, toinv, tosh, towin])
server_socket.send(sending)
data=data.strip("[").strip("]").split(",")
data[0]=int(data[0])
data[1]=int(data[1])
data[3]=int(data[3])
sh=data[6]
won=data[7]
inv=data[5]
pos2=[data[0], data[1]]
atk=data[2]
deff=data[4]
health2=data[3]
screen.fill(white)
if towin==True:
screen.fill(white)
pygame.display.flip()
break
if sh==" True":
black=(0,20,220)
else:
black=(0,0,0)
if deff==" True" and inv==" False":
black=(0,200,0)
elif deff==" False":
black=(0,0,0)
if atk==" True" and inv==" False":
bef2=datetime.datetime.now()
pygame.draw.circle(screen, [255,0,0], pos2, 48)
pygame.draw.circle(screen, [255,255,255], pos2, 45)
if draw2==True:
now=datetime.datetime.now()
if (now-bef2).seconds<5:
red=(0,200,0)
if not health>100:
health=health+0.01
else:
red=(170, 20, 0)
draw2=False
todef=False
if draw==True:
now=datetime.datetime.now()
if (now-bef).seconds<3:
pygame.draw.circle(screen, [255,0,0], pos, 48)
pygame.draw.circle(screen, [255,255,255], pos, 45)
else:
draw=False
toatk=False
if draw3==True:
now=datetime.datetime.now()
if (now-bef3).seconds<4:
pygame.draw.circle(screen, red, pos, 10)
pygame.draw.circle(screen, white, pos, 9)
else:
draw3=False
toinv=False
else:
pygame.draw.circle(screen, red, pos, 10)
if draw4==True:
now=datetime.datetime.now()
if (now-bef4).seconds<2:
red=(0,20,220)
else:
red=(170,20,0)
draw4=False
tosh=False
if inv==" True":
pass
else:
pygame.draw.circle(screen, black, pos2, 10)
screen.blit(font.render("Your Health: "+str(int(health)), 1, (0,0,0)), [10,10])
screen.blit(font.render("Enemy Health: "+str(health2), 1, (0,0,0)), [300, 10])
if (datetime.datetime.now()-cool).seconds>10:
screen.blit(font.render("Attack", 1, (0,255,0)), [300, 50])
else:
screen.blit(font.render("Attack", 1, (255,0,0)), [300, 50])
if (datetime.datetime.now()-cool2).seconds>15:
screen.blit(font.render("Heal", 1, (0,255,0)), [400, 50])
else:
screen.blit(font.render("Heal", 1, (255,0,0)), [400, 50])
if (datetime.datetime.now()-cool3).seconds>25:
screen.blit(font.render("Invisibility", 1, (0,255,0)), [470, 50])
else:
screen.blit(font.render("Invisibility", 1, (255,0,0)), [470, 50])
if (datetime.datetime.now()-cool4).seconds>15:
screen.blit(font.render("Shield", 1, (0,255,0)), [600, 50])
else:
screen.blit(font.render("Shield", 1, (255,0,0)), [600, 50])
pygame.display.flip()
if journey[0]> pos[0] and journey[1] > pos[1]:
pos[0]=pos[0]+1
pos[1]=pos[1]+1
elif journey[0]< pos[0] and journey[1] < pos[1]:
pos[0]=pos[0]-1
pos[1]=pos[1]-1
elif journey[0]> pos[0] and journey[1] < pos[1]:
pos[0]=pos[0]+1
pos[1]=pos[1]-1
elif journey[0]< pos[0] and journey[1] > pos[1]:
pos[0]=pos[0]-1
pos[1]=pos[1]+1
elif journey[0]> pos[0]:
pos[0]=pos[0]+1
elif journey[0]< pos[0]:
pos[0]=pos[0]-1
elif journey[1]> pos[1]:
pos[1]=pos[1]+1
elif journey[1]< pos[1]:
pos[1]=pos[1]-1
if pos[0]-pos2[0] < 1 and pos[0]-pos2[0] > -51 and pos[1]-pos2[1] < 1 and pos[1]-pos2[1] > -51 and atk==" True" and tosh==False:
health=health-0.04
if pos[0]-pos2[0] < 51 and pos[0]-pos2[0] > 0 and pos[1]-pos2[1] < 51 and pos[1]-pos2[1] > 0 and atk==" True" and tosh==False:
health=health-0.04
if pos[0]-pos2[0] < 51 and pos[0]-pos2[0] > 0 and pos[1]-pos2[1] < 1 and pos[1]-pos2[1] > -51 and atk==" True" and tosh==False:
health=health-0.04
if pos[0]-pos2[0] < 1 and pos[0]-pos2[0] > -51 and pos[1]-pos2[1] < 51 and pos[1]-pos2[1] > 0 and atk==" True" and tosh==False:
health=health-0.04
for event in pygame.event.get():
if event.type==pygame.QUIT:
pygame.quit()
loop=False
elif event.type==pygame.MOUSEBUTTONDOWN:
if event.button==1:
journey=event.pos
elif event.type==pygame.KEYDOWN:
if event.key==pygame.K_q:
if (datetime.datetime.now()-cool).seconds>10:
toatk=True
draw=True
bef=datetime.datetime.now()
cool=datetime.datetime.now()
else:
pass
if event.key==pygame.K_w:
if (datetime.datetime.now()-cool2).seconds>15:
todef=True
draw2=True
bef2=datetime.datetime.now()
cool2=datetime.datetime.now()
else:
pass
if event.key==pygame.K_e:
if (datetime.datetime.now()-cool3).seconds>25:
toinv=True
draw3=True
bef3=datetime.datetime.now()
cool3=datetime.datetime.now()
else:
pass
if event.key==pygame.K_r:
if (datetime.datetime.now()-cool4).seconds>15:
tosh=True
draw4=True
bef4=datetime.datetime.now()
cool4=datetime.datetime.now()
else:
pass
def asclient():
global coinse
pos=[10,10] #posição
pos2=[10,10] #posição do inimigo
journey=[10,10] #posição final
white=(255,255,255) #cor do fundo
red=(170, 20, 0) # cor do player1
black=(0, 0, 0) #cor do player2
pygame.init()
screen=pygame.display.set_mode([700,500])
screen.fill(white)
pygame.display.flip()
pygame.display.set_caption("Multiplayer Game")
#CLIENT SOCKET
client_socket = socket(AF_INET, SOCK_STREAM)
#CLIENT SOCKET
health=100 # Vida
health2=100 #Vida do oponente
cool=datetime.datetime.now() # Variável usada para o cool-down
cool2=datetime.datetime.now()
cool3=datetime.datetime.now()
cool4=datetime.datetime.now()
bef=datetime.datetime.now() # o mesmo que cool(2)(3)(4)
bef2=datetime.datetime.now()
bef3=datetime.datetime.now()
bef4=datetime.datetime.now()
draw=False #Variável de valor True enquanto o player1 usa um/uma poder/abilidade
draw2=False
draw3=False
draw4=False
toatk=False #to: variáveis que convertem para draw(2)(3)(4)
todef=False
toinv=False
tosh=False
atk=False #Variáveis de valor True enquanto o player2 usa um/uma poder/abilidade
deff=False
inv=False
sh=False
loop2=True
loop=True
towin=False
won=False
data=None
font=pygame.font.Font(None, 25) #Tipo de Letra pequeno
font2=pygame.font.Font(None, 35) #Tipo de Letra grande
screen.fill([255,255,255])
screen.blit(font2.render("Press ENTER to join a game!", 1, (0,0,0)), [150, 230])
pygame.display.flip()
while loop2==True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
sys.exit()
elif event.type==pygame.KEYDOWN:
if event.key==pygame.K_RETURN:
address=easygui.multenterbox("Info:", fields=("IP:", "PORT:"))
address[1]=int(address[1])
address=tuple(address)
loop2=False
break
client_socket.connect(address)
while loop==True:
if won==" True":
screen.fill(white)
coinse=str(int(3000/health2))
if int(coinse)>60:
coinse="60"
easygui.msgbox("YOU LOST!\nYour enemy had "+str(int(health2))+" health left!\nYou earned "+coinse+"!")
break
if health2==0:
screen.fill(white)
coinse=str(int(health*2+50))
easygui.msgbox("YOU WON!\nYou had "+str(int(health))+" health left!\nYou earned "+coinse+" coins!")
towin=True
sending=str([pos[0], pos[1], toatk, int(health), todef, toinv, tosh, towin])
client_socket.send(sending)
data=client_socket.recv(2048)
data=data.strip("[").strip("]").split(",")
data[0]=int(data[0])
data[1]=int(data[1])
data[3]=int(data[3])
sh=data[6]
deff=data[4]
pos2=[data[0], data[1]]
atk=data[2]
inv=data[5]
won=data[7]
health2=data[3]
screen.fill(white)
if towin==True:
screen.fill(white)
pygame.display.flip()
break
if sh==" True":
black=(0,20,220)
if atk==" True" and inv==" False":
pygame.draw.circle(screen, [255,0,0], pos2, 48)
pygame.draw.circle(screen, [255,255,255], pos2, 45)
if draw==True:
now=datetime.datetime.now()
if (now-bef).seconds<3:
pygame.draw.circle(screen, [255,0,0], pos, 48)
pygame.draw.circle(screen, [255,255,255], pos, 45)
else:
draw=False
toatk=False
if deff==" True" and inv==" False":
black=(0,200,0)
else:
black=(0,0,0)
if draw2==True:
now=datetime.datetime.now()
if (now-bef2).seconds<5:
red=(0,200,0)
if not health>100:
health=health+0.01
else:
red=(170, 20, 0)
draw2=False
todef=False
if draw3==True:
now=datetime.datetime.now()
if (now-bef3).seconds<4:
pygame.draw.circle(screen, red, pos, 10)
pygame.draw.circle(screen, white, pos, 9)
else:
draw3=False
toinv=False
else:
pygame.draw.circle(screen, red, pos, 10)
if draw4==True:
now=datetime.datetime.now()
if (now-bef4).seconds<2:
red=(0,20,220)
else:
red=(170,20,0)
draw4=False
tosh=False
if inv==" True":
pass
else:
pygame.draw.circle(screen, black, pos2, 10)
screen.blit(font.render("Your Health: "+str(int(health)), 1, (0,0,0)), [10,10])
screen.blit(font.render("Enemy Health: "+str(health2), 1, (0,0,0)), [300, 10])
if (datetime.datetime.now()-cool).seconds>10:
screen.blit(font.render("Attack", 1, (0,255,0)), [300, 50])
else:
screen.blit(font.render("Attack", 1, (255,0,0)), [300, 50])
if (datetime.datetime.now()-cool2).seconds>15:
screen.blit(font.render("Heal", 1, (0,255,0)), [400, 50])
else:
screen.blit(font.render("Heal", 1, (255,0,0)), [400, 50])
if (datetime.datetime.now()-cool3).seconds>25:
screen.blit(font.render("Invisibility", 1, (0,255,0)), [470, 50])
else:
screen.blit(font.render("Invisibility", 1, (255,0,0)), [470, 50])
if (datetime.datetime.now()-cool4).seconds>15:
screen.blit(font.render("Shield", 1, (0,255,0)), [600, 50])
else:
screen.blit(font.render("Shield", 1, (255,0,0)), [600, 50])
pygame.display.flip()
if journey[0]> pos[0] and journey[1] > pos[1]:
pos[0]=pos[0]+1
pos[1]=pos[1]+1
elif journey[0]< pos[0] and journey[1] < pos[1]:
pos[0]=pos[0]-1
pos[1]=pos[1]-1
elif journey[0]> pos[0] and journey[1] < pos[1]:
pos[0]=pos[0]+1
pos[1]=pos[1]-1
elif journey[0]< pos[0] and journey[1] > pos[1]:
pos[0]=pos[0]-1
pos[1]=pos[1]+1
elif journey[0]> pos[0]:
pos[0]=pos[0]+1
elif journey[0]< pos[0]:
pos[0]=pos[0]-1
elif journey[1]> pos[1]:
pos[1]=pos[1]+1
elif journey[1]< pos[1]:
pos[1]=pos[1]-1
if pos[0]-pos2[0] < 1 and pos[0]-pos2[0] > -51 and pos[1]-pos2[1] < 1 and pos[1]-pos2[1] > -51 and atk==" True" and tosh==False:
health=health-0.04
if pos[0]-pos2[0] < 51 and pos[0]-pos2[0] > 0 and pos[1]-pos2[1] < 51 and pos[1]-pos2[1] > 0 and atk==" True" and tosh==False:
health=health-0.04
if pos[0]-pos2[0] < 51 and pos[0]-pos2[0] > 0 and pos[1]-pos2[1] < 1 and pos[1]-pos2[1] > -51 and atk==" True" and tosh==False:
health=health-0.04
if pos[0]-pos2[0] < 1 and pos[0]-pos2[0] > -51 and pos[1]-pos2[1] < 51 and pos[1]-pos2[1] > 0 and atk==" True" and tosh==False:
health=health-0.04
for event in pygame.event.get():
if event.type==pygame.QUIT:
pygame.quit()
loop=False
elif event.type==pygame.MOUSEBUTTONDOWN:
if event.button==1:
journey=event.pos
elif event.type==pygame.KEYDOWN:
if event.key==pygame.K_q:
if (datetime.datetime.now()-cool).seconds>10:
toatk=True
draw=True
bef=datetime.datetime.now()
cool=datetime.datetime.now()
else:
pass
if event.key==pygame.K_w:
if (datetime.datetime.now()-cool2).seconds>15:
todef=True
draw2=True
bef2=datetime.datetime.now()
cool2=datetime.datetime.now()
else:
pass
if event.key==pygame.K_e:
if (datetime.datetime.now()-cool3).seconds>25:
toinv=True
draw3=True
bef3=datetime.datetime.now()
cool3=datetime.datetime.now()
else:
pass
if event.key==pygame.K_r:
if (datetime.datetime.now()-cool4).seconds>15:
tosh=True
draw4=True
bef4=datetime.datetime.now()
cool4=datetime.datetime.now()
else:
pass
bypass=False
try:
s=open(resource_path("profile.data"), "r")
eprofile=s.readline()
s.close()
profile=decryption(eprofile).strip("[").strip("]").split(",")
coins=profile[0]
name=profile[1].strip(" ")
password=profile[2].strip(" ")
except:
bypass=True
coins=0
name=None
password=None
login=["", "", ""]
if not bypass==True:
login=easygui.multpasswordbox("Login:", fields=["Name:", "Password:"])
if not bypass==True and name==login[0] and password==login[1]:
pygame.init()
screen=pygame.display.set_mode([700,500])
pygame.display.set_caption("Multiplayer Game")
screen.fill([255,255,255])
pygame.display.flip()
fontt=pygame.font.Font(None, 30)
screen.blit(fontt.render("Start a game", 1, (0,0,0)), [20, 55])
screen.blit(fontt.render("Join a game", 1, (0,0,0)), [20, 95])
screen.blit(fontt.render(str(coins)+" coins", 1, (255,201,14)), [570, 460])
pygame.display.flip()
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
sys.exit()
elif event.type==pygame.MOUSEBUTTONDOWN:
if event.pos[0] > 14 and event.pos[0] < 143 and event.pos[1] > 51 and event.pos[1] < 71:
asserver()
e=encryption(int(coinse)+coins)
s=open("profile.data", "w")
s.write(e)
s.close()
coinse=0
if event.pos[0] > 14 and event.pos[0] < 143 and event.pos[1] > 92 and event.pos[1] < 108:
asclient()
e=encryption(int(coinse)+coins)
s=open("profile.data", "w")
s.write(e)
s.close()
coinse=0
elif bypass==True:
pygame.init()
screen=pygame.display.set_mode([700,500])
pygame.display.set_caption("Multiplayer Game")
screen.fill([255,255,255])
pygame.display.flip()
fontt=pygame.font.Font(None, 30)
screen.blit(fontt.render("Start a game", 1, (0,0,0)), [20, 55])
screen.blit(fontt.render("Join a game", 1, (0,0,0)), [20, 95])
screen.blit(fontt.render(str(coins)+" coins", 1, (255,201,14)), [570, 460])
pygame.display.flip()
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
sys.exit()
elif event.type==pygame.MOUSEBUTTONDOWN:
if event.pos[0] > 14 and event.pos[0] < 143 and event.pos[1] > 51 and event.pos[1] < 71:
asserver()
e=encryption(int(coinse)+coins)
s=open("profile.data", "w")
s.write(e)
s.close()
coinse=0
if event.pos[0] > 14 and event.pos[0] < 143 and event.pos[1] > 92 and event.pos[1] < 108:
asclient()
e=encryption(int(coinse)+coins)
s=open("profile.data", "w")
s.write(e)
s.close()
coinse=0
else:
easygui.msgbox("LOGIN FAILED!")
Could someone tell me what to do?
To compile, I am doing this:
pyinstaller.py program.py --noconsole
It seems there is no error in this part. Hard to say it because you didn't include full program.
simply you can run your program on terminal if your using linux or Mac as below
python <program_name.py>
if not you can make executable program follow this link
http://askubuntu.com/questions/244378/run-python-in-terminal
Find this error
File "test.py", line 58
SyntaxError: Non-ASCII character '\xc3' in file test.py on line 58, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.