Python学習14日目(5/19)まいにちゲームづくり6日目 グリコゲームGUI改良

昨日に引き続きGUI改良です。

コマンドプロンプトに出力していた結果を画面内に表示させてみました。

"""
ゲーム制作6日目
グリコの編集

・すること
勝敗とマス目をGUIに反映(テキストボックス)
"""
import tkinter
import random
from tkinter import font
from tkinter import messagebox
def janken(choice):
   global jibun_count
   global aite_count
   if jibun_count >=30 or aite_count>=30:
       return
   jyanken_list = ["グー","チョキ","パー"]
   random_choice = jyanken_list[random.randrange(3)]
   if choice =="グー"and random_choice =="パー":
       aite_count +=6
       txt_result.delete(0, tkinter.END)
       txt_result.insert(tkinter.END,"相手の勝ち")
   elif choice =="チョキ"and random_choice =="グー":
       aite_count +=3
       txt_result.delete(0, tkinter.END)
       txt_result.insert(tkinter.END,"相手の勝ち")
   elif choice =="パー"and random_choice =="チョキ":
       aite_count +=5
       txt_result.delete(0, tkinter.END)
       txt_result.insert(tkinter.END,"相手の勝ち")
   elif random_choice =="グー"and choice =="パー":
       jibun_count +=6
       txt_result.delete(0, tkinter.END)
       txt_result.insert(tkinter.END,"自分の勝ち")
   elif random_choice =="チョキ"and choice =="グー":
       jibun_count +=3
       txt_result.delete(0, tkinter.END)
       txt_result.insert(tkinter.END,"自分の勝ち")
   elif random_choice =="パー"and choice =="チョキ":
       jibun_count +=5
       txt_result.delete(0, tkinter.END)
       txt_result.insert(tkinter.END,"自分の勝ち")
   if choice == random_choice:
       txt_result.delete(0, tkinter.END)
       txt_result.insert(tkinter.END,"あいこ!")
   else:
       txt_jibun.delete(0, tkinter.END)
       txt_aite.delete(0, tkinter.END)
       txt_jibun.insert(tkinter.END,"自分:"+jibun_count*"○"+"□"+(30-jibun_count)*"○")
       txt_aite.insert(tkinter.END,"相手"+aite_count*"○"+"■"+(30-aite_count)*"○")
       text_jibun.set("自分:あと"+str(30-jibun_count)+"マス")
       text_aite.set(("相手:あと"+str(30-aite_count)+"マス"))
       if jibun_count >=30:
           print()
           messagebox.showinfo("おめでとう!","自分の勝ち!")
       elif aite_count >=30:
           messagebox.showinfo("残念!","相手の勝ち")
tk = tkinter.Tk()
tk.geometry('600x400')
tk.title('グリコ')
jibun_count=0
aite_count=0
btn_g = tkinter.Button(tk, text='グー', command = lambda:janken("グー"))
btn_g.place(x=50, y=50)
btn_c = tkinter.Button(tk, text='チョキ', command = lambda:janken("チョキ"))
btn_c.place(x=100, y=50)
btn_p = tkinter.Button(tk, text='パー', command = lambda:janken("パー"))
btn_p.place(x=150, y=50)
txt_jibun = tkinter.Entry(width=80)
txt_jibun.place(x=50, y=100)
txt_aite = tkinter.Entry(width=80)
txt_aite.place(x=50, y=120)
txt_result = tkinter.Entry(width=20)
txt_result.place(x=250, y=50)
font2 = font.Font(family='Times', size=40)
text_jibun = tkinter.StringVar()
text_jibun.set("自分:あと30マス")
label_jibun = tkinter.Label(tk,textvariable=text_jibun,font=font2)
label_jibun.place(x=50, y=150)
text_aite = tkinter.StringVar()
text_aite.set("相手:あと30マス")
label_aite = tkinter.Label(tk,textvariable=text_aite,font=font2)
label_aite.place(x=50, y=250)
btn_end = tkinter.Button(tk, text='終了',command = tk.destroy)
btn_end.place(x=300, y=350)
tk.mainloop()

やったこと:

テキストボックスを配置して結果を表示

フォントを使って文字を表示

結果が出たらメッセージボックスでお知らせ

初期画面

画像2

じゃんけん開始後


画像2

結果表示

画像3

こんな感じで作ってみました。

このシリーズ(ゲームを作って次の日に改良)はスモールステップで成長を実感できるし、楽しいので続けていきたいですね。

明日はまだ改良か新ゲームかはわかりませんが、思いつき次第やってみようと思います。



この記事が気に入ったらサポートをしてみませんか?