※「セキュリティ保護のため...」というメッセージが出る方・日本語が入力できない方へ
とにかく表示できるようにする
まずは碁盤を表示し、指定されたファイルを読んでその配置状態を表示できるようにします。これをver 0.01 とします。プログラムはMFCで、MDI形式で生成します。
Documentに必要なプロパティ
int m_boardwidth,m_boardheight; 盤の広さ
手のArray m_hand;
ここで手は次のように定義しましょう。
BYTE m_player; 1=Black, 2=White
BYTE m_act; 1=置く 2=pass 3=投了
BYTE m_line; 列 1〜19
BYTE m_row; 行 1〜19
盤を表示するためのオブジェクト
このオブジェクトには石を打つ、今(y,x)に何があるか、というのが分かる必要があります。
基本的にはこの盤は例えば 19×19なら、21×21の配列を使います。methodは必要なだけ
定義します。特に重要なものは下記です。
Place 石を置く(1=黒 2=白 0=取る)
GetStone その場所の石を調べる (1=黒 2=白 0=無 3=盤外)
取り敢えずこれだけの情報があれば表示できるはずです。他の情報は現時点では無視です。
マウスクリックで石置き
しかし盤は表示されても、石が置けなくてはどうしようもありません。マウスクリックで石を置くようにします。この時、一回置く度に、白・黒が自動的に交替するようにしましょう。現在白なのか黒なのかは分かりやすいようにした方がいいですから、ツールバーに黒石ボタンと白石ボタンを作り、それのon/offで表示するようにします。念のため、このボタンは人為的に押せば黒白を強制的に変更できるようにします。
色を付けよう
これで最低限の操作ができるようになりましたが、やはり白地に黒線の状態では、どうも見づらい。白石が地に埋もれてしまう感じです。やはり盤に色を付けることにします。
取り敢えず色を付けてみたのですが、必ずしも見やすくありません。見やすい色を見つけたいのですが、その度にソフトをコンパイルし直していてはたいへん。ここは盤の色の設定ができるようにしましょう。ついでにサイズや目の表示方法(3三/C3/3,3)も指定できるようにしましょう。
石が取れない??
ここまできて、石を取る手段が無いことに気が付きました。
今までの方法は、手順のデータを記録しておき、その通りに石を表示していったのですが、これでは石を取っても、置いた時の手順が残っているため、石の表示が消えません。むろん手順から消去する訳にはいきません。
ということは、盤の石の表示のロジックをまるっきり変える必要があるということになります。メモリー上で盤のデータを維持し、その配置状況をそのまま表示する必要があります。そのように変えます。
(2000.2.21)
