iOS 三國殺 Ver.LOG
阿新 • • 發佈:2020-10-16
MOSAD hw1
程式碼概況
-
父類
父類屬性/方法 型別/返回型別 描述 country String 國家 blood_value NS整形 血量 energy_value NS整形 法力值 attack NS整形 攻擊力 name String 名字 armed NS整形 是否裝備武器 flex NS整形 是否在閃避狀態 poison NS整形 是否中毒 sheld NS整形 是否施加鈍化 grand NS整形 是否進入超然狀態 init(); instancetype 初始化英雄 PKOneUnit(); void 己方回合 get___(); - 返回對應值 managrow(); void 自然恢復法力值 poisioned(); void 中毒傷害清算 change__(,); void buff、他傷清算 weapon(); void 裝備武器 skill(); void 小技能 ultimate(Hero*); void 終極技能 每個英雄都固有這些屬性.
-
子類
由於具體實現的程式碼較繁雜,這裡只給出子類的多型體現。
英雄 | weapon | skill | ultimate |
---|---|---|---|
呂布 | attack+= 200; armed = 1 | - | 500 damge ; energy_value -= 80 |
張飛 | - | blood_value += 200; energy_value -= 20 | blood_value -= 200; attack== 200; |
諸葛亮 | - | flex = 1; energy_value -= 20; //only for one turn | 400damage; blood_value += 200; |
曹操 | attack+= 200; armed = 1 | - | attack += 10;target.attack -= 10 ; energy_value -= 80 |
孫權 | - | attack += 5; blood_value += 200; energy_damge -= 20; | target.poisoned = 1 |
趙雲 | attack+= 150; armed = 1 blood_value += 200 | - | grand = 1; poison = 0; energy_value -= 100; |
司馬懿 | - | sheld = 1; energy_value -= 20 | 600 damge ; energy_value -= 50 |
孫策 | attack+= 100; armed = 1; blood_value += 300 | - | 400 damge ; energy_value -= 80; blood_value += 200; |
陳宮 | - | energy_value - = 30; blood_value += 300; | 600 damge ; energy_value -= 80; blood_value -= 300; |
張遼 | armed = 1; blood_value += 100; attack += 100 | - | attack *= 2; energy_value -= 90; |
基於父類,每一個子類都有不同的weapon、skill、ultimate,這裡體現了多型與繼承。
戰鬥機制
- 父類中包含一個PKOneUnit();
- 所有子類繼承父類Hero的PKOneUnit();
- 在PKOneUnit()中,會對己方和敵方的當前狀態進行結算,然後概率裝備weapon以及發動skill和ultimate,其中skill、ultimate需要滿足energy_value要求才可以發動。在PKOneUnit()執行完畢後,會得到一個雙方的當前狀態。在main函式中進行判斷,若有一方先出現血量 <= 0 的情況, 則判定敗北;另一種情況是回合數超過10,雙方被判平手。
- 關於資料隱祕性、封裝性,則體現在各個屬性儲存在父類當中,若需呼叫則必須使用對應的get_();函式,外界無法直接取得。