⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 enemy.h

📁 《BATTLE OF SKY》
💻 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 + -