Step 05 of 12

石を裏返す

Enter キーで着手し、挟んだ相手の石を全部ひっくり返します。 山場は flip メソッド — 方向ごとに 「相手石の終端」を探してから裏返す 2 段階処理を自分で書きます。

MyOthello.java
Java runtime を初回読み込み中…
CheerpJ の JRE (数十 MB) をダウンロードしています。
preparing

About this step

flip を 2 フェーズで考える

「どこまで裏返すか」を一発で判定するのは難しいので、フェーズを分けます。 まず Phase 1 で相手石の終端まで進み、Phase 2 でそこが自分の石なら戻りながら 裏返す。どの方向でも挟めないなら何もしない — continue でスキップ。

isValidMove との違い

isValidMove は「挟めるかどうか」だけを返す boolean メソッド。 flip は実際に盤面を書き換える副作用つき。後者の方が一般に重いので、 flip を呼ぶ前に isValidMove で合法性をチェックするのが作法です。

動かしてみる

初期カーソル (col=3, row=3) から で (3,2) に移動 → Enter で黒を置くと、 間にあった (3,3) の白が黒にひっくり返ります。どの方向でも同じで、 矢印+Enter で連打できるようになれば成功です。