オセロの全体プログラム(人間対人間)


 

メインプログラムは、 外部副プログラムや配列の宣言 そして外部副プログラムの

呼び出しからなります。構成は極めてシンプルになっています。

 

PROGRAM-OSERO-HUMAN-VS-HUMAN-1.GIF - 6,616BYTES

 

初期盤面を形成する外部副プログラムについては、前ページで既にある程度説明

しているので解説を省略します。

 

PROGRAM-OSERO-HUMAN-VS-HUMAN-2.GIF - 9,066BYTES

 

ゲームを開始する外部副プログラムについて説明します。 上記の外部副プログラ

ムで初期の盤面が描画されたあと、 この外部副プログラムに流れは移ります。  ま

ず、 先手の石の色を指定する小ウィンドウがポップアップし、 そこで、0を入れてO

Kボタンをクリックすれば白が先手になり、 1を入れてOKボタンをクリックすれば黒

が先手になります。 これと同時に、石を打てる場所が紫の石で示されます。 このと

き、プログラムの流れは POSITION という別な外部副プログラムの方に移ってい

るので注意してください。”石が打てる場所(紫で表示)を確認してください”というダ

イアログボックスのOKボタンをクリックすると、また元の外部副プログラムに戻りま

す。この段階になってはじめて、石を打つべき座標の入力になります。X座標、Y座

標という順に数値(1〜8)を入れてOKボタンをクリックしてください。そうすると、後

手の順番に流れは移ります。あとは、この手順を交互に繰り返してゲームを進めて

行くことになります。

 

ゲームが終盤に差し掛かってくると、 どこにも石が打てない状況になる場合があり

ます。石が打てる場所の数をPOSITIONでカウントしているので、そのデータに基

づいて ”打てる場所がないのでパスしてください”というメッセージをダイアログボッ

クスの形でこの外部副プログラムが出します。 OKボタンをクリックすると、 自動的

に相手の順番になります。また、全てのマス目が埋まっているかどうかも併せて確

認しているので、 もし埋まっていれば、”これ以上石を打つ場所がありません”とい

うメッセージをダイアログボックスの形でPOSITIONが出します。OKボタンをクリッ

クすると、元の外部副プログラムに戻り”ゲームは終了しました”というメッセージを

ダイアログボックスの形で出します。 再度、 OKボタンをクリックすると、プログラム

の流れは次の外部副プログラムRESULTに移り、 ゲームの結果が最終的にテキ

ストウィンドウに表示されます。

 

PROGRAM-OSERO-HUMAN-VS-HUMAN-3.GIF - 10,605BYTES

PROGRAM-OSERO-HUMAN-VS-HUMAN-4.GIF - 7,637BYTES

PROGRAM-OSERO-HUMAN-VS-HUMAN-5.GIF - 6,910BYTES

PROGRAM-OSERO-HUMAN-VS-HUMAN-6.GIF - 6,164BYTES

PROGRAM-OSERO-HUMAN-VS-HUMAN-7.GIF - 6,797BYTES

PROGRAM-OSERO-HUMAN-VS-HUMAN-8.GIF - 5,925BYTES

PROGRAM-OSERO-HUMAN-VS-HUMAN-9.GIF - 8,532BYTES

PROGRAM-OSERO-HUMAN-VS-HUMAN-10.GIF - 9,034BYTES

PROGRAM-OSERO-HUMAN-VS-HUMAN-11.GIF - 9,723BYTES

PROGRAM-OSERO-HUMAN-VS-HUMAN-12.GIF - 3,527BYTES

 

プログラムコード的には、 石が取れるかどうかの判断と取れた場合の処理をIF文

とDO〜LOOP文で行っている所が多少判り辛いかもしれません。プログラムの流

れを一行ずつ追って確認してみてください。 ちなみに、 POSITIONの宣言文は上

記の外部副プログラムの冒頭に置いています。

 

ゲームの結果を表示する外部副プログラムについて説明します。白石と黒石の数

を数えて石の多い方を勝者としてテキストウィンドウに表示するだけなので、  プロ

グラム自体はシンプルです。

 

PROGRAM-OSERO-HUMAN-VS-HUMAN-13.GIF - 5,821BYTES

 

最後に、 石を打てる場所を予め自動表示する外部副プログラムについて説明しま

す。 石を打てる場所を探索し見つければ、 そのマス目に対応する配列のデータを

2から3に置き換えます。  これを石を打っていない全マス目に関して行い終了すれ

ば、打てる場所を紫の石で表示します。ただし、石を打つ座標を入力する前になる

と、紫の石は盤面から消去され、対応する配列のデータも元の値に戻されます。ま

た、この外部副プログラム内では、全てのマス目が石で埋め尽くされたかどうかの

チェックも行っています。プログラムコード的には、外部副プログラムSTARTのもの

をかなり流用しているので理解し易いと思います。

 

PROGRAM-OSERO-HUMAN-VS-HUMAN-14.GIF - 8,344BYTES

PROGRAM-OSERO-HUMAN-VS-HUMAN-15.GIF - 6,422BYTES

PROGRAM-OSERO-HUMAN-VS-HUMAN-16.GIF - 7,458BYTES

PROGRAM-OSERO-HUMAN-VS-HUMAN-17.GIF - 6,057BYTES

PROGRAM-OSERO-HUMAN-VS-HUMAN-18.GIF - 7,333BYTES

PROGRAM-OSERO-HUMAN-VS-HUMAN-19.GIF - 7,712BYTES

PROGRAM-OSERO-HUMAN-VS-HUMAN-20.GIF - 4,517BYTES

 

IFで始まる行のいくつかは、一行で書かれるべきところを二行に亘って書かれてい

ます。 コピーするときに注意してください。プログラム実行時のエラーの原因になり

ます。

 

 


 

Topへ