【勉強】マインスイーパ(その4) by 日経ソフトウエア2011年6月号
前回に引き続き、「日経ソフトウエア2011年6月号」の「iOSとAndroidで定番ゲームを作り比べ!」のマインスイーパの勉強です。
今回はMinesweeperView.mです。
おっと、その前に大きな勘違いをしていたので修正です。
なんとこの雑誌の名前は「日経ソフトウェア」ではなく、「日経ソフトウエア」でした。
「エ」は小さくないんです。大きいんです。
結構前から知っている雑誌なのに今まで全然気づきませんでした。
なぜなんでしょう!?キヤノン(これは正しく書けていた→証拠)のように、
穴が空いたように感じてしまうのでそれを避けたのでしょうか(Wikipediaを参考)。
まあ理由がわかりませんが、以前の記事は気が向けば修正したいと思っています。
さて、MinesweeperView.mについてですが、主に描画用のdrawRectメソッドと、
タッチイベント感知のonTouchEvent・onLongPress(長押し用)から構成されています。
描画用のdrawRectメソッドは、立ち上げ時とイベント発生時の再描画で呼ばれることで
常に画面をリフレッシュするメソッドです。
ためになったギミックを2点紹介します。
タッチイベントでは、どの箇所をタッチしたかを調べるために以下のようにしていました。
CGPoint location = [recognizer locationInView:self];CELLは1セルの画像の一辺の長さです。
int x = location.x / CELL;
int y = location.y / CELL;
各座標をCELLで割ることで、内部データのどのセルが判明します。
つまり、現実世界と中身の世界をつなげてくれる役割ですね。
テーブルゲームはこのように作られているということが分かりました。
また各イベントの最初に、
//NSLog(@"onTouchEvent");というふうにイベント名をコンソールログに出力させる記述がコメントアウトされていました。
これは作者の方がデバッグでそのメソッドに入ったことを確認されながら作成されたことを示すものですね。
自分の中にないものは吸収していけるので、本当に他の方のコードを読むのはためになります。
てぃーはこのマインスイーパを通じて、一般的なテーブルゲームの作り方だけでなく、
iPhoneアプリの根本的な考え方が磨かれたと思いました。
このような勉強は今後も続けていきたいものです。
↓この記事が参考になったら拍手をクリックお願いします。今後のブログ作りに役立てたいので。
- 関連記事
-
- 【勉強】マインスイーパ(その6/最終回) by 日経ソフトウエア2011年6月号 (2011/05/19)
- 【勉強】マインスイーパ(その5) by 日経ソフトウエア2011年6月号 (2011/05/15)
- 【勉強】マインスイーパ(その4) by 日経ソフトウエア2011年6月号 (2011/05/10)
- 【勉強】マインスイーパ(その3) by 日経ソフトウエア2011年6月号 (2011/05/08)
- 【勉強】マインスイーパ(その2) by 日経ソフトウエア2011年6月号 (2011/05/05)