Class.h
上传用户:lygtks
上传日期:2022-06-08
资源大小:874k
文件大小:4k
源码类别:

射击游戏

开发平台:

Visual C++

  1. #ifndef CLASS_H
  2. #define CLASS_H
  3. // 宏定义:
  4. #define PI 3.1415927 // 定义PI的值
  5. #define MAX_AMMUNITION 500 // 子弹数组的大小
  6. #define MAX_COMPUTER 15 // 电脑的个数
  7. #define MAX_AWARD 40 // 物品数组大小
  8. #define MAX_PLAYER 3 // 玩家飞机个数
  9. #define AMMUNITION_RANGE 500 // 子弹的射程
  10. #define BOMB_RANGE 80 // 炸弹的射程
  11. #define BOMB_BLAST_RANGE 150 // 炸弹爆炸的影响范围
  12. #define START_BOMB_NUMBER 3 // 开始时炸弹的数目
  13. #define WIN_SCORE 50000 // 达到胜利的分数要求
  14. // 基类
  15. class BaseObject{
  16. public:
  17. BaseObject(float a=0,float b=0,int l=0,float s=0,float d=0,int k=0){
  18. x=a;
  19. y=b;
  20. life=l;
  21. speed=s;
  22. direction=d;
  23. kind=k;
  24. blastNum=0;
  25. blastTime=0;
  26. }
  27. float getX(){return x;}
  28. float getY(){return y;}
  29. int getLife(){return life;}
  30. float getSpeed(){return speed;}
  31. int getKind(){return kind;}
  32. void setX(float a){x=a;}
  33. void setY(float b){y=b;}
  34. void setLife(int l){life=l;}
  35. void setSpeed(float s){speed=s;}
  36. protected:
  37. float x; // 该OBJECT的X轴坐标
  38. float y; // 该OBJECT的Y轴坐标
  39. float speed; // 该OBJECT的移动速度
  40. int life; // 该OBJECT的生命值(或有效值)
  41. float direction; // 该OBJECT移动的方向角,取与X正方向夹角
  42. int kind; // 该OBJECT所属的类型,在不同的派生类中有不同的意思
  43. int blastNum; // 爆炸记数,记录该OBJECT爆炸时轮换的图片
  44. int blastTime; // 爆炸记时,当超过一定时间才轮换爆炸的下一张图片
  45. };
  46. // 玩家飞机类
  47. class PlayerPlane:public BaseObject{
  48. public:
  49. PlayerPlane(float a=0,float b=0,int l=0,float s=0); // 构造函数,通过初始化函数来,kind在该类中没有意义
  50. void initPlane(float a,float b,int l,float s); // 初绐化函数
  51. int getAmmunitionKind() {return ammunitionKind;}
  52. int getBombNum() {return bombNum;}
  53. int getScore() {return score;}
  54. void setAmmunitionKind(int bk) {ammunitionKind=bk;}
  55. void setBombNum(int bn) {bombNum=bn;}
  56. void setScore(int s) {score=s;}
  57. void moveUp(); // 上移
  58. void moveDown(); // 下移
  59. void moveRight(); // 右移
  60. void moveLeft(); // 左移
  61. void stay(); // 不动
  62. void draw(); // 绘制飞机
  63. void blast(); // 被击中爆炸
  64. void fire(); // 发射子弹
  65. void fireBomb(); // 发射炸弹
  66. void hitcomPlane(); // 碰撞到对方飞机
  67. void update(); // 更新飞机参数
  68. private:
  69. int fireTime; // 辅助控制射击频率的变量,以保证子弹的射速一致
  70. int bombNum; // 飞机目前存在的炸弹个数
  71. int planeTexture; // 飞机的贴图,分为左移,中间,右移三张贴图
  72. int ammunitionKind; // 目前飞机的子弹类型
  73. int score; // 歼灭敌人得到的分数
  74. };
  75. // 电脑飞机类,有kind=0,1,2三种电脑飞机
  76. class ComputerPlane:public BaseObject{
  77. public:
  78. ComputerPlane(float a=0,float b=0,int l=0,float d=0,float s=0,int k=0); //kind表示不同的敌机种类
  79. bool getExplosible(){ return explosible;}
  80. void setExplosible(bool b) {explosible=b;}
  81. void setKind(int k); // 设置敌机的种类,并设置在该种类下的敌机属性
  82. void draw(); // 敌机绘制函数
  83. void move(); // 敌机移动函数
  84. void fire(); // 敌机射击函数
  85. void blast(); // 敌机爆炸函数
  86. void compinit(); // 敌机初始化函数
  87. void update(); // 每一帧判断敌机处理事件
  88. void leftaward(); // 敌机死后留下物品处理函数
  89. void damaged(int damage); // 设置敌机击中损伤函数
  90. private:
  91. int fireTime; // 辅助控制射击频率的变量,以保证子弹的射速一致
  92. bool explosible; // 控制该敌机是否要爆炸
  93. int rewardScore; // 敌机被击灭所奖励的分数
  94. };
  95. // 子弹类,有kind=0,1,2,3四种子弹
  96. class Ammunition:public BaseObject{
  97. public:
  98. Ammunition(float a=0,float b=0,float d=0,float s=0,int l=0,int k=0); // kind表示不同的子弹类型
  99. void setOwner(int w) {owner=w;}
  100. int getOwner() {return owner;}
  101. void setExplosible(bool bn) {explosible=bn;}
  102. int getExplodeLevel(void){return explodeLevel;}
  103. void move(); // 子弹的移动
  104. void draw(); // 子弹绘制
  105. void blast(); // 子弹爆炸
  106. void hitTheTarget(); // 子弹射中与否
  107. private:
  108. bool explosible; // 是否开始爆炸,为FALSE表示不用爆炸,为TRUE表示开始爆炸
  109. float displacement; // 子弹移动过的距离
  110. int owner; // 子弹所属,1为玩家,3为一般电脑
  111. int explodeLevel; // 子弹的杀伤力力
  112. };
  113. // 物品类,有kind=0,1,2三种物品
  114. class Award:public BaseObject{
  115. public:
  116. Award(float a=0,float b=0,float s=0,int l=0,int k=0); //kind表示不同的物品类型
  117. void draw(); // 物品的绘制函数
  118. void move(); // 物品的移动函数
  119. void eat(); // 物品是否被玩家飞机吃掉的检测函数
  120. };
  121. #endif