まず、盤上がどういう状況なのかの認識をしなければなりません。碁盤、石、連、群、地という基本的なオブジェクトが存在しますが、これらの情報をデータとして生成します。碁盤には19×19路の場所があり、その場所には黒石が置かれているか、白石が置かれているか、または何も置かれていないかです。そして辺というものがあるという事もコンピューターに認識させる必要があります。ここから先は番外で打つことはできないという認識です。この認識をコンピュータに教える事は簡単です。次のような盤面になっている場合
ABCDEFGHJ
1・−−−−●○○・ 例えば
2|++●+●●○| 何も置かれていない=0
3|●●++●○○| 黒石が置かれている=1
4|●○○○●++| 白石が置かれている=2
5|○++●○○○| 辺(盤外である) =3
6|+○+●●○●| とすると
7|+○●+○●○|
8|○●●+●●○|
9・●○−−−−●・
3,3,3,3,3,3,3,3,3,3,3
3,0,0,0,0,0,1,2,2,0,3
3,0,0,0,1,0,1,1,2,0,3
3,0,1,1,0,0,1,2,2,0,3
3,0,1,2,2,2,1,0,0,0,3
3,0,2,0,0,1,2,2,2,0,3
3,0,0,2,0,1,1,2,1,0,3
3,0,0,2,1,0,2,1,2,0,3
3,0,2,1,1,0,1,1,2,0,3
3,0,1,2,0,0,0,0,1,0,3
3,3,3,3,3,3,3,3,3,3,3 という具合になります。
何故、黒石と白石を1と2にするかというと、この石の相手の石が...というときに
wisi = isi ^ 3; //(C++)
wisi := isi xor 3; //(Delphi)
と簡単にコーディングできるからです。
何故回りに辺=3を置くかというと、これがないとわざわざ
if ( x<1 or y<1 or 19< x or 19< y ) ;
としなければならないからです。辺があれば
if ( ban[x][y] = 3 ) ;
だけで済みます。次に重要な連と群の認識の説明をしましょう。