-3

我有两个 B 类和 C 类——它们都是我(非常原始的)游戏中的怪物。我有一个叫做 MOVE 的函数,它现在只是改变怪物的 X 和 Y 坐标。B 和 C 都是从 A 派生的;所以A有X和Y坐标,B和C有其他属性,比如速度、攻击。

有没有一种方法可以设置一个允许我通过 B 或 C 的函数(因为它们都需要能够移动..),换句话说,被移动的怪物是否无关紧要是 B 还是 C - 但它会以同样的方式对待它们吗?

我正在考虑通过 A 级,但我无法让它发挥作用!:-(。(也许只是我非常缺乏经验!)

非常感谢 - :-)

凯杰

4

2 回答 2

2

将 move 实现为 a 的函数。然后 b 和 c 都将具有移动函数,然后您可以使用多态性将 b 和 c 作为 a 的子级移动。

对于更重要的答案,一些代码确实会有所帮助,当然还有您使用的语言。您描述它的方式,有些事情听起来不像它们在 OO 方面实现得很好。

于 2013-04-03T12:44:17.180 回答
1

使用可以move在父类中实现方法A

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
于 2013-04-03T12:50:51.217 回答