我正在连接到图形 LCD 的 Arduino 上编写游戏(太空入侵者),并且我有一个精灵类。此类具有诸如 Player/Alien、位图对象、位置 (x,y) 和如何移动函数等属性。
我希望每个实例都有一个导弹,我认为这可以通过继承和多态来完成,尽管我不确定如何——我的流线型代码如下,并且为了更好地了解形状,我包含了一个字形图像。我希望 Missile 从 sprite 类派生 location(x,y) ,但它会有自己的位图和移动方法,比如(?)
Class Missile: public Sprite{
Missile(); // create shape here
void Move(); // has its own method of moving, but starts from Sprite(x,y)
};
[不管怎么做,我想在我的 C++ 练习中使用继承和多态]
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);
unsigned char spaceShip[5] PROGMEM = {0x3c, 0x1e, 0x1f, 0x1e, 0x3c};
unsigned char spaceAlien[5] PROGMEM = {0x1e, 0x0f, 0x1f, 0x0f, 0x1e};
unsigned char spaceMissile[5] PROGMEM = {0x00, 0x00, 0x1f, 0x00, 0x00};
enum TYPES {ALIEN = 0, PLAYER = 1 };
class Sprite
{
public:
Sprite(TYPES Type);
void Move();
void Render() { display.drawBitmap(x,y, spacePtr, 5, 6, BLACK); }
private:
unsigned char *spacePtr;
unsigned int x, y;
TYPES Type;
};
Sprite::Sprite(TYPES theType)
{
Type = theType;
switch( Type )
{
case( PLAYER ):
spacePtr = &spaceShip[0];
x = xPlayer(); // get x from xfunction
y = yPlayer(); // get y from yfunction
break;
case( ALIEN ):
spacePtr = &spaceAlien[0];
x = random(0, 82);
y = random(10, 20);
break;
default:
break;
}
}