下記のコードでブロック崩しのゲームをexeファイル化しようとしましたができません。
pip install pyinstaller
pyinstaller ブロック崩し.py --onefile
というコマンドを打ち込みexeファイル化はできるのですが、コマンドプロンプトが開いた後すぐ閉じてしまいます。
どうすればよいでしょうか。
Ptthonは3.6を利用しています。
Python
1コード 2#!python.3.6 3#ブロック崩し 4 5import tkinter as tk 6from tkinter import messagebox 7 8#変数(追加) 9score=0 10time=0 11index=0 12 13#キー 14key="" 15def key(e): 16 global key 17 key=e.keysym 18 19#ウィンドウ 20win=tk.Tk() 21win.title("ブロック崩し") 22win.geometry("425x625") 23win.resizable 24win.bind("<KeyPress>", key) 25 26#キャンバス 27can=tk.Canvas(bg="black",width=400,height=600) 28can.place(x=10,y=10) 29 30 31#ゲームオーバー 32def gameOver(): 33 if index==1 or index==2 or index==3: 34 messagebox.showinfo("Information","GAME OVER") 35 exit() 36 37#ゲームクリア 38def gameClear(): 39 if index==1 or index==2 or index==3: 40 messagebox.showinfo("Information","CONGRATURATIONS") 41 exit() 42 43#ボール 44global bx 45global by 46ball_x=50 47ball_y=500 48bx=5 49by=-5 50 51def drawBall(): 52 global ball_x 53 global ball_y 54 global bx 55 global by 56 ball_id = can.create_oval(0, 0, 20, 20, fill="white") 57 can.coords(ball_id, ball_x, ball_y, ball_x+20, ball_y+20) 58 if ball_x<=0 or ball_x>=385: 59 bx *=-1 60 if ball_y<=0: 61 by *= -1 62 if ball_y>=600: 63 gameOver() 64 if ball_y>=560 and ball_x>=rack_x-10 and ball_x<=rack_x+70: 65 by *=-1 66 67 ball_x += bx;ball_y += by 68 69#ボールスピード 70 71 72 73#ラケット 74rack_x=170 75keyPress_R=False 76keyPress_L=False 77def rightKeyPress(event): 78 global keyPress_R 79 keyPress_R=True 80def rightKeyRelease(event): 81 global keyPress_R 82 keyPress_R=False 83def leftKeyPress(event): 84 global keyPress_L 85 keyPress_L=True 86def leftKeyRelease(event): 87 global keyPress_L 88 keyPress_L=False 89win.bind("<KeyPress-Right>",rightKeyPress) 90win.bind("<KeyRelease-Right>",rightKeyRelease) 91win.bind("<KeyPress-Left>",leftKeyPress) 92win.bind("<KeyRelease-Left>",leftKeyRelease) 93 94 95def drawRacket(): 96 global rack_x 97 can.create_rectangle(rack_x,580,rack_x+60,595,fill="white") 98 if keyPress_R==True and rack_x<=350: 99 rack_x +=5 100 if keyPress_L==True and rack_x>=-10: 101 rack_x-=5 102 103#ブロック1 104block=[] 105for x in range(5): 106 for y in range(4): 107 block.append({"x":x*80+5,"y":y*40+10,"st":1}) 108def drawBlock(): 109 global ball_x 110 global ball_y 111 global by 112 global score#(追加) 113 block_count=0 114 for i in range(len(block)): 115 x=block[i]["x"] 116 y=block[i]["y"] 117 st=block[i]["st"] 118 if ball_y<=y+30 and ball_x>=x-10 and ball_x<=x+60 and st==1: 119 by*=-1 120 block[i]["st"]=0 121 score=score+10#(追加) 122 if st==1: 123 can.create_rectangle(x,y,x+70,y+30,fill="white") 124 block_count+=1 125 if block_count==0: 126 gameClear() 127 128#スコア(追加) 129def drawScore(): 130 can.create_text(30,550,text="SCORE:"+str(score),fill="white") 131 132#時間 133def drawTime(): 134 can.create_text(30,570,text="Time:"+str(time),fill="white") 135 136#画面推移(追加) 137def gamemain(): 138 global index 139 if index==0: 140 can.create_text(200,100,text="ブロック崩し",anchor="center",font=("HG丸ゴシックM-PRO",24),fill="white") 141 can.create_text(200,500,text="Press [1]Easy",anchor="center",font=("HG丸ゴシックM-PRO",24),fill="white") 142 can.create_text(200,535,text="[2]Normal",anchor="center",font=("HG丸ゴシックM-PRO",24),fill="white") 143 can.create_text(200,570,text="[3]Hard",anchor="center",font=("HG丸ゴシックM-PRO",24),fill="white") 144 if key=="1": 145 index=1 146 elif key=="2": 147 index=2 148 elif key=="3": 149 index=3 150 can.after(15,gamemain) 151 152 elif index==1: 153 global bx 154 global by 155 bx=5 156 by=-5 157 def gameLoop(): 158 can.delete("all") 159 drawBall() 160 drawRacket() 161 drawBlock() 162 drawScore()#(追加) 163 drawTime()#追加 164 win.after(50,gameLoop) 165 gameLoop() 166 167 elif index==2: 168 bx=7 169 by=-7 170 def gameLoop(): 171 can.delete("all") 172 drawBall() 173 drawRacket() 174 drawBlock() 175 drawScore()#(追加) 176 drawTime()#追加 177 win.after(50,gameLoop) 178 gameLoop() 179 180 elif index==3: 181 bx=10 182 by=-10 183 def gameLoop(): 184 can.delete("all") 185 drawBall() 186 drawRacket() 187 drawBlock() 188 drawScore()#(追加) 189 drawTime()#追加 190 win.after(50,gameLoop) 191 gameLoop() 192 193#表示ループ 194gamemain() 195 196 197#ウィンドウループ 198win.mainloop 199 200
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。