プログラミング

【Python】Tkinterを使って「マルバツゲーム(三目並べ)」を作成してみた

python マルバツゲーム 三目並べ tkinter

どうも多浪Fランぼっち底辺大学生です。

今回はPythonのTkinter(ティーキンター)ライブラリを利用して、

マルバツゲーム(三目並べ)を作成していきたいと思います。

 

〇✖ゲームをpythonで作成したい!

また、GUIに実装した内容にしたい

おかのした

 

と考えている人に向けた記事となっています。

 

まず最初に完成形をお見せしますね(^o^)/

python マルバツゲーム 三目並べ tkinter GUI

少し見にくいかもしれませんが、こんな感じです。

ウィンドウ上のボタンを押せば交互に”○”と”×”が表示され、判定結果がコマンド画面へ表示されます。

 

一通りpythonを学習した人なら理解できる内容になっています。

ので、分からない箇所があるのなら参考書等で復習してください。

マルバツゲーム(三目並べ)のソースコード

早速、マルバツゲーム(三目並べ)のソースコードを紹介します。

 

こんな感じですね(-ω-)/

パッと見「簡単そうなコーディングだな」と分かってもらえたはずです。

マルバツゲーム(三目並べ)作成にあたって、少し解説します

今回のマルバツゲーム(三目並べ)の仕様としては、以下の通りです。

  • ウィンドウを作成して、3×3でボタンを配置
  • ボタンがクリックされたら、先行後攻を交互にテキスト表示
    (先行)player = 1の場合:〇
    (後攻)player = -1の場合:×
  • ボタンが押される度に判定を行う
  • 判定結果により、勝敗結果を表示し、ボタンテキストを初期化する

それでは、一応解説していくんで暇なら目を通してみて下さい。

リスト内包表記

この様にリスト内包表記をする事で、3×3のリスト(配列)を生成することが出来ます。

因みに、リスト内の各要素には” init = 0 ”の値が格納されます。

ウィンドウにボタンを設置する




今回はボタンのサイズを指定して、

 

きれいに敷き詰められた3×3のボタンが配置されるように記述しました。

 

配列を使えば、同じような記述を省略できる

btn1 = ~~~

btn2 = ~~~

とボタンを作成して、

 

btn1.grid(~~~)

btn2.grid(~~~)

と、ほぼ同じ記述を繰り返す方法ですね。

このやり方では、記述やコピペが面倒なので採用していません。

コメントアウトしている部分な

 

一方、配列を使用することで同じような処理を省略することが可能です。

例えば、ボタンを100個ウィンドウに配置したいとなると、前者のやり方では非効率なので、こちらの方法をおすすめします。

各関数内にグローバル変数を宣言する

各関数内にグローバル変数を宣言しています。

グローバル変数を宣言することで、

“”関数外で宣言した変数を直接扱えるようになります。“”

ボタンを左クリックしたとき、〇 or × を表示する

今回はボタンが左クリックされた時に、mark関数(ボタンテキストの追加等々)を呼び出すようにしています。

tkinterでマウスの左クリックアクションを指定するには、

と指定します。

bindメソッドの第一引数 “<1>” の部分ですね。

※他にも、キーボードが押された時やマウスが動いたときなどのイベントもあります。

 

そして、左クリックされると mark関数 が呼び出されます。

この時、mark関数の引数に e があります。これは、「ウィンドウのどの座標がクリックされたのか?」や「どの部品がクリックされたのか?」などの情報が送られます。

ここでは、

とすることで、どのボタンが押されたのかを特定することが可能です!

 

クリックされたボタンが特定できれば、白紙だったボタンテキストに〇か×かを追加することが出来ます。

プレイヤー(”〇” “✖” の)交代

ボタンが押されるごとに〇と×が交互に入れ替わるように、turn関数を設けました。

先行プレイヤーを「1」とし、後攻プレイヤーを「-1」と設定する。

ボタンが押されるごとに、変数player を (-1)倍すれば上手く機能します。

マルバツゲーム(三目並べ)の判定

マルバツゲーム 三目並べ 勝敗判定

画像のように”横”・”縦”・”斜め”を探索して、1直線状3つの要素が等しいかどうかについて判定を行います。

今回のプログラムで言うと、二次元配列(data)の探索が対象ですね。

上(↑)のソースコードのように勝敗・引き分けを判定します。

参考にした書籍

Pythonでつくるゲーム開発 入門講座 実践編

 

ゼロからやさしくはじめるPython入門

 

Amazonの試し読みなどで購入を検討してみて下さい。

おすすめですよ(-ω-)/

おわり

以上で、Pythonによるマルバツゲーム(三目並べ)作成に関する紹介を終わります。

まだまだ、本格的に演出や機能を付け足す余地がありますので、

皆さんも色々と試行錯誤してみて下さい。

それでは。

Python 数学 おすすめ参考書
【Python】数学の活用やデータ分析に興味がある初学者が読むべき参考書どうも多浪Fランぼっち底辺大学生です。 今回は、Python初学者が数学の知識を活用して、問題を解いたりグラフを作成したり出来るよ...
人気ブログランキング
こっちも読んでおきたい