原文鏈接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
咱們的遊戲地圖有8個圖層截圖以下 orm
heroPoint:英雄樓層傳送點,door:門 ,downfloor:向下樓梯 ,upfloor:向上樓梯 ,enemy:敵人 , htm
item:物品 ,road:路 ,wall:牆
準備工做就到這裏了,下面咱們開始新建項目
新建項目名稱爲:磨塔
以下圖所示:
建好項目以後運行一下,運行成功以後把HelloWorldLayer文件刪除
而後在建兩個文件Menu和Scenemanager以下圖所示:
Menu.h文件代碼:
#import<Foundation/Foundation.h>
#import"cocos2d.h"
#import"Scenemanager.h"
//菜單
@interface Menu :CCLayer {
}
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
}
Scenemanager.h 文件代碼
#import<Foundation/Foundation.h>
#import"cocos2d.h"
//場景管理器
@interface Scenemanager :CCLayer
{
CCScene *scene;
}
//切換場景
+(void) goMenu;
+(void) goPlay;
Scenemanager.m 文件代碼
#import"Scenemanager.h"
#import"Menu.h"
//定義私有的類方法
@interfaceScenemanager()
+(void) go:(CCLayer*) layer;
+(CCScene*) wray:(CCLayer*) layer;
@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;
}
接下來找到AppDelegate.m文件
找到代碼修改爲
找到代碼修改爲
完成以後運行一下就會出現開始菜單了:
運行以後你會發現點擊開始遊戲沒有反應,那就對了,尚未添加響應事件呢。
這個魔塔遊戲以前使用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;
Scenemanager.m代碼:
[html] view plaincopy
接下來把IntroLayer中的「HelloWorldLayer」換成"Scenemanager",而後在把
改爲
就行了,以後按照教程寫就行了
下一篇咱們在開始正式的開始遊戲部分教程。