Step 04 of 12
合法手の判定
currentPlayer が置ける場所に、小さな黄色の点でヒントを表示します。
この Step の山場は isValidMove メソッドを自分で書くこと —
これ以降、AI もこのメソッドに全面的に依存します。
MyOthello.java
Java runtime を初回読み込み中…
CheerpJ の JRE (数十 MB) をダウンロードしています。
preparing
About this step
8 方向スキャンの定石
8 方向は int[][] DIRECTIONS として static final で持っておきます。
{dr, dc} の組を 8 個書き並べるだけ。そしてループの中では
for (int[] d : DIRECTIONS) で回せば、1 方向分の処理を
1 回書くだけで全方向カバーできます。
「挟める」の定義
相手の石が 1 個以上続いた後に自分の石があれば挟めます。
相手の石が 0 個(隣が自分 or 空)のまま自分の石や空マスに当たったら、
その方向では挟めません。sawOpponent という
boolean フラグで「相手を通過したか」を覚えておくのがコツ。
動かしてみる
初期配置での黒の合法手は 4 箇所: (3,2), (2,3),
(5,4), (4,5)。これが全部ヒントで光れば成功です。