こんにちは! はるさらと申します。
最近、pythonを勉強し始めたため学びがてら、
PyChameを使用しつつ
〇×ゲーム(三目並べ)を作成していきたいと思います。
第1回では枠まで作成しました。
今回はその枠をクリックしたら
〇、✕が描写されるところまで 進めていきます!
よかったら参考にしてみて下さい♪
PyCharmを使用して作成しました。
同様の環境であればコピペで動作すると思われます。
他のPythonの記事はこちらから参照できます♪
今回完成イメージ
コーディング
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859# 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メソッドを使用して、
フレームにイベントを設定しています。
今日はここまで
今回作成したソースを実行すると
最初に表示していたように 枠内に〇、✕を交互に描写できます。
今は、〇✕を並べているだけのため
次は勝利の判定を設定していきたいと思います。
それではまたー!!
〇×ゲームの初回記事はこちらになります♪