Objective C中小怪獸的邏輯

2021-09-23 21:41:48 字數 3346 閱讀 2495

學習objective-c的物件導向也有一段時間了,為了犒勞自己的學習成果,寫個小怪獸來犒勞一下自己把。在lol中有怪獸和英雄的角色吧,接下來就先寫乙個小怪獸的類吧。從小怪獸的角度來講,怪獸都有那些行為和屬性呢?最重要的兩點是小怪獸要打英雄對吧,「攻擊英雄」的行為是少不了的,另乙個是小怪獸打不過怎麼辦呢?打不過就跑唄,順理成章,得有「逃跑」行為吧。要想跑得會動,所以得有「移動」

的行為吧。

小怪獸除了上面的基本行為外,還有那些屬性呢?小怪獸在攻擊英雄的同時生命力是由變化的,會由乙個值變到另乙個值,所以得有「當前的生命力」和「原來的生命力」,同時「攻擊力」和「防禦力」對於小怪獸來說也是必不可少的,移動時得有「當前位置」和「原來位置」

。下面的**執行的環境是xcode5.0.2版本。

一.在計算機中位置一般是由座標來實現的,所以座標類是要有的。以下是定義座標的inte***ce, 存放在location.**件中

**說明:

1.下面有兩個屬性表示座標x和y,分別給x和y編寫setter和getter方法

2.為了初始化為該類定義類便利建構函式

3.為了方便檢視座標,為該類定義類display方法,便於顯示座標

編寫implementation,對於的檔案為location.m

//

// location.m

// hellooc

//// created by ludashi on 14-7-27.

//#import "location.h"

@implementation location

//實現便利初始化函式

- (id) initwithx : (int)vx

andy : (int)vy

return self;

}//實現便利建構函式

+ (id) locationwithx:(int)vx

andy:(int)vy

//set方法

-(void) setx:(int)vx

-(void) sety:(int)vy

//x和y的獲取方法

- (int) getlocationx

- (int) getlocationy

- (void) display

@end

二.為了節省篇幅小怪獸類的inte***ce就省略不寫了,下面是小怪獸的屬性

@private

//當前生命值

int currentlifevalue;

//原始生命值

int originallifevalue;

//當前位置

location *currentlocation;

//原始位置

location *originallocation;

//攻擊力

int attack;

//防禦力

int defense;

1.為了小怪獸的移動打基礎,必須有個方法能夠更新位置,也就是實現如果小怪獸要移動,那麼必須有新的座標產生,這個新的座標就是小怪獸要移動的位置,移動時把原有的座標更新成現在小怪獸在的地方,而currentlocation跟新成要移動的位置。**如下:

//設定當前位置

- (void) setcurrentlocation:(location *)vcurrentlocation

2.小怪獸類要想快速的複製更多的小怪獸,必須得有便利初始化方法和便利建構函式,**如下

//便利初始化方法,初始化原始生命力和原始位置以及攻擊力和防禦力

- (id) initwithoriginallifevalue:(int)voriginallifevalue

andoriginallocation:(location *)voriginallocation

andattack:(int)vattack

anddefence:(int)vdefence

return self;

}//便利構造器

+ (id) monsterwithoriginallifevalue:(int)voriginallifevalue

andoriginallocation:(location *)voriginallocation

andattack:(int)vattack

anddefence:(int)vdefenceon

3.小怪獸用攻擊英雄得會動吧,移動時要給小怪獸下達個指令讓它去哪,得有個座標能傳入到move函式中,**如下

//移動行為

-(void) move : (location *)vcurrentlocation

4.小怪獸的使命是什麼呢,當然是攻擊英雄啦,但是攻擊英雄是有好處的,會提高防禦力,和攻擊力哦,所以攻擊英雄的同時需要更新攻擊力和防禦力

//攻擊英雄行為

- (void) attackhero

5.小怪獸不是什麼正人君子,所以打不過他就跑,下面是逃跑的方法

//逃跑行為

- (void) escape

測試執行結果如下:

2014-07-27 18:55:19.240 hellooc[1617:303] 從位置(0, 0), 移動到了(10, 20)

2014-07-27 18:55:19.242 hellooc[1617:303] 從位置(10, 20), 移動到了(100, 200)

2014-07-27 18:55:19.242 hellooc[1617:303] 從位置(100, 200), 移動到了(200, 300)

2014-07-27 18:55:19.242 hellooc[1617:303] 攻擊英雄,攻擊力增為11, 防禦力增加為11

2014-07-27 18:55:19.243 hellooc[1617:303] 攻擊英雄,攻擊力增為12, 防禦力增加為12

2014-07-27 18:55:19.243 hellooc[1617:303] 攻擊英雄,攻擊力增為13, 防禦力增加為13

2014-07-27 18:55:19.243 hellooc[1617:303] 打不過就跑吧,攻擊力減為12, 防禦力減為:12

上面就是小怪獸的基本邏輯,利用物件導向來描述小怪獸的好處是好擴充,比如逃跑會有什麼其他後果,可以在不改動原來**的基礎上增加相應的方法或者類。通過小怪獸的邏輯希望大家會更好的理解物件導向的思想。

python 奧特曼打小怪獸的簡單版

from random import randint 匯入randint函式 class monster object def init self,name,energy self.name name self.energy energy if self.energy 100 print self....

Objective C 定義的型別

以下列出的是objective c內建的型別集合 型別定義 id物件的引用 指向其資料結構的指標 class類物件的引用 指向其資料結構的指標 sel選標 編譯器分配用來區分方法名的編碼 imp指向方法實現的指標,該實現返回id bool布林值,yes or no nil空的物件指標,id 0 ni...

Objective C的記憶體管理

記憶體管理,只要掌握這個原則即可 在變數的生命週期裡,如果此物件是alloc,copy,retain之類的產生的,記得要release或者autorelease。保證引用計數加減後為0。現在來比較詳細的說一下吧。首先,對於變數的生命週期,這裡有幾種 1 方法內部 即變數只存在於方法內部,但是如果此變...