BombSet.cpp
上传用户:semy2100
上传日期:2013-01-22
资源大小:3633k
文件大小:7k
源码类别:

射击游戏

开发平台:

Visual C++

  1. /********************************************************************
  2. *                        空运爆发                                    *
  3. *                       Version 2.0                                  *
  4. * 本游戏全部代码由:                                                 *
  5. *                   冲天实验室   梁锋 编写                           *
  6. *                    邮箱:lenwine@126.com                           *
  7. *                bbs: http://free2.e-168.cn/lenwind (正在开发中...)  *
  8. **********************************************************************/
  9. //////////////////////////////////////////////////////////////////////
  10. #include "stdafx.h"
  11. //////////////////////////////////////////////////////////////////////
  12. // Construction/Destruction
  13. //////////////////////////////////////////////////////////////////////
  14. BombSet::BombSet(Manager *mgr)
  15. {
  16. mManager=mgr;
  17. }
  18. BombSet::~BombSet()
  19. {
  20. list<Bomb*>::iterator bn,en;;
  21. bn=BombList.begin();
  22. en=BombList.end();
  23. while(bn!=en)
  24. {
  25. delete *bn;
  26. bn++;
  27. }
  28. }
  29. //新增子弹
  30. void BombSet::Firing(Bomb::BOMBSTYLE bombStyle,int x,int y,double memsx,double memsy)
  31. {
  32. int i;
  33. Bomb *bAddBomb;
  34. switch(bombStyle)
  35. {
  36. /************************************************************************/
  37. /* 定义 长红-004 --------------------------------------Begin*/
  38. case Bomb::OPERATOR_SHOOT:
  39. for(i=0;i<4;i++)//这里是我机开机要增加的弹
  40. {
  41. bAddBomb=new OperatorShoot(mManager,x-12+8*i,y,memsx,memsy);
  42. BombList.push_back(bAddBomb);
  43. }
  44. break;
  45. /* 定义 长红-004 --------------------------------------End*/
  46. /************************************************************************/
  47. /* 定义 旋风-520 --------------------------------------Begin*/
  48. case Bomb::OPERATOR_NOSHOOT:
  49. for(i=0;i<20;i++)
  50. {
  51. bAddBomb=new OperatorNoShoot(mManager,x-5+rand()%7,y-5+rand()%7,memsx,memsy,rand()%361);
  52. BombList.push_back(bAddBomb);
  53. }
  54. break;
  55. /* 定义 旋风-520 --------------------------------------End*/
  56. /************************************************************************/
  57. /* 定义 邪神-180 角度------------------------------------------Begin*/
  58. case Bomb::OPERATOR_ROUND_SHOOT:
  59. bAddBomb=new OperatorRoundShoot(mManager,x,y,memsx,memsy,10);
  60. BombList.push_back(bAddBomb);
  61. bAddBomb=new OperatorRoundShoot(mManager,x,y,memsx,memsy,30);
  62. BombList.push_back(bAddBomb);
  63. bAddBomb=new OperatorRoundShoot(mManager,x,y,memsx,memsy,50);
  64. BombList.push_back(bAddBomb);
  65. bAddBomb=new OperatorRoundShoot(mManager,x,y,memsx,memsy,80);
  66. BombList.push_back(bAddBomb);
  67. bAddBomb=new OperatorRoundShoot(mManager,x,y,memsx,memsy,90);
  68. BombList.push_back(bAddBomb);
  69. bAddBomb=new OperatorRoundShoot(mManager,x,y,memsx,memsy,100);
  70. BombList.push_back(bAddBomb);
  71. bAddBomb=new OperatorRoundShoot(mManager,x,y,memsx,memsy,130);
  72. BombList.push_back(bAddBomb);
  73. bAddBomb=new OperatorRoundShoot(mManager,x,y,memsx,memsy,150);
  74. BombList.push_back(bAddBomb);
  75. bAddBomb=new OperatorRoundShoot(mManager,x,y,memsx,memsy,170);
  76. BombList.push_back(bAddBomb);
  77. break;
  78. /* 定义 邪神-180 角度------------------------------------------End*/
  79. /************************************************************************/
  80.            /* 定义 小王 ---------------------------------Begin*/
  81. case Bomb::ENERMY_BOMBO:
  82. for(i=0;i<3;i++)
  83. {
  84. bAddBomb=new EnermyBombO(mManager,x-(18*i),y,memsx,memsy,270);
  85. BombList.push_back(bAddBomb);
  86. }
  87. break;
  88.       /* 定义 小王 ---------------------------------End*/
  89. /************************************************************************/
  90. case Bomb::ENERMY_BOMBS:
  91. bAddBomb=new  EnermyBombS(mManager,x-10,y,memsx,memsy,270);
  92. BombList.push_back(bAddBomb);
  93. break;
  94. /************************************************************************/
  95. case Bomb::ENERMY_BOMBT:
  96. bAddBomb=new EnermyBombT(mManager,x-5,y,memsx,memsy,225);
  97. BombList.push_back(bAddBomb);
  98. bAddBomb=new EnermyBombT(mManager,x+5,y,memsx,memsy,315);
  99. BombList.push_back(bAddBomb);
  100. break;
  101. /************************************************************************/
  102. case Bomb::ENERMY_BOMBF://黑敌机
  103. for(i=0;i<3;i++){
  104. bAddBomb=new EnermyBombF(mManager,x+(i-2),y+i+25,memsx,memsy,90*(i+2));
  105. BombList.push_back(bAddBomb);
  106. }
  107. break;
  108. /**---------------------------------------------------------------------*/
  109. case Bomb::ENERMY_BOMBG://王
  110. // for(i=0;i<7;i++)
  111. // {
  112. // bAddBomb=new EnermyBombG(mManager,x-rand()%10,y-rand()%10,memsx,memsy,rand()%270);
  113. // BombList.push_back(bAddBomb);
  114. // }
  115. /**
  116. bAddBomb=new EnermyBombG(mManager,x-5,y,memsx,memsy,225);
  117. BombList.push_back(bAddBomb);
  118. bAddBomb=new EnermyBombG(mManager,x+5,y,memsx,memsy,315);
  119. BombList.push_back(bAddBomb);
  120. bAddBomb=new EnermyBombG(mManager,x-5,y,memsx,memsy,215);
  121. BombList.push_back(bAddBomb);
  122. bAddBomb=new EnermyBombG(mManager,x+5,y,memsx,memsy,325);
  123. BombList.push_back(bAddBomb);**/
  124. break;
  125. /**---------------------------------------------------------------------*/
  126. case Bomb::ENERMY_BOMBH://没有敌机用。暂时
  127. bAddBomb=new EnermyBombH(mManager,x-5,y,memsx,memsy,225);
  128. BombList.push_back(bAddBomb);
  129. bAddBomb=new EnermyBombH(mManager,x+5,y,memsx,memsy,315);
  130. BombList.push_back(bAddBomb);
  131. bAddBomb=new EnermyBombH(mManager,x-5,y,memsx,memsy,215);
  132. BombList.push_back(bAddBomb);
  133. bAddBomb=new EnermyBombH(mManager,x+5,y,memsx,memsy,325);
  134. BombList.push_back(bAddBomb);
  135. break;
  136. /**=--------------------------------------------------------------------*/
  137. case Bomb::ENERMY_BOMBI://黄敌机
  138. for(i=0;i<7;i++)
  139. {
  140. bAddBomb=new EnermyBombI(mManager,x+i+1,y+i,memsx,memsy,180+(i*10));
  141. BombList.push_back(bAddBomb);
  142. }
  143. break;
  144. /**---------------------------------------------------------------------*/
  145. case Bomb::ENERMY_BOMBJ:
  146. bAddBomb=new EnermyBombJ(mManager,x-5,y,memsx,memsy,225);
  147. BombList.push_back(bAddBomb);
  148. bAddBomb=new EnermyBombJ(mManager,x+5,y,memsx,memsy,315);
  149. BombList.push_back(bAddBomb);
  150. break;
  151. /**---------------------------------------------------------------------*/
  152. }
  153. }
  154. //返回第一个子弹对象
  155. Bomb* BombSet::GetOneBomb()
  156. {
  157. BombFind=-1;
  158. BombValue=BombList.size();
  159. if(BombValue==0)
  160. return NULL;
  161. oNowEnermy=BombList.end();
  162. return GetTwoBomb();
  163. }
  164. //返回下一个子弹对象
  165. Bomb* BombSet::GetTwoBomb()
  166. {
  167. BombFind++;
  168. oNowEnermy++;
  169. while((BombFind<BombValue)&&((*oNowEnermy)->Work==false))
  170. {
  171. delete *oNowEnermy;
  172. BombValue--;
  173. oNowEnermy=BombList.erase(oNowEnermy);
  174. }
  175. if(oNowEnermy==BombList.end())
  176. return NULL;
  177. else
  178. return *oNowEnermy;
  179. }
  180. void BombSet::Update()
  181. {
  182. Bomb *bBomb=GetOneBomb();
  183. while(bBomb)
  184. {
  185. bBomb->Update();
  186. bBomb=GetTwoBomb();
  187. }
  188. }