cocos2d-iphone之魔塔20层第一部分

原文链接http://blog.csdn.net/fire_work/article/details/8601606 html

这是我第一次写博客,刚开始学习ios的时候我本身学了一个月基础就开始搜索各类游戏教程我发现大多数都 node

是很基础,很简单的游戏,我跟着教程学到了不少东西,后来我想找一个魔塔开发教程,但是怎么搜都搜不到, ios

后来我只能本身制做了,这里我写成教程供你们参考、学习。 app

  这款游戏是用cocos2d制做的,cocos2d-iphone的安装教程  http://www.himigame.com/iphone-cocos2d/415.html himi的博客链接地址 iphone

  咱们制做这款游戏首先要学会使用Titled 地图编辑器,我在这里就不在详细讲解如何使用地图编辑器了,himi 编辑器

和子龙山人的博客中都有教程,有兴趣的童鞋能够去看看。 学习

咱们的地图制做完成后的截图以下: .net

  1361504365_6150.png

咱们的游戏地图有8个图层截图以下 orm

1361504814_1171.png

    heroPoint:英雄楼层传送点,door:门 ,downfloor:向下楼梯 ,upfloor:向上楼梯 ,enemy:敌人 , htm

item:物品 ,road:路 ,wall:墙

   准备工做就到这里了,下面咱们开始新建项目

新建项目名称为:磨塔 

以下图所示:

1361506719_6084.png


建好项目以后运行一下,运行成功以后把HelloWorldLayer文件删除

而后在建两个文件Menu和Scenemanager以下图所示:

1361508180_4262.png

Menu.h文件代码:


#import<Foundation/Foundation.h>

#import"cocos2d.h"

#import"Scenemanager.h"

//菜单

@interface Menu :CCLayer {    

}

@end


Menu.m文件代码


#import"Menu.h"

@implementation Menu

-(id) init

{

    if ((self = [super init]))

    {

        CGSize size = [[CCDirector sharedDirector] winSize];//获取屏幕大小

        //背景图

       CCTMXTiledMap *tilemap = [CCTMXTiledMaptiledMapWithTMXFile:@"background.tmx"];

        tilemap.scale =1.5;

        tilemap.anchorPoint =CGPointZero;

        [selfaddChild:tilemap];

       //设置菜单项样式

        CCSprite *mota = [CCSprite spriteWithFile:@"魔塔.png"];

        mota.position =ccp(size.width /2 +15, size.height -150);

        [selfaddChild:mota];

        CCSprite *magic = [CCSprite spriteWithFile:@"magic.png"];

        magic.position =ccp(size.width /2, size.height -280);

        [selfaddChild:magic];

        //添加菜单项

        CCSprite *playsp1 = [CCSprite spriteWithFile:@"playGame.png"];

        CCSprite *playsp2 = [CCSprite spriteWithFile:@"playGame.png"];

        playsp2.position =ccp(-20, -10);

        playsp2.scale =1.1;

        CCMenuItemSprite *play = [CCMenuItemSpriteitemFromNormalSprite:playsp1selectedSprite:playsp2target:selfselector:@selector(Play)];

        CCSprite *introducesp1 = [CCSprite spriteWithFile:@"gameintroduce.png"];

        CCSprite *introducesp2 = [CCSprite spriteWithFile:@"gameintroduce.png"];

        introducesp2.position =ccp(-20, -10);

        introducesp2.scale =1.1;

        CCMenuItemSprite *introduce = [CCMenuItemSpriteitemFromNormalSprite:introducesp1selectedSprite:introducesp2target:selfselector:@selector(Pntroduce)];

        CCSprite *exitsp1 = [CCSprite spriteWithFile:@"exitGame.png"];

        CCSprite *exitsp2 = [CCSprite spriteWithFile:@"exitGame.png"];

        exitsp2.position =ccp(-20, -10);

        exitsp2.scale =1.1;

        CCMenuItemSprite *exit = [CCMenuItemSpriteitemFromNormalSprite:exitsp1selectedSprite:exitsp2target:selfselector:@selector(Exit)];

        CCMenu *menu = [CCMenu menuWithItems:play,introduce,exit, nil];

        //

        [menualignItemsVertically];

        [selfaddChild:menu];

        play.position =ccp(0,0);

        introduce.position =ccp(0, -100);

        exit.position =ccp(0, -210);

    }

   returnself;

}

-(void) Play

{

    [ScenemanagergoPlay];

}

-(void)Pntroduce

{

}

-(void) Exit

{

    [[CCDirectorsharedDirector]end];

#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)

exit(0);

#endif

}


@end

Scenemanager.h 文件代码


#import<Foundation/Foundation.h>

#import"cocos2d.h"

//场景管理器

@interface Scenemanager :CCLayer 

{

    CCScene *scene;

}

//切换场景

+(void) goMenu;

+(void) goPlay;

@end

Scenemanager.m 文件代码

#import"Scenemanager.h"

#import"Menu.h"

//定义私有的类方法

@interfaceScenemanager()

+(void) go:(CCLayer*) layer;

+(CCScene*) wray:(CCLayer*) layer;

@end

@implementation Scenemanager

//进入菜单

+(void) goMenu

{

    CCLayer *layer = [Menu node];

    [Scenemanagergo:layer];

}

//开始游戏

+(void) goPlay

{

}

//切换场景

+(void) go:(CCLayer*) layer

{

    CCDirector *director = [CCDirector sharedDirector];

    CCScene *newScene = [Scenemanager wray:layer];

    if ([director runningScene]) 

    {

        [director replaceScene:newScene];

    }else

    {

        [director runWithScene:newScene];

    }

}

//初始化场景

+(CCScene*) wray:(CCLayer *)layer

{

    CCScene *newScene = [CCScene node];

    [newScene addChild:layer];

    return newScene;

}

@end

接下来找到AppDelegate.m文件

找到代码1361510632_5360.png修改为1361510694_9098.png

找到代码1361510731_8973.png修改为1361510758_5187.png


完成以后运行一下就会出现开始菜单了:

1361510937_9256.png


运行以后你会发现点击开始游戏没有反应,那就对了,尚未添加响应事件呢。

这个魔塔游戏以前使用cocos2d-iphone 1.0作的,有些用cocos2d-iphone 2.0作

的同窗就晕了这第一部分的为啥跟个人不同呢,今天呢我就说一下如何用2.0

作这个游戏,只有第一部分的不同,后面的部分不变。

   其实,这里一样是先把HelloWorldLayer删除掉而后添加Scenemanager和

Menu两个文件,Menu部分代码不变。

Scenemanager.h代码:


#import <GameKit/GameKit.h>

#import "cocos2d.h"

@interface Scenemanager : CCLayer <GKAchievementViewControllerDelegate, GKLeaderboardViewControllerDelegate>

{

}

+(CCScene *) goMenu;

+(CCScene*) goPlay;

@end


Scenemanager.m代码:


[html] view plaincopy


  1. #import "Scenemanager.h"  
  2. #import "AppDelegate.h"  
  3. #import "Menu.h"  
  4.   
  5. #pragma mark - HelloWorldLayer  
  6.   
  7. @implementation Scenemanager  
  8. +(CCScene *) goMenu  
  9. {  
  10.     CCScene *scene = [CCScene node];  
  11.     Menu *layer = [Menu node];  
  12.     [scene addChild: layer];  
  13.     return scene;  
  14. }  
  15. +(CCScene*)goPlay  
  16. {  
  17. }  
  18. - (void) dealloc  
  19. {  
  20.     [super dealloc];  
  21. }  
  22.   
  23. #pragma mark GameKit delegate  
  24.   
  25. -(void) achievementViewControllerDidFinish:(GKAchievementViewController *)viewController  
  26. {  
  27.     AppController *app = (AppController*) [[UIApplication sharedApplication] delegate];  
  28.     [[app navController] dismissModalViewControllerAnimated:YES];  
  29. }  
  30.   
  31. -(void) leaderboardViewControllerDidFinish:(GKLeaderboardViewController *)viewController  
  32. {  
  33.     AppController *app = (AppController*) [[UIApplication sharedApplication] delegate];  
  34.     [[app navController] dismissModalViewControllerAnimated:YES];  
  35. }  
  36. @end  


接下来把IntroLayer中的“HelloWorldLayer”换成"Scenemanager",而后在把


1361863864_4811.png

改为1361863921_5393.png

就行了,以后按照教程写就行了


下一篇咱们在开始正式的开始游戏部分教程。

相关文章
相关标签/搜索