📄 enemy.h
字号:
// definition of class Enemy
#ifndef Enemy_H
#define Enemy_H
#include "bitmap.h"
#include "randint.h"
#include "direction.h"
// prototypes
bool operator<(const BitMap &p, const BitMap &q);
bool operator==(const BitMap &p, const BitMap &q);
//
// class for a simple Enemy
//
const int EnemyBitMaps = 4; // one bitmap for each direction
class Enemy {
public:
Enemy(SimpleWindow &w, int DirectionChangeProbability = 50);
bool IsDying();
void Create();
void Kill();
virtual void Move() = 0;
// Enemy inspectors
SimpleWindow& GetWindow() const;
Position GetPosition() const;
Direction GetDirection() const;
float GetHorizMovement() const;
float GetVertMovement() const;
int GetDirectionChangeProbability() const;
BitMap& GetBmp(const Direction &d);
const BitMap& GetBmp(const Direction &d) const;
// Enemy mutators
void SetWindow(SimpleWindow &w);
void SetDirection(const Direction &d);
void SetHorizMovement(float h);
void SetVertMovement(float v);
void Draw();
void Erase();
void SetPosition(const Position &p);
void ChangeDirection();
Position NewPosition() const;
bool AtRightEdge() const;
bool AtLeftEdge() const;
bool AtBottomEdge() const;
bool AtTopEdge() const;
RandomInt GeneratePercentage;
private:
// data members
SimpleWindow &Window;
vector<BitMap> Bmp;
float HorizMovement;
float VertMovement;
int DirectionChangeProbability;
Direction CurrentDirection;
Position CurrentPosition;
};
//the class SlowEnemy
class SlowEnemy : public Enemy {
public:
SlowEnemy(SimpleWindow &w, int DirectionChange = 10);
void Move();
};
//the class FastEnemy
class FastEnemy : public Enemy {
public:
FastEnemy(SimpleWindow &w, int DirectionChangeProbability = 20);
void Move();
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -