現在我正在嘗試編寫一個關於日本RPG遊戲機制的簡單Java程序。 我在實施消耗品的使用方面遇到了麻煩,也就是說,改變特定狀態的項目,無論是來自變量HP還是MP中的「字符」類。下面是類「項目」的粗略代碼現在:RPG遊戲中的消耗品設計java
abstract class Items{
int stock;
public int checkCategory();
public int use();
}
class HPitems extends Items{
public int checkCategory(){
return 1; // this only means that category '1' heals HP, not MP
}
}
class Potion extends HPitems{
public int use(){
stock--;
return 50; //this means potion heals 50 HP
}
}
,所以我相信你現在的想法,我打算讓班級MPitems擴展了返回2.類別,每當我的球員對象消耗物品一個項目,使用消耗(項目e),它將使用多個if語句來檢查類別。如果返回類別1,我將使用相應Items子類的use()返回的值,並將該值添加到播放器HP.我認爲現在沒有任何問題,但是如果有很多Items類別,例如給出另一種狀態效果的項目,我認爲它效率不高。有沒有更好的方法來做到這一點?
順便說一句,這是球員類,如果你需要它:
public class Player{
int HP;
int MP;
public void consume(Items e){
if(e.checkCategory() == 1){
this.HP = this.HP+e.use();
else{
this.MP = this.MP+e.use();
}
}
} // consume
}
你可以給使用方法玩家作爲參數:使用(玩家p),然後在Potion類中使用(玩家p){p.HP + = 50}這樣你就不需要很多if-子句。另一方面,使用功能現在綁定到玩家。如果其他對象也需要「使用」藥水,我會創建一個新的類字符,例如並定義使用(字符c)。玩家會從角色繼承。然後,消費方法看起來像是消耗(項目e){e.use(this)},而與項目類型無關。順便說一句,它應該是項目,而不是項目:) – Michael 2014-12-02 14:17:19
@邁克爾很好。非常好:D謝謝 – Rei 2014-12-02 14:29:38