【勉強】マインスイーパ(その1) by 日経ソフトウエア2011年6月号


昨日宣言したように、「日経ソフトウエア2011年6月号」の「iOSとAndroidで定番ゲームを作り比べ!」を使って勉強することにしました。

題材となる定番ゲームは「マインスイーパ」です。
恥ずかしながらてぃーはこのゲームを全く知りませんでした。
ウィンドウズに付属されているゲームなのにやったことがありませんでした。
だって、ウィンドウズについているゲームって何か仕事中に暇つぶしみたいにやるようなイメージがあるんですもの(失礼)。

ということで、まずはこのマインスイーパのルールから勉強を始めました。

ゲーム画面は正方形のマスが敷き詰められた長方形のフィールドから構成されている。それぞれのマスは開けることができるが、地雷の置かれているマスを開けると負けとなる。地雷の置かれていないマスを開けたときは、隣接する8マスのいずれかに地雷がある場合はその個数が表示され、隣接するマスに地雷が置かれていないときは、それらが自動的に開けられる。地雷の置かれていないマスをすべて開ければ勝ちとなる。
Wikipediaより)



試しにウィンドウズでやってみましたが、それなりに頭を使うゲームで楽しいですね。
ちょっとだけやろうと思っていつのまにやら1時間が経ってしまったくらいですから。


では、今回学習したことを書きます。
まず、本誌ではまずJavaでプログラムを記述します。
これはこの内容が、iOSとAndroid両方で使えるコードを書くことが目的なためです。
まずはJavaで書いて次に文法的に似たC++に変え、さらにObjective-C++にして
実装していきます。


要はJavaが分からないとこの内容が理解しづらいということになります。
てぃーは6年ほど前に一瞬だけJavaを勉強したことがあるので助かりました。
コードを書く場合、Xcodeのように入力補助があると楽なので、
マック用のEclipseをダウンロードして使うことにしました。
ダウンロード方法は次の記事を参考にしました。どうもありがとうございます。
 →Mac OS X LeopardでEclipse(javaとPHP)開発環境を整える | tonbyブログ

ちなみに、てぃーは日本語化はやっていません。
英語環境に慣れた方がiPhoneアプリ開発者としては有利ですからね。

ただし、標準の状態だと入力補助のキー割り当てが使えません。
マックのOSが使うコマンドになっているからです。
(Spotlightの入力待ちになってしまいます。)
そのため、キー割り当てを変更しました。
参考にさせていただいた記事は以下です。どうもありがとうございます。
 →Bloq : eclipse で補完キーバインド変更

てぃーが割り当て先としたのはEscキーです。そう、我らがXcodeと同じですね!!
これを使って楽にコードを打つことができました。


(クリックすると大きな画像が開きます。)

本誌を読んでギミックとしておもしろかったものを挙げます。

実際に見えているテーブルは、内部では各セルの状態を保持するのに2次元の配列を使っています。
ゲーム中、隣接する8マスの状態を何度も調べる必要が生じます。
テーブルの中央にあるマスでは単に8方向を調べればよいだけですが、テーブルの端にあるマスでは存在しないマスが出るためこの方法は使えません。
てぃーだと、テーブルの端にある場合は調べる方向を限定するように条件を入れ場合分けしますが、本誌ではなんとテーブルの周りに外周を作り、外周を表す定数を入れています
この方法だと場合分けする必要がなく、プログラムが簡単になりますね。
以前読んだ「リバーシのアルゴリズム」という本でも同様の手法が書いてあったことを思い出しました。
使わないと忘れてしまいますね(汗)。テーブルゲームでは常識なのかもしれません。

また、あるマスを開いたときに隣接するマスに地雷がなければ一気に開くのですが、それを実現する方法として「Flood Fill」というものがあることを知りました。
画面サイズが小さいiPhoneならば再帰呼び出しで実装できるので便利ですね。


次回は、いよいよiPhoneへの実装に入っていけると思います。
楽しみです。


↓この記事が参考になったら拍手をクリックお願いします。今後のブログ作りに役立てたいので。

関連記事

コメントの投稿

非公開コメント

プロフィール

てぃー

Author:てぃー
詳しい自己紹介:こちら
Twitter:@teapipin


follow us in feedly 
にほんブログ村 IT技術ブログへ にほんブログ村 PC家電ブログへ
現在の閲覧者数:

ブログ内検索
今日のアクセス数の多い記事
カレンダー

05月 | 2017年06月 | 07月
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -
過去記事ダイジェスト
お知らせ

ツイッター分析の分析結果が和歌山大学防災研究教育センターの論文に引用
防災の研究において評価!

2015年版ツイッター分析(世界編)が始動!
今回は世界の国別・言語別ツイートを分析!

ツイッター分析の分析結果が慶應義塾大学有名教授の研究論文などに引用
文系の研究までも制覇!

Interval Timer EX
有名雑誌「Mac Fan 2015月2月号」に「インターバルタイマーEX」が3度目の掲載!!ポモドーロテクニックに有効!

自作Macアプリ3部作が2014年 Vector 年間ダウンロードランキング Mac トップ100にすべてランクイン

TimeCalcを公開しています!
時間計算、年齢計算、学歴欄作成など。

ツイッター分析の分析結果が人工知能の研究に!
ブログが学会発表で引用されました。

今まで開発したiPhoneアプリのソースコードを公開しています!
勉強に役立ててください。


2013年 Vector 年間ダウンロードランキング Mac トップ100に「デジカメ変更日を撮影日に一括変更 for Mac」と「インターバルタイマーEX」がランクイン

Interval Timer EX
有名雑誌「Mac Fan 2013月4月号」に「インターバルタイマーEX」が2度目の掲載!!

リアルタイムツイッター地図
リアルタイムツイッター地図を公開しています!
位置情報付きツイートをリアルタイムに表示します。

新たなツイッター分析としてイベントツイート分析を行っています!

2012年8月1日(水)開催の「Twitter勉強会」で発表
ツイッター調査:約173万ツイートを調査して分かったTwitterの利用動向 #twtr_hack from teapipin


Interval Timer EX
有名雑誌「Mac Fan 2012月3月号」に「インターバルタイマーEX」が掲載!!



 

はてなブックマークの人気記事
ツイート&いいね!ランキング