オセロをつくりました!
前にExcel Vbaを駆使してオセロを作成しました!このオセロ、2人用のオセロになっていますのでCPU対戦などはできません(いずれ機能追加して作り方もご紹介します)。
※ 作成した Excel オセロについては下記リンクを確認してください。
この記事では、私が作成した Excel オセロの作り方について、必要な事前準備とExcel Vba でオセロを作るうえ際に必要な考え方についてご紹介します。
オセロを作るうえでの事前準備
下準備として今回はは下記の材料を用意しました。
- 碁盤 → Excel シートで作る
- オセロの石 → 文字の「〇」か画像でつくる
オセロの石
今回オセロの石(白と黒)を画像で作成し、シートに貼り付けてください。
碁盤
オセロの石を貼り付けたシートとは別のシートを作成し、8 × 8 の碁盤を作成してください。
碁盤の大きさは、セルの石よりも少し大きくし正方形にしてください。
オセロを作るうえでの考え方
プログラム初心者にありがちなことですが、とりあえず手を動かして作ろうとしますが結局うまくいかない、つくれず挫折というのが多々あります(私も初めはそうでした)。
そんなときは、「オセロはどういうルールで、そのルールをすべて実現させるにはどうやってつくるか」を考えることが大事です。いきなり、「オセロつくろう」→「とりあえず書く」はまず無理です。
オセロのルールというのは大半の人は知っていると思うので割愛しますが、オセロを作成するうえで私が考えたステップはこれです。
- オセロの下準備(碁盤、石の作成)
- オセロの石を置けるようにする
- 挟んだオセロの石を反転させるようにする
- オセロの勝敗
だいたいこの4ステップだと思います。ではつぎにこれらを Excel Vba で実現するためにさらに細かくします。
オセロの下準備(碁盤、石の作成)
- 碁盤 → Excel シートで作る
- オセロの石 → 文字の「〇」か画像でつくる
碁盤については、Excelシートの色を変えて作成しましたが、石については私は「石」の画像で作成しました。
なぜかはなんとなくそっちのほうがかっこいいと思ったからです。もちろん「〇」「●」文字のほうが処理が圧倒的に楽ですが、画像のほうが見栄えもよかったです。
オセロの石を置けるようにする
石を置くというのはすなわち「石の画像を配置する」ということです。ここで必要な処理は以下になります。
- 石(の画像)をキーボード入力(「Enterキー」を押下)で置く → 「Enter」キーの入力イベントを検知し、画像を配置
- 好きな碁盤(のあるシート)の場所(セルの位置)に石(の画像)を置く → 画像を配置する際に、選択したセル番号に画像が配置できるか
- 石がおけないところに置けないようにする → キーボード入力したセル番号が石が違う色で2つ以上隣のセルの石が同じ色なら置ける
挟んだオセロの石を反転させるようにする
これがオセロを作るうえで一番難しかったです。試行錯誤の上、6方向で処理を分けることにしました。
- 右方向の処理
- 右上方向の処理
- 右下方向の処理
- 左方向の処理
- 左上の処理
- 左下方向の処理
それらの処理ひとつひとつに下記処理を行うようにしました。
- 隣の石が違う石かどうかチェック → すぐとなりのセル番号の画像を比較し、違う色か確認
- 2つ以上隣の石に同じ色の石があるか → ループ文(for)で碁盤の端まで検索し、同じ色があるか確認、途中で石がない箇所があれば処理終了
オセロの勝敗
オセロの考えられる勝敗は下記の二通りです。
- 碁盤にすべておいたときに黒か白、どちらの石の数が多いか → 「黒」と「白」の数をカウントし、多いほうを勝ちとする
- 碁盤を置く前にすべての石が黒か白になる → シート上の石が一色しかない場合終了し、その石を勝ちとする
まとめると....
- オセロの下準備(碁盤、石の作成)→ 2 処理
- オセロの石を置けるようにする → 3 処理
- 挟んだオセロの石を反転させるようにする → 6方向×2処理 → 12処理
- オセロの勝敗 → 2処理
全部で、下準備を除くと vba でたった17処理あれば作れるというわけです!
意外に処理が多いなあと感じかもしれませんが、それさえできれば絶対にオセロはつくれますので安心してください。
まとめ
いかがでしょうか?
今回はオセロを作るうえでの事前準備と考え方とのみをご紹介しましたが、別記事で実際の VBA での処理についてご紹介します。
ではでは。