オセロゲームの作り方__2_

オセロゲームの作り方(第二回 多次元配列を扱う)

第一回はこちら

多次元配列で座標が表現できる

前回の復習です。二次元配列で平面が表現できます。
注意:パソコンのディスプレイでは座標は左上が起点です。

オセロゲームの本質は、8×8マスの座標に対する操作アルゴリズムです。

ある座標に石を置いたときにひっくり返せる石が何枚あるかをシミュレーションするアルゴリズムを作る

人間の脳みそは高性能なので、ある箇所に石を置いたらどの石をひっくり返すべきかあまり深く考えなくても分かります。

これって実は凄いことです・・・!

画像3

画像4

皆さんもすぐに分かりますよね?
人間からしたら当たり前のような機能をプログラミングで表現します。

画像を認識する能力に置いてはコンピュータは人間以下

コンピュータはそこまで賢くないので、直感ではどの石がひっくり返せるか分かりません。ルールを明確に定めて細かく作業を指示してあげないといけないので、出来るだけ具体的に指示を出します。

石を置くマスを決めたら、そのマスの8方向全てにひっくり返せる石がないかチェックを行う

小見出しを追加

周囲8方向全てにひっくり返せる石がないかチェックします。

石を (6, 6) に置くとすると
上(6, 5) 右上(7, 5) 右(7, 6) 右下(7, 7)
下(6, 7) 左上(5, 5) 左(5, 6) 左下(5, 7)
の八方向にチェックする

黒石が白石を挟んでいる状態とは?

⚫️ ⚪️ → 挟んでいない
⚫️⚪️⚫️ → 挟んでいる
⚫️⚪️⚪️⚫️ → 挟んでいる
⚫️⚪️ ⚫️→ 挟んでいない
⚫️ ⚪️⚫️→ 挟んでいない

黒石が白石を挟んでいる状態を言語化すると?

画像5

1. 左、左下、下は何も置いてないので無視
2. 右、右下は同じ色の石(黒)なので無視
3. 右上は白、その方向に進むと何もないマスなので何もしない 
4. 上、左上には白い石があります。同じ方向に進んでいくと黒い石が見つかりました。これが黒石が白石を挟んでいる状態です。

念の為実践

これを多次元配列を操作してチェックします。
配列の要素の中身を比較しながら、指定したマスの座標を変えていけばOKですね。右方向なら x座標を増加させていく。左下ならx座標は減少させ、y座標は増加させていきます。(ディスプレイは左上基準なので)

さあ、実際にコードを書いてみてください。

今日はここまで、答えは次回です。





この記事が気に入ったらサポートをしてみませんか?