エンジニアリングデイズ - Engineering Days - 

その時々興味があるものを作ります。

python tkinterで三目並べ(OXゲーム)をつくってみた。[Op.1] その2

OXゲームをつくる

リプレイ機能を実装してみる

というわけで、前回:python tkinterで三目並べ(OXゲーム)をつくってみた。[Op.1] の続きです。まだREPLAY機能は作っていなかったので、今回はその部分を作成しました。やりたいことは明確で、先にイメージもできていたのでそれほど苦労はしませんでした。

リプレイ機能で実装したいこと

・REPLAYボタンはPLAYが始まってから有効になる。

 ゲーム開始前に押しても無効(何もしない)

・REPLAYボタンを押すと、最初から自動でリプレイする。

 リプレイ中は何手目かを示す表示を出す。

・リプレイ終了後は、表示したバーをドラッグすることで指定の手までを表示する。

 

リプレイ機能の動作

とりあえず動作については以下の動画を参照ください。

 

youtu.be

 

多少考えたところ

今回はほぼイメージ通り滞りなく進められましたが、1つあるとすれば、前回の反省を逆手に取ったような実装にしてみました。前回詰まったところで図形描画タイミングの問題がありましたが、今回はあえてそれを利用しています。リプレイ時の表示はtkinter.Scaleを利用しました。Scaleの値が変わったときに自作関数を呼び出すのですが、それはおよそ次のような動作をします。

1.全マスの表示を消去

2.Scaleの値までの手を表示(ここでfor文を使って一気に表示)

  Scaleの値がゼロの場合は何も表示しない。

 

最後に

今回はこんな感じです。このOXゲームに関してはやりたいことを実装できたので、一応終了です。凝り出すときりがないので...。

 

さて、次は何を作ろうかな...