1.1 盤面の表現 |
この章では、オセロプログラムに必要な関数について解説します。
はじめにことわっておきますが、ここで紹介するのはあくまで一例です。
まず盤面をどのようにして表現したらよいかを考えます。 #define BLANK 0 #define BLACK 1 #define WHITE 2 #define WALL 3 char ban[91];のようになります。 マスの数が64なのに配列が91個の要素をもつのは、配列が壁となるマスを含むためです。 壁を含むことによって、石を返す処理をするとき等に、ある座標が盤から出ているかどうかの処理が簡単になります。 これは森田オセロで使われていた方法です。
A1を(1, 1)とするとき、座標(x, y)にあるマスの状態はban[x+y*9]によってあらわされます。
マスのインデックスに名前をつけて定数としておくと便利です。 #define A1 10 #define B1 11 #define C1 13 ・ ・ ・ #define H8 80 また以下の値をあらわす変数が必要になることがあります。
変数ban[]を使って盤面を初期化する関数を作ると次のようになります。
ban_init() { int i, j; for(i=0;i<91;i++) ban[i]=WALL; for(i=1;i<9;i++) for(j=1;j<9;j++) ban[i*9+j]=BLANK; ban[D4]=WHITE; ban[D5]=BLACK; ban[E4]=BLACK; ban[D5]=WHITE; } |
トップに戻る 1.2 |