iphoneアプリ「田中部長」

iphoneアプリ作りました。

田中部長となって、次々と出される書類にハンコを押す(タップする)ゲームです。
iphoneの傾きをつかって、書類をまっすぐにしてハンコをまっすぐ押すと
「優」判定で高得点。優判定を連続で行うとコンボ発動で高得点を狙えます。
ちなみに、どんどん書類のスピードが速くなり難易度が上がっていくのでのんびりしてる暇はありませんよ。
自分のハイスコアは4500点です・・

さて、実際にiphoneアプリを制作してみると・・このくらいのゲームだったら意外と簡単に作れます。
objective-Cを勉強しないとって思ってんだけど、OpenGL使ってる分にはほとんどC++で書けたので楽でした。

itunesストアで確認

↓の本をひと通り目を通したらなんとなく開発方法がわかった!おすすめ。



2,940円 OpenGLで作るiPhone SDKゲームプログラミング







cocoa始めました。

Macのアプリを開発するために、cocoaを始めました。
そしてiphoneアプリを作ります!!

とりあえず、Macのアプリを作ろう!
MacはOSを買うと、もれなくX-codeという開発環境が付いてくる。無料で高度なプログラム開発キットが付いてくるなんて、なんて素晴らしいんだろう。
でも言語がobjective-cという、またマイナーな言語っぽいので覚えるのがめんどそう。

とにかくグラフィックさえ描画できれば簡単なゲームくらい作れるだろうと思って
試行錯誤。
外部ファイルではなくリソースにある、画像(png,jpnなど)を表示できれば、いいなと思って検索していたんだけど、なかなか見つからない、もしくは難しくて良くわかんない。
やっとん・ぱか工房さんのところで自分がやりたいこととマッチするの発見。ありがとうございます。

で、小一時間後・・・(かかりすぎだ)
なんとかできたー
32×32のマップのチップをPNGで準備してそれを表示させることが出来ました!
これさえできれば、パズルゲームだってRPGだって!できるはず・・・・
スクリーンショット(2009-12-13 0.58.48)

以下よくやりそうなんで覚書。

1.プロジェクト作成
X-codeを起動して、新規cocoaアプリケーションを作る。

2.描画用のクラスを作る
開いたプロジェクトウィンドウで、classesを右クリック。新規追加で画面描画用のクラスを追加。
スクリーンショット(2009-12-13 0.54.35)
その時にsub class of を、NSViewにする。
スクリーンショット(2009-12-13 1.11.08)
プロジェクトウィンドウに、新しい、.hと.mができる。(今回はmainViewとしたので、mainView.h , mainView.m)
スクリーンショット(2009-12-13 1.13.29)

3.インターフェースビルダーでCustomView作成
今作ったクラスをウィンドウに関連付けるために、まずはインターフェスビルダーを起動
プロジェクトウィンドウのResourcesの中にあるMainMenu.xibをダブルクリックで起動します。
スクリーンショット(2009-12-13 0.56.26)

インターフェースビルダーで、ライブラリーにある、Custom Viewをウィンドウにドラッグして配置。
スクリーンショット(2009-12-13 0.57.09)

配置したCustom Windowを選択して、Inspectorパレットの一番右のタブの中にあるclassの設定で、さっき作ったクラス名をいれる。(mainView)
スクリーンショット(2009-12-13 0.57.22)

4.リソースに画像読み込み
プロジェクトウィンドウのResourcesを右クリックして、追加、既存のファイルで
読み込みたい画像を指定。
スクリーンショット(2009-12-13 11.04.39)
これで、リソースに登録されます。

5.mainView.hのコード

#import <Cocoa/Cocoa.h>
@interface mainView : NSView {
	NSImage *_imgWall;//イメージ
}
//イメージの読み込み処理
- (NSImage*)loadImage:(NSString*)name;
//イメージの描画処理
- (void)drawImage:(NSImage*)image x:(float)x y:(float)y;
@end

6.mainView.mのコード

#import "mainView.h"
@implementation mainView

- (id)initWithFrame:(NSRect)frame {
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code here.
		_imgWall=[[self loadImage:@"wall.png"] retain];
		
    }
    return self;
}
//メモリ解放
- (void)dealloc {
    [_imgWall release];
    [super dealloc]; 
}
//左上原点
- (BOOL)isFlipped {
    return YES;
}
- (void)drawRect:(NSRect)dirtyRect {
    // Drawing code here.
	//32x32のPNGを横に20個、縦に15個敷き詰める。
	int bx;
	int by;
	for(by=0;by<15;by++){
		for(bx=0;bx<20;bx++){
			[self drawImage:_imgWall x:(bx*32) y:(by*32)];
		}
	}
}

//イメージ読み込み処理
- (NSImage*)loadImage:(NSString*)name {
    NSImage *image=[NSImage imageNamed:name];
    if (image==nil) return nil;
    [image setFlipped:[self isFlipped]];    
    return image;
}
//イメージの描画処理
- (void)drawImage:(NSImage*)image x:(float)x y:(float)y {    
    //描画元の領域
    NSRect frRect;
    frRect.origin.x=0;
    frRect.origin.y=0;
    frRect.size=[image size];
    
    //描画先の領域
    NSRect drRect;
    drRect.origin.x=x;
    drRect.origin.y=y;
    drRect.size=[image size];
    
    //描画処理
    [image drawInRect:drRect fromRect:frRect operation:NSCompositeSourceOver fraction:1.0f];
}
@end

出来上がり!!

Webで検索する前には、下記の本をかって、チュートリアル的なのやりました。
X-codeの使い方やinterFace builderの基本操作が、簡単なアプリを作りながら学習できたので良かったです。



2,835円 CocoaではじめようMac/iPhoneプログラミング入門