2017-08-05 63 views
1

我一直在用Java開發一個基於文本的小型RPG遊戲。我寫了一個故事線,並做了庫存/裝甲裝備。當涉及到訪問某些代碼時,我遇到了一個問題。在遊戲開始時,用戶可以選擇成爲射手/法師/戰士(我將其稱爲「作業」而不是「班級」)。每個人都有自己的班級。但是當他們融入遊戲時,我發現我正在做很多if語句來總是檢查用戶是否是射手/法師/戰士。 如何在不使用if語句的情況下更好地整合這一點?我是初學者/中級水平,現在做對象大約一個月。Java遊戲開發,與「類」合作

+3

多態現象,也許? –

+0

閱讀子類和實現。這個想法是你有一個框架,並提供通用命名方法中的工作特定代碼。 –

回答

1

這將是最容易使用的多態這一點,但這是不可能的,如果方法有不同的名字......

如果你想這樣做多態:

首先,閱讀多態性。 Here's一個很好的網站來做到這一點。

要開始了,你所有的類的擴展超,說球員(你將不得不寫Player類,然後才能extend它)。者來擴展播放類,你可以寫這樣的事情在你的「工作」類的標題:

public class Mage extends Player { 

當然,你根據什麼「工作」要定義替代Mage爲不同的類別。

在你需要編寫的Player類中,你應該定義你希望你的子類能夠執行的所有方法。你應該使這些方法abstract,但請記住,如果你有一個抽象方法,,你將不得不在你所有的子類中定義它。所以,如果你有一個名爲「Cast」的方法,你需要在每個「job」類中定義這個方法。

但是,一旦你已經創建了一個超類,與方法(我建議有一般abstract方法,如攻擊保衛),只是定義在子類中這些方法,你是好去。

如果你想這樣做,非多態:

if-statement,雖然不一定愉快,似乎是這樣做的最有效的方法,如果你不想嘗試使行爲多態。

你能說你的if-statement的結構是什麼嗎?可能有更簡單的方法來編寫它,並減少代碼的數量(使其更清晰)。

例如,如果你說:

if (a.getClass() == X.class) 

你可以考慮使用instanceOf代替:

if (a instanceof X) 

除此之外,我沒有對如何做到這一點任何更好的想法。