2018年4月3日火曜日

Java、JavaScriptによるMinesweeperの作成

こんにちは🍀


新人の小幡です。




前回のブログでは、「ファイル共有システムを作成しました。」という


記事を投稿しました。


そして、その後の学習状況として、まず、JavaによるMinesweeperのプログラム作成、


そして、そのプログラムをもとにJavaScriptによるMinesweeperの作成を行いました。


Minesweeperはみなさんご存知だと思います。


そう、「マスの中には一定数の地雷が隠されていて、


地雷以外のマスをすべてオープンにすることができればゲームクリア。


1回でも地雷のあるマスを選択してしまったらゲームオーバー。」という


あのゲームです。


作成の中で苦労した点としては、以下の2点です⛇


ビット演算によるマスの判定と処理

旗を設置したマスとオープンしたマスには


フラグとよばれる目印のような情報を2進数のビット配列で格納してます。


そして、その目印をもとにマスの判定と処理をするというプログラムに


なっているのですが、普段あまり使用することがない2進数でプログラムを


作成するということを理解するまで時間がかかりました⏰


再帰処理を用いた判定


ゲームの中で最も重要な処理として、選択したマスの中身が


地雷なのか、空っぽなのか、数字なのか判定し、


空っぽならば、周囲8マスの中身をみて、


また空っぽだったらそのマスの周囲8マスをみてということを数字が出るまで


繰り返すということをしています。


このような処理を関数というものにまとめて記述しておき、


その関数から自分自身の関数を呼び出す。というものが再帰処理になります。


この再帰処理によるプログラムの作成はもちろん初めてです。


正直なところ、自分自身の関数から自分自身を呼び出すという言葉自体の


意味が理解できませんでした😵


そのため、まずはプログラムを見ながら、再帰処理という言葉の意味を


理解するというところからのスタートでした。


こうして完成したMinesweeperがこちらになります🌍




ぜひ、上記URLから遊んでみてください。


カッコいいデザインにはできませんでしたが、


ふつうに遊ぶうえでは問題なく動作するはず…です😕


【概要・操作】
  1. マウスの左クリックでマス目をオープン
  2. マウスの右クリックで旗の設置・非設置
  3. 難易度は初級・中級・上級・カスタムの4段階
  4. 難易度を選択し、リセットボタンをクリックすることで難易度が適応
  5. カスタム難易度についてもリセットボタンで適応
  6. タイマー上部に表示されている地雷の数は、残りの旗の数を反映
  7. ゲーム終了時は、マス目をすべてオープンし、結果を文字表示


それでは、また次回のブログで❗

小幡