オセロの簡易版プログラム
既に説明したオセロのプログラムを利用して簡易版プログラムを作成することを考
えます。基本的に、メインプログラムと四つの外部副プログラム全てで修正が必要
になります。4X4と6X6を作成するための修正箇所は以下のようになります。
メインプログラム
配列の宣言->Gの要素数
外部副プログラム(INITIAL)
盤面の描画->エリアの座標値、マス目の描画->ラインの数、初期盤面のデータ化
->データ値
外部副プログラム(START)
石が置けるかのチェック(その1)->座標の範囲、石が置けるかのチェック(その2)
-> IF文の条件 (真上方向、斜め左上方向、斜め右下方向、右隣方向、斜め右上
方向)、座標の範囲、石を取った後の置石の描画->FOR〜NEXT文の範囲、DIS
K描画の座標値、石が打てる場所がない時の処理->マス目の全数
外部副プログラム(RESULT)
白石と黒石の数のカウント->X座標とY座標の範囲
外部副プログラム(POSITION)
石が打てる場所の探索と数字3の割り当て->IF文の条件(真上方向、斜め左上方
向、斜め右下方向、右隣方向、斜め右上方向)、 石が打てる場所を紫の石で表示
->FOR〜NEXT文の範囲、DISK描画の座標値、 全てのマス目が石で埋め尽くさ
れたかの確認->FOR〜NEXT文の範囲、紫の石の盤面からの消去->FOR〜NE
XT文の範囲、DISK描画の座標値、 紫の石の配列データからの削除->FOR〜N
EXT文の範囲、IF文の条件
4X4の場合の初期盤面と対戦例を以下に示します。
<4X4の場合の初期盤面>
(図1、十進BASICによる2Dグラフィックス)
<白の勝利、白が11石で黒が2石>
(図2、十進BASICによる2Dグラフィックス)
この例の場合、マス目が残っている状態でゲームは終了しています。 詳細な棋譜
は次のようになっています。
黒(1、3)->白(1、4)->黒(2、4)->白(3、4)->黒(4、4)->白(1、2)->黒(1、1)
->白(3、1)->黒(パス)->白(4、2)->黒(パス)->白(パス)
課題(その1)
6X6や8X8の場合でも、 マス目が残った状態でゲームが終了することはあります
か。また、2NX2N(N->2、3、4、・・・)の一般的な場合について、マス目が残った
状態で終わるかどうかを議論してください。それを数学的に証明できる?