python(tkinter)で〇×ゲームを作成-2(○✕を描写)

こんにちは!

はるさらと申します。

 

 

最近、pythonを勉強し始めたため

学びがてら、PyChameを使用しつつ

〇×ゲーム(三目並べ)を

 

作成していきたいと思います。

 

 

第1回では枠まで作成しました。

今回はその枠をクリックしたら

〇、✕が描写されるところまで 進めていきます!

よかったら参考にしてみて下さい♪   

 

PyCharmを使用して作成しました。
同様の環境であればコピペで動作すると思われます。

 

【今回完成イメージ】 

 

以下、ソース

# 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メソッドを使用して、フレームにイベントを設定しています。

 

 

今回作成したソースを実行すると

最初に表示していたように

枠内に〇、✕を交互に描写できます。

 

 

今は、〇✕を並べているだけのため

次は勝利の判定を設定していきたいと思います。

 

それではまたー!!

 

↓前工程の記事

python(tkinter)で〇×ゲームを作成-1(枠の作成)