こんにちは! はるさらと申します。
最近、pythonを勉強し始めたため学びがてら、
PyChameを使用しつつ
〇×ゲーム(三目並べ)を作成していきたいと思います。
第1回では枠まで作成しました。
今回はその枠をクリックしたら
〇、✕が描写されるところまで 進めていきます!
よかったら参考にしてみて下さい♪
PyCharmを使用して作成しました。
同様の環境であればコピペで動作すると思われます。
他のPythonの記事はこちらから参照できます♪
今回完成イメージ
コーディング
# coding: UTF-8 import tkinter as tk # インスタンス化、画面サイズの設定など base = tk.Tk() base.geometry('250x250') base.resizable(0,0) base.title('まるばつゲーム') # メインフレーム作成 mainframe = tk.Frame( base, relief='groove', borderwidth=5 ) mainframe.grid() # フレームの中央配置 base.grid_columnconfigure(0, weight=1) base.grid_rowconfigure(0, weight=1) # ○、×の変数 marubatsu = '○' # ボタンクリック時のイベント def btn_click(event): # これを書かないと、グローバル変数に代入ができない global marubatsu # ○、×を付ける工程 event.widget.configure(relief = 'ridge', bd = '1') bomb_count_label = tk.Label(event.widget, text = marubatsu , bg ='LightGray') bomb_count_label.place(width=50, height=50) # ターンの判定 if marubatsu == '○': marubatsu = '✕' else: marubatsu = '○' # 枠を作成(3×3マス) for x in range(3): for y in range(3): # ボタンはフレームで作成。 button_frame = tk.Frame(mainframe, width = 50, height = 50, bd = 3, relief ='ridge', bg ='LightGray') # rowでヨコ、columnでタテを指定している button_frame.grid(row=x, column=y) # フレームにイベントを設定するためbindメソッドを使用。 # 第一引数に"<1>"を指定すると左クリックした際のイベントとなる button_frame.bind("<1>", btn_click) # 下記構文で実行 base.mainloop()
処理の解説
24行目
〇、✕を格納する変数を作成しています。29行目~
btn_clickというイベントを作成。
3×3の中のいずれかの枠を押した際に、
〇から描写される設定をしています。・35~37行目内で、実際に〇、✕を描写しています。
・40~43行目で〇を入力したならば、次に押下したときは
✕が入力される必要があるため
変数marubatsuの中身を反転しています。55行目・29行目で作成したイベントにアクセスするためにbindメソッドを使用して、フレームにイベントを設定しています。
今日はここまで
今回作成したソースを実行すると
最初に表示していたように 枠内に〇、✕を交互に描写できます。
今は、〇✕を並べているだけのため
次は勝利の判定を設定していきたいと思います。
それではまたー!!
〇×ゲームの初回記事はこちらになります♪