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とマス目をそれぞれ oo で表現しています。テキスト画面なのでゲーム盤の縦横比は、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