pyinstaller打包后重复运行程序(单线程)
源码:
from os import system
import random
import pygame,sys
size=50
system("maze "+str(size))
size=int(size)
image_max_size=50
rdnum=size/2
pygame.init()
#acon=pygame.image.load("mainper.png")
#pygame.display.set_icon(acon)
#pygame.display.set_caption("maze")
wall=pygame.image.load("wall.png")
road=pygame.image.load("road.png")
mainper=pygame.image.load("mainper.png")
end=pygame.image.load("end.png")
qwertyuiop=open("mrd.txt","r")
rem=pygame.image.load("re.png")
a=qwertyuiop.readlines()
a=a[1:]
class re:
def __init__(self,xx,yy):
self.x=xx
self.y=yy
def run(self):
while 1==1:
rn=random.randint(0,3)
if rn==0:
self.x=self.x+1
if not (self.x>=0 and self.x<size and self.y>=0 and self.y<size and a[self.x][self.y]=='1' ):
self.x=self.x-1
else:
break
elif rn==1:
self.x=self.x-1
if not (self.x>=0 and self.x<size and self.y>=0 and self.y<size and a[self.x][self.y]=='1'):
self.x=self.x+1
else:
break
elif rn==2:
self.y=self.y+1
if not (self.x>=0 and self.x<size and self.y>=0 and self.y<size and a[self.x][self.y]=='1'):
self.y=self.y-1
else:
break
elif rn==3:
self.y=self.y-1
if not (self.x>=0 and self.x<size and self.y>=0 and self.y<size and a[self.x][self.y]=='1'):
self.y=self.y+1
else:
break
remi=re(size-1,size-1)
if size>14:
image_max_size=8
wall=pygame.image.load("wall_l.png")
road=pygame.image.load("road_l.png")
mainper=pygame.image.load("mainper_l.png")
end=pygame.image.load("end_l.png")
screen=pygame.display.set_mode([size*image_max_size,size*image_max_size])
screen.blit(rem,[remi.x*8,remi.y*8])
pygame.time.set_timer(pygame.USEREVENT,500)
per=[0,0]
screen.fill([0,0,0])
for i in range(0,size):
for j in range(0,size):
#print i,j,i==0 and j==0,'\n'
if a[i][j]=="1":
screen.blit(road,[i*image_max_size,j*image_max_size])
screen.blit(mainper,per)
screen.blit(end,[(size-1)*image_max_size,(size-1)*image_max_size])
#print i,j,a[i][j],[i*image_max_size,j*image_max_size],'\n'
#screen.blit(road,[0*image_max_size,3*image_max_size])
def inwall():
if per[0]<size*image_max_size and per[1]<size*image_max_size and per[0]>=0 and per[1]>=0:
if a[per[0]//image_max_size][per[1]//image_max_size]=="1":
return 1
return 0
pygame.key.set_repeat(100,50)
running=True
while running:
if per[0]==(size-1)*image_max_size and per[1]==(size-1)*image_max_size:
running=False
for event in pygame.event.get():
if event.type==pygame.QUIT:
running=False
elif event.type==pygame.KEYDOWN:
if event.key==pygame.K_DOWN:
screen.blit(road,per)
per[1]+=image_max_size
if not inwall():
per[1]-=image_max_size
screen.blit(mainper,per)
else:
screen.blit(mainper,per)
elif event.key==pygame.K_UP:
screen.blit(road,per)
per[1]-=image_max_size
if not inwall():
per[1]+=image_max_size
screen.blit(mainper,per)
else:
screen.blit(mainper,per)
elif event.key==pygame.K_RIGHT:
screen.blit(road,per)
per[0]+=image_max_size
if not inwall():
per[0]-=image_max_size
screen.blit(mainper,per)
else:
screen.blit(mainper,per)
elif event.key==pygame.K_LEFT:
screen.blit(road,per)
per[0]-=image_max_size
if not inwall():
per[0]+=image_max_size
screen.blit(mainper,per)
else:
screen.blit(mainper,per)
elif event.type==pygame.USEREVENT:
screen.blit(road,[remi.x*8,remi.y*8])
remi.run()
screen.blit(rem,[remi.x*8,remi.y*8])
pygame.display.flip()
pygame.quit()
版本:3.11.1