TopPage > 最終課題に向けて > 演習4-2 オセロの基礎2
オセロの基礎2 †
コマを置ける条件 †
- 自分のターンである
- 置く場所にコマがない
- 置く場所から隣8方向のどこかに相手のコマがある
- 置くと,必ず相手のコマが1コ以上裏返る
- 1は演習4-1で,できました.
- 2も,押したボタンがboardIconかどうかを判断するだけなので,すぐできますね.
- 以降の3,4のプログラムは人それぞれです.
- 難しいと思う人は,ここでその一例をご紹介します.
- できそうな部分で参考をやめて,自分で書いていくのが良いですよ.
課題4・隣8方向の判定 †
- judgeButton()は,これから新しく作る関数の名前です.
- この関数の返り値はBoolean型です.置けたらtrue,置けないならfalseを返す関数です.
- flagをtrueにする手順は,こうでしょうか.
- 隣8方向に相手のコマがあるか,ひとつずつ見ていく
- ひとつでもあれば,flagをtrueにする
- ここで,隣8方向の参照のしかたを下図に示します.
図1. 隣8方向の求め方(クリックで拡大)
- indexをx,y成分に分解できれば,buttonArray[y][x]の情報が参照できます.
- このy,xをそれぞれ±1することで,まわりのボタンの情報も取ることができますね.
- 効率の良いプログラムを作成するには,iとjの二重for文で自分(i=0,j=0)以外のコマを見ていく手順が良さそうです.
- for文の中で,buttonArray[y+i][x+j]のアイコンがyourIconならばflagをtrueにします.
- あとは,端っこのボタンの処理です.端は8方向の範囲が場外に出るため,クリックするとエラーが出ると思います.
- そこで,for文の中で増加するiとjの最小値または最大値を変えてあげればOKです.
課題5・ひっくり返す判定 †