【勉強】cocos2d for iPhoneレッスンノート(その3、第2章の後半)


「cocos2d for iPhoneレッスンノート」を使った勉強の記録です。

cocos2d for iPhoneレッスンノートcocos2d for iPhoneレッスンノート
(2011/09/22)
加藤寛人、佐藤伸吾 他

商品詳細を見る


目次とサンプルのダウンロードはこちら

昨日とおとといの2日間「cocos2d for iPhoneレッスンノート」の「第2章 神経衰弱ゲームを作ろう」を勉強しました。
今回は2.3.4以降の内容について注目した点について書いてみます。


1.タップした位置のカードの判定処理(当たり判定)について(71ページ~、81ページ~)
コードは以下のようになっていました。

            Card *card = [gameScene.cards objectAtIndex:i];
            float h = sprite.contentSize.height;
            float w = sprite.contentSize.width;
            float x = sprite.position.x - w/2;
            float y = sprite.position.y - h/2;
            CGRect rect = CGRectMake(x, y, w, h);
          
            if (CGRectContainsPoint(rect, location)) {
               //NSLog(@"Hit %d", i);
               [self tapCard:card sprite:sprite];
               [self checkCard:card sprite:sprite];
               break;
            }



for文でループさせて順にカードを判定し、該当するものがあればループを出るという仕組みでした。
リアルタイムなアクションゲームでも同様にするのでしょうか?今のところ謎ですね。

CGRectContainsPoint(rect, location)というのはタッチした位置CGPointがある領域CGRectに含まれている場合にYESを返すメソッドのようです。
これのおかげで当たり判定がかなり楽になりますね。
てぃーは残念ながらこのメソッドを今まで知らなかったので以前ちょっと作ってみたアクションゲームでは、「ある点(四角形の中心)と対象の中心の距離が2つの四角形の1辺の半分の和より小さいとき」という条件式を作って判定していました。
「車輪の再発明」に近い状態になっていました。。

「車輪の再発明」Wikipediaより一部抜粋)

車輪を題材にした慣用句であり、世界中で使われている。「広く受け入れられ確立されている技術や解決法を知らずに(または意図的に無視して)、同様のものを再び一から作ること」を意味する。主にIT業界、とくにSEやプログラマの間で良く用いられる。これらの業界では、ライブラリや先行事例があるにもかかわらず、様々な理由でそれを利用せず、コードやプログラミング技法を再び一から作ってしまうことが多い。

なお、教育の現場では、ある技術の意味を理解させるために、意図的に「車輪の再発明」を行わせる場合がある。またプログラマもしばしばその技術を深く理解して自身の技術を向上させるために敢えて「車輪の再発明」をすることもある。


知らないということは悲しいことです。。。
次回からは既成のものを使おうと思ってももう自分で作ってしまったので作り損ですね。。。
プログラムのコード全体は本に書いていることを自分で書くことで勉強のために“再発明”しているのでいいですが、各ギミックに関してはそうじゃないわけですから。


2.2つのカードが一致しているかの判定について(99ページ~)
めくったカードをCardクラス(turnOver1、turnOver2)に入れ、checkCardメソッドで2つのクラスのtypeプロパティが等しいかで判定していました。
以前日経ソフトウエアを使った「マインスイーパ」では、内部的には格子に並べた全カードを配列で保持して判定していたので、すべてのテーブルゲームはこのように作られるものと思い込んでいました。
今回はそうでなかったので人それぞれということが分かりました。


3.エフェクトについて(104ページ~)
カードが当たりの時と外れの時の演出としてエフェクトを使っていました。
cocos2dでは各種のエフェクトが用意されているため容易に使えることが分かりました。


全体的にみるとcocos2dを勉強するのにとてもいいコードということが分かりました。
1点ちょっとつらいと思うのは、カードに関する変数をプロパティ値として持っているため、新しい値を追加するたびにプロパティとしての設定を記述する必要がある点です。
コードスニペットや自動生成機能ツールがあるわけでないので結構面倒でした。
(ちなみにてぃーの会社ではVisual Basic、Visual C#用にプロパティを自動的に作ってくれるツールがあるので楽です。1つのクラスにプロパティが数百あるものが多いので)。
外部から接続しないクラスでわざわざプロパティを設定する必要はないと思うのですがいかがでしょうか。
できるだけ楽に書くことが重要ですが、もしプログラムを追加して外部から接続するようになった場合は便利でしょう。
そのへんの天秤が悩ましいですね!!


以上、他の人のコードを読むのはほんと勉強になりますね。
たった数千円で知識が容易に習得できるわけですから!

このようなすばらしい本を作成された執筆者の方には感謝いたします。

次回は第3章の内容について書いていこうと思います。




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

コメントの投稿

非公開コメント

プロフィール

てぃー

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


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

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

08月 | 2017年09月 | 10月
- - - - - 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」が掲載!!



 

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