0
好了,所以我到處找過這個網站和其他一些(但請讓我知道如果有一個鏈接到一個類似的問題),我也得到怎樣的庫存系統的所有細節應該管用。我的問題來自一個非常廣泛的總體視角。這僅僅是一個控制檯文本RPG。我應該如何構建我的課程項目?我在想什麼/到目前爲止是這樣的:RPG遊戲盤點系統
// Item.h
class Item {
public:
int Id;
std::string Name;
bool CanUse, CanEquip;
virtual void Use();
}
class Weapon: public Item {
public:
int Attack, Defense, Health; // stat changes when equipped
void Use() { std::cout << "Can't use\n"; }
}
class Sword: public Weapon {
// constructor defining stat changes for a sword
// and to define Name = "Sword"
}
所以我應該繼承,很多時候還是有一些輕鬆,我可以做?最終,我會擁有其他各種武器,但在我看來,從Weapon
繼承它們中的每一個都比我可以做到的其他方式困難得多?
也許我可以有內Weapon
定義每種武器的枚舉或結構?如果我像上面的代碼那樣做,我實際上可能會將virtual void Use();
函數轉換爲類class Consumables: public Item
,因爲這些應該是唯一「可用」的東西。
在此先感謝任何人願意提供幫助。我教過自己,我知道了書籍和在線教程的一切,所以我很沒有經驗:)
只是關於您的命名約定的說明。它可能值得使用更長的描述性名稱。例如int attackModifier,int uniqueItemId。使變量具有描述性可以爲您節省一些時間,當您在一年內復出並且必須編輯此代碼時。另一邊你可能需要一個項目描述,這樣用戶可以懸停一個項目並獲取名稱和詳細信息。 – user3853544
@ user3853544這就是我在運行的代碼中實際完成的工作。我只是不想在這裏輸入這些東西 - 以節省空間。我甚至不知道我可以做一個項目描述,所以這很有幫助,很酷。謝謝! –
我通常會製作數量有限的項目並使用說明字符串。就遊戲機制而言,除了一點或多或少的傷害和觸及之外,劍是一把劍。如果一把劍做出像吃靈魂一樣不尋常的東西,我會有一個不同的課。這是我寫回來的答案,可能有用:http://stackoverflow.com/questions/41003408/c-determine-if-class-can-use-an-object-text-rpg-game/41006740# 41006740 – user4581301