cocos2d iphone之魔塔20層第十一部分

2021-08-27 09:58:39 字數 3798 閱讀 3542

這部分我們要新增怪物檢視了,首先我們看一下下面這張圖:

這就是我們所要實現的效果圖,我們很容易就能看到其相似的地方每個怪物顯示的內容都差不多。

我們這裡需要新增兩個類monsterinformation(檢視怪物資訊主介面)和monsterinformationcell(單個怪物顯示資訊塊)

首先我們來看一下monsterinformation.h檔案**:

#import

#import"cocos2d.h"

@class enemy;

@class hero;

@inte***ce monsterinformation : cclayer

//當前圖層怪物陣列

@property (nonatomic,retain) nsmutablearray *mosterarray;

//怪物列表數量

@property(nonatomic,assign)intmosterlistcount;

//是否移除介面

@property(nonatomic,assign)boolremoveview;

//載入怪物列表

-(void)viewinit:(enemy*) monster;

//更新損失血量

-(void)updatelosshp;

@end

這個類有三個屬性,第乙個就是儲存當前圖層怪物資訊的陣列,第二個怪物列表的引用計數,第三個就是用於判斷介面是否可以移除。

然後我們開始新增monsterinformation.m檔案**:

#import"monsterinformation.h"

#import"monsterinformationcell.h"

#import"monster.h"

#import"hero.h"

@implementation monsterinformation

@synthesize mosterarray;

@synthesize mosterlistcount;

@synthesize removeview;

-(id)init

returnself; }

-(void)viewinit:(enemy*) monster

else }

if (!sa)}}

-(void)updatelosshp

}} while (enemyhp >0);

[cell updatelosshp:_herohp];}}

}@end

我們的檢視怪物資訊主介面有了,下面我們來講一下monsterinformationcell這個類,先看一下頭檔案:

#import

#import"cocos2d.h"

#import"monster.h"

@inte***ce monsterinformationcell :cclayer

@property(nonatomic,retain)

enemy

*enemy;

@property(nonatomic,assign)intcount;

//初始化怪物資訊標籤

-(void)viewinit:(enemy*) monster;

//更新損失生命

-(void)updatelosshp:(int) losshp;

@end

我們這個類只有乙個需要更新的標籤就是勇士損失血量標籤,還有兩個屬性,乙個是怪物,乙個是怪物個數。還有兩個方法,乙個是初始化標籤,乙個是用於更新勇士要損失的血量。下面我們來看一下實現檔案中的**:

#import"monsterinformationcell.h"

@implementation monsterinformationcell

@synthesizeenemy;

@synthesizecount;

-(id) init

returnself; }

-(void)viewinit:(enemy*) monster

//更新損失生命

-(void)updatelosshp:(int) losshp

@end

這裡面全都是標籤就不多說了。我們再來看以下monsterinformation中的更新血量的方法,通過遍歷陣列得到怪物的資訊,進行損失血量的判斷並更新。好了這兩個類建好了,下面就是該在那裡用、怎麼用的問題了。有兩種方式一種是在遊戲中需要檢視的時候初始化它;另一種就是直接在載入地圖的時候建立它,把它當成地圖的一部分,然後使用是時候直接呼叫它。兩種方式的優略我就不講了,有興趣的可以兩種都試試。這裡我使用的是第二種方式,所以我們下面就要在titledmap中新增**了。

首先我們要新增乙個屬性:

@property(nonatomic,retain)

monsterinformation

*monsterinfor;

並在初始化方法中例項化monsterinfor:

self

.monsterinfor= [[[monsterinformation

alloc

]init

]autorelease];

然後我們再新增乙個用於建立我們的怪物資訊介面的方法:

-(void)createmonsterinformation}}

return; }

在這裡我們遍歷怪物圖層獲取怪物資訊並新增到怪物資訊介面中。

然後我們在初始化方法中呼叫它。

[self

createmonsterinformation];

下面就讓我們在game01中呼叫它吧!

昨天我們已經把圖示新增上了,現在我們就來新增它的響應事件:

if(openpredict) }

}}這部分**新增到樓層飛行器觸控檢測下面,並在樓層飛行器移除方法下面

截圖如下:

這部分**中有乙個開關變數openpredict,控制是否開啟洞悉權杖,應為我們的遊戲中有乙個道具只有吃到它的時候才可以使用它,所以我們要在道具檢測的if(value4)中新增:

openpredict=

yes;

另外還呼叫到乙個新的方法onpredict:

//更新並載入檢視怪物資訊介面

-(void)onpredict

}這樣我們的洞悉權杖就可以使用了,不過為了測試我們可以把openpredict這個開關變數在初始化方法中賦值為yes。執行一下看看是否跟我們開頭部分的效果圖一樣呢。如果一樣的話我們就來新增這部分最後一部分**吧!

這部分**要實現的功能是:把已死亡怪物的資訊從我們的怪物資訊檢視介面中移除掉。顯然這部分**要新增到移除怪物的方法(removeenemy)中去,**如下:

monsterinformationcell*removecell =

nil;

for(monsterinformationcell*cell

inself

.curtitlemap.monsterinfor.mosterarray) }

}//如果有怪物資訊標籤被移除則從陣列中刪除,並重新布局介面

if (removecell)

}好了我們這部分內容就新增完畢了。執行一下試試吧!截圖:

到這裡我們的遊戲教程就快要結束了!!!

Cocos2D iPhone開發思考

主頁 最近看了 ios 5 cocos2d遊戲開發實戰 第2版 這本書,對cocos2d這款遊戲引擎產生了濃厚的興趣。由於本書並沒有對cocos2d的前世今生做明確的交代,出於對cocos2d遊戲引擎的喜愛,我在網際網路搜尋了cocos2d相關的歷史,也看了其作者ricardo自己對cocos2d的...

關於cocos2d iphone小總結

1.導演通常只有乙個,因此這個物件是單例 signleton cocos2d iphone框架已經預定義了該例項,不需建立,我們直接使用就可以。2.director 物件管理場景的方法主要有以下幾個 1.主程式啟勱,顯示第乙個場景的方法 void runwithscene scene scene 2...

cocos2d iphone之魔塔20層第五部分

這部分教程源 連線 這一章我們就要開始在game01.m檔案中canmoveto 方法中的if迴圈中添 加相應的事件了,我在製作地圖時圖塊都設定了其屬性如圖 這裡我就要獲取其屬性值 nsdictionary props self.curtitlemap propertiesforgid enemy ...