我有兩個類B和C-都是我的(非常原始的)遊戲中的怪物。我有一個名爲MOVE的函數,它現在只是改變怪物的X和Y座標。 B和C都來自A;所以A具有X和Y座標,B和C具有其他屬性,例如速度和攻擊。使用相同的函數來處理不同的類
有沒有一種方法可以設置一個功能,讓我可以通過B或C(因爲他們都需要能夠移動..),換句話說,不管是怪物被移動的是B或C - 但它會以相同的方式對待它們?
我在考慮通過A班,但我無法讓這個工作! :-((也許這只是我是極端缺乏經驗!)
非常感謝 - :-)
KJ
我有兩個類B和C-都是我的(非常原始的)遊戲中的怪物。我有一個名爲MOVE的函數,它現在只是改變怪物的X和Y座標。 B和C都來自A;所以A具有X和Y座標,B和C具有其他屬性,例如速度和攻擊。使用相同的函數來處理不同的類
有沒有一種方法可以設置一個功能,讓我可以通過B或C(因爲他們都需要能夠移動..),換句話說,不管是怪物被移動的是B或C - 但它會以相同的方式對待它們?
我在考慮通過A班,但我無法讓這個工作! :-((也許這只是我是極端缺乏經驗!)
非常感謝 - :-)
KJ
實施作爲移動的功能。然後b和c都會有移動功能,然後你可以使用多態來移動b和c作爲a的子元素。
對於一個更重要的答案,一些代碼會真的有所幫助,當然還有你正在使用的語言。就你描述它的方式而言,有些事情聽起來不像在OO方面實現得很好。
感謝您的意見。這是我第一個真正的'項目'。剛開始在C++世界。 – KingJohnno
使用可以實現在父母A
類move
方法:
class A {
private:
int X;
int Y;
public:
A() { X = 0; Y = 0; }
inline void move (int dx, int dy) {
X += dx;
Y += dy;
std::cout << "Moved to " << X << "," << Y << std::endl;
}
};
class B : public A {};
class C : public A {};
然後,您可以使用這些類:
A objB;
A objC;
objB.move(0,1);
objB.move(0,3);
objC.move(2,0);
此代碼將打印:
Moved to 0,1
Moved to 0,4
Moved to 2,0
什麼語言是你使用? – kamituel
對不起,忘了提及我正在使用C++。現在增加了。抱歉的混淆。 – KingJohnno
這就是所謂的多態性,你的第一本能至少部分是正確的。你的函數應該用'A'來實現,但要正常工作,你需要把它作爲一個引用('A&')或者(不是首選的)一個指針('A *')來傳遞。 – Chad