落ち物パズルを作る:15歳からはじめる iPhone わくわくゲームプログラミング教室(5章)

前回まで、「cocos2d for iPhone レッスンノート」という参考書で、サンプルゲームを作りながらiPhoneアプリ開発の勉強をしました。次から、参考書のサンプルを写すのは止めて、cocos2dを使ってオリジナルのアプリ作りを始めるぞ!と勢い勇んでいたのですが、

いきなり躓いてcocos2dで作っていく自信を失いました。と言う訳で、「15歳からはじめる iPhone わくわくゲームプログラミング教室」へ戻って、cocos2dよりはノウハウがネットに落ちてそうなCore Animationを学習し直すことにしました。寄り道ばっかりでフラフラしてますが、人間ですから仕方ありません。

また、せっかくなので、やらなかった5章の「落ち物パズルを作る」をやってみることにしました。

■5-1:
IMG_3937
落ち物パズルについての説明を受けながら、今回作るゲームの仕様が決まります。
所謂、「テトリス」や「ぷよぷよ」のことですね。
3章同様に、親切なプロジェクトの用意の仕方が説明されています。
素材を読み込んで、背景を表示させるところで終わります。
後で気が付いたのですが、節が進むごとにフローチャートが進化していく過程を見ると、実装されていく機能がとても分かりやすいです。

■5-2:
IMG_3940
まず、ブロックを落とすところから作ります。3章の時のように、複数のレイヤーを用意します。また、3種類のブロックをランダムに出現させる方法も学びます。
それから、NSTimerを使って一定間隔に、ブロックを落とすことも学びます。今回、3章の神経衰弱と違うのは、タイマーを使って時間軸の処理が入ることです。さらに、サブルーチンへのフローチャートが掘り下げられていて、処理が分かりやすく解説されています。

IMG_3939
後半では、ブロックの積み上げ(当たり判定)を学びます。フローチャートも分岐して、段々と処理が複雑になっていきます。
コラムで説明されている連鎖についての話が面白く、「挑戦してみよう」と書かれていたのですが、私はスルーしました。w

■5-3:
IMG_3941 
スワイプ(画面で指をスライドさせる)でブロックを動かす方法を学びます。タップするだけの3章よりも、少し複雑なタッチ処理になってきました。
左右でブロックの移動、上下でブロックの位置を変更します。フローチャートも多分岐化して、どんどん複雑になっていきます。
本に1箇所間違いがありました。P.164の27行目で、左右の移動制限をするif文がありますが、右端は280.0ではなく320.0でした。

■5-4:
IMG_3942
3個以上並んだブロックを消す方法を学びます。行と列でhitTestして当たり判定を調べます。
2節のコラムにあるように、本のままのコードだと連鎖しないので、ゲームとしてはクリアが難しいです。ただ、私は落ち物ゲームを作りたいわけではないので、理解せずブラックボックスのままスルーしました。w

■5-5:
IMG_3943
最後の仕上げです。初期状態のブロックをランダムに配置し、ゲームクリアの要素である月ブロックを追加します。更に、クリア条件も追加します。
オープニング画面などは、3章を参考にして自分でチャレンジとあったので、ここは挑戦しました。
alertでダイアログにメッセージが表示されるだけのクリア画面とゲームオーバー画面を、3章のクリア画面を参考に作りました。あと、タイトルは3章の通りに簡単に付けられました。

後半は、BGMとSEを付けます。3章とほとんど同じ技術を使います。
本の通りに入力すると、P.185の13行目にsePlayer2を入れても、何故か落ちた時の音がなりませんでした。代わりに17行目と18行目の間に、sePlayer2を入れたら鳴るようになりました。


出来上がったゲームの映像です。本書にはCD-ROMが付いていないので、素材を自分で用意する必要があります。
音は、持っていた著作権フリー音源を使いました。
(素材が入ったサンプルプロジェクトは、コチラでダウンロードできます)。

と言う感じで、再びCoreAnimationの使い方を学び、ようやくオリジナルのアプリを作る気になってきました。
前回、「cocos2d for iPhone レッスンノート」で鍛えられたこともあり、Xcodeの使い方やObjective-Cの書き方に慣れてきたお陰で、今回はスムーズ入力が出来ました。
Objective-C自体の入門書も手に入れたので、次こそはオリジナルアプリの制作に入っていきます

★★★自作iPhoneアプリをAppStoreでリリースするまでの道のり★★★