Game of 'Corner the Queen'

(3) Computer game

Part (2) に戻る   Workbench に戻る
<対面ゲームからコンピュータ・ゲームへ>

コンピュータ・ゲームにすると次のように内容が変わります。

  1. 対戦相手 (コンピュータ) は論理的な手を打つ。どう打っても違いがなければプログラマーの好みが反映される(例えば下の下線部)。
  2. ゲーム盤は画面に表示され、盤の大きさは可変である。
<コンピュータ側の作戦>

インターネットに出ている戦術 (O. Kreylos, 1999) を拝借します。c言語ですが、Pythonで書き換えると右のようになります。(i, j) はユーザーが打った位置です。
(a) もしそれが最強位置(winning position)であれば、PCは最強位置に置けないのでひとマス近づく位置に打っておきます。
(b) 逆にそれが最強位置でなければ (i, j) から行ける最強位置を探し出してそこに打ちます。

<Python による コンピュータ側の作戦>
<Modula-2 によるパソコンゲーム, CornerTheQueen.MOD>

XDS Modula-2/TopSpeed extension によるプログラム構成を下に示します。テキスト画面上のメインメニューで"G" を入れるとゲームが始まります。 ユーザーはキーボードから (i,j) の値を入力します。

<Modula-2 のゲーム画面>

Queenとマス目をそれぞれ o と o で表現しています。テキスト画面なのでゲーム盤の縦横比は、1画面の行数と1行あたりの文字数で決まってしまいますが、描画プログラム Display(i,j) は簡単になります。

<Python によるパソコンゲーム, CornerTheQueenMainLoop.Py>

pygame.py, pygwidgets.py を取り込んでグラフィックス画面上で動くプログラムです。マウス・クリックによる event には、Queen位置のユーザー入力、再スタート (リセット)、終了の三通りあります。Idle では0.5秒程度待ちます。

<Python のゲーム画面>

Queenを●で表していますが画像に替えることもできます。左は開始前のスタンバイ画面、右はPCが勝ったときの画面です。 マス目の中を、どこでもいいからクリックすればマス目の真ん中に●が現れます。その場所がルールに従っていれば PC は上記の作戦を実行しますが、ルールに違反していれば音が鳴って●は元の位置に戻されます。ユーザー入力はやりなおしです。

9-14-2023, S. Hayashi