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

射击游戏

开发平台:

Visual C++

  1. /********************************************************************
  2. *                        空运爆发                                    *
  3. *                       Version 2.0                                  *
  4. * 本游戏全部代码由:                                                 *
  5. *                   冲天实验室   梁锋 编写                           *
  6. *                    邮箱:lenwine@126.com                           *
  7. *                bbs: http://free2.e-168.cn/lenwind (正在开发中...)  *
  8. **********************************************************************/
  9. #include "stdafx.h"
  10. //////////////////////////////////////////////////////////////////////
  11. // Construction/Destruction
  12. //////////////////////////////////////////////////////////////////////
  13. Bomb::Bomb(Manager *mgr,int xv,int yv,double memsx,double memsy):MemberStatus(mgr,xv,yv)
  14. {
  15. spx=memsx;
  16. spy=memsy;
  17. blow_up_value=32;
  18. blow_up_current=-1;
  19. };
  20. int Bomb::GetShoot(BOMBSTYLE bombStyle)
  21. {
  22. switch(bombStyle)//
  23. {
  24. case OPERATOR_SHOOT:
  25. return 150;
  26. case OPERATOR_NOSHOOT:
  27. return 300;
  28. case OPERATOR_ROUND_SHOOT:
  29. return 200;
  30. case ENERMY_BOMBO:
  31. return 2000;
  32. case ENERMY_BOMBS:
  33. return 500;
  34. case ENERMY_BOMBT:
  35. return 1000;
  36. case ENERMY_BOMBF:
  37. return 500;
  38. case ENERMY_BOMBG:
  39. return 900;
  40. case ENERMY_BOMBH:
  41. return 700;
  42. case ENERMY_BOMBI:
  43. return 2600;
  44. case ENERMY_BOMBJ:
  45. return 1500;
  46. }
  47. return 0;
  48. }
  49. void Bomb::OperatorStatus(double sd,int ad)
  50. {
  51. double g=Manager::PI*ad/180;
  52. spx+=sd*cos(g);
  53. spy+=-sd*sin(g);
  54. }
  55. void Bomb::Update()
  56. {
  57. if(leaveline())
  58. Work=false;
  59. else if(alive<=0)
  60. {
  61. if(++blow_up_current==0)
  62. {
  63. bx=0;
  64. by=83;
  65. Bitlong=32;
  66. Bittall=32;
  67. spx=0;
  68. spy=0;
  69. }else if(blow_up_current>=blow_up_value)
  70. Work=false;
  71. else
  72. {
  73. bx=32*(blow_up_current/4);
  74. }
  75. }
  76. MemberStatus::Update();
  77. }
  78. //shoottt
  79. OperatorShoot::OperatorShoot(Manager *mgr,int xv,int yv,double memsx,double memsy):Bomb(mgr,xv,yv,memsx,memsy)
  80. {
  81. Bomb::spx=0;
  82. Bomb::spy=-35;
  83. /*           这里设置 长红-004 攻击力、速度、直向 */
  84. MemberStatus::bx=29;
  85. MemberStatus::by=0;
  86. MemberStatus::Bitlong=3;
  87. MemberStatus::Bittall=13;
  88. rx=0;
  89. ry=0;
  90. rlong=3;
  91. rtall=9;
  92. ChangePlace();
  93. };
  94. //OperatorNoShoot
  95. OperatorNoShoot::OperatorNoShoot(Manager *mgr,int xv,int yv,double memsx,double memsy,int ad):Bomb(mgr,xv,yv,memsx,memsy)
  96. {
  97. Ad=ad;
  98. nAd=3;
  99. /*           这里设置 旋风-520 攻击力、速度、方向 */
  100. MemberStatus::bx=177;
  101. MemberStatus::by=1;
  102. //MemberStatus::Bitlong=4;
  103. //MemberStatus::Bittall=8;
  104. MemberStatus::Bitlong=3;
  105. MemberStatus::Bittall=21;
  106. rx=1;
  107. ry=0;
  108. rlong=3;
  109. rtall=7;
  110. //rlong=2;
  111. //rtall=6;
  112. xa=xv;
  113. area=6;
  114. //area=1;
  115. ChangePlace();
  116. };
  117. void OperatorNoShoot::Update()
  118. {
  119. if(alive>0)
  120. {
  121. x=xa;
  122. spx=area*cos(Ad*Manager::PI/180);
  123. spy=-10-3;//设置速度
  124. Ad+=nAd;
  125. area+=3;
  126. }
  127. Bomb::Update();
  128. }
  129. OperatorRoundShoot::OperatorRoundShoot(Manager *mgr,int xv,int yv,double memsx,double memsy,int ad):Bomb(mgr,xv,yv,0,0)
  130. {
  131. MemberStatus::bx=36;//子弹X
  132. MemberStatus::by=0;//子弹Y
  133. MemberStatus::Bitlong=5;
  134. MemberStatus::Bittall=5;
  135.  /*           这里设置 邪神-180 攻击力、速度、 */
  136. rx=1;
  137. ry=1;
  138. rlong=3;
  139. rtall=3;
  140. shootpower=1;
  141. ChangePlace();
  142. OperatorStatus(15,ad);//设置 邪神-180 速度
  143. };
  144. //EnermyBombO
  145. EnermyBombO::EnermyBombO(Manager *mgr,int xv,int yv,double memsx,double memsy,int ad):Bomb(mgr,xv,yv,memsx,memsy)
  146. {
  147. MemberStatus::bx=30;//子弹X
  148. MemberStatus::by=25;//子弹Y
  149. MemberStatus::Bitlong=8;
  150. MemberStatus::Bittall=8;
  151.     /*为了记忆,我将这架敌机起名为 红星-F007 主要运作:
  152.   发弹、在发弹期间有时会改变方向*/
  153. rx=2;
  154. ry=2;
  155. rlong=4;
  156. rtall=4;
  157. ChangePlace();
  158. OperatorStatus(3,ad);//设置这架敌机发弹的速度
  159. };
  160. //EnermyBombS
  161. EnermyBombS::EnermyBombS(Manager *mgr,int xv,int yv,double memsx,double memsy,int ad):Bomb(mgr,xv,yv,memsx,memsy)
  162. {
  163. MemberStatus::bx=29;//这里是x
  164. MemberStatus::by=13;//子弹y
  165. MemberStatus::Bitlong=7;
  166. MemberStatus::Bittall=7;
  167. /*为了记忆,我将这敌机起名为 炸弹-F002 主要运作:
  168.   发弹、在发弹期间不会改变方向*/
  169. rx=1;
  170. ry=1;
  171. rlong=5;
  172. rtall=5;
  173. ChangePlace();
  174. OperatorStatus(6,ad);//设置发弹速度
  175. };
  176. //EnermyBombT
  177. EnermyBombT::EnermyBombT(Manager *mgr,int xv,int yv,double memsx,double memsy,int ad):Bomb(mgr,xv,yv,memsx,memsy)
  178. {
  179. MemberStatus::bx=29;//这里是
  180. MemberStatus::by=20;//子弹
  181. MemberStatus::Bitlong=5;//宽
  182. MemberStatus::Bittall=5;//高
  183. /*为了记忆,我将这敌机起名为 冲动-F008 主要运作:
  184.   发弹、在发弹期间不会改变方向*/
  185. rx=1;
  186. ry=1;
  187. rlong=3;
  188. rtall=3;
  189. ChangePlace();
  190. OperatorStatus(7,ad);//设置冲动速度
  191. };
  192. //EnermyBombF
  193. EnermyBombF::EnermyBombF(Manager *mgr,int xv,int yv,double memsx,double memsy,int ad) : Bomb(mgr,xv,yv,memsx,memsy)
  194. {
  195. MemberStatus::bx=29;//这里是
  196. MemberStatus::by=20;//子弹
  197. MemberStatus::Bitlong=5;//宽
  198. MemberStatus::Bittall=5;//高
  199. rx=1;
  200. ry=1;
  201. rlong=3;
  202. rtall=3;
  203. ChangePlace();
  204. OperatorStatus(7,ad);//设置速度
  205. };
  206. EnermyBombG::EnermyBombG(Manager *mgr,int xv,int yv,double memsx,double memsy,int ad) : Bomb(mgr,xv,yv,memsx,memsy)
  207. {
  208. MemberStatus::bx=43;//这里是
  209. MemberStatus::by=465;//子弹
  210. MemberStatus::Bitlong=7;//宽
  211. MemberStatus::Bittall=7;//高
  212.     /*王*/
  213. rx=2;
  214. ry=2;
  215. rlong=50;
  216. rtall=470;
  217. ChangePlace();
  218. OperatorStatus(7,ad);//设置速度
  219. };
  220. EnermyBombH::EnermyBombH(Manager *mgr,int xv,int yv,double memsx,double memsy,int ad) : Bomb(mgr,xv,yv,memsx,memsy)
  221. {
  222. MemberStatus::bx=29;//这里是
  223. MemberStatus::by=20;//子弹
  224. MemberStatus::Bitlong=5;//宽
  225. MemberStatus::Bittall=5;//高
  226. rx=1;
  227. ry=1;
  228. rlong=3;
  229. rtall=3;
  230. ChangePlace();
  231. OperatorStatus(7,ad);//设置速度
  232. };
  233. EnermyBombI::EnermyBombI(Manager *mgr,int xv,int yv,double memsx,double memsy,int ad) : Bomb(mgr,xv,yv,memsx,memsy)
  234. {
  235. MemberStatus::bx=29;//这里是
  236. MemberStatus::by=20;//子弹
  237. MemberStatus::Bitlong=5;//宽
  238. MemberStatus::Bittall=5;//高
  239. rx=1;
  240. ry=1;
  241. rlong=3;
  242. rtall=3;
  243. ChangePlace();
  244. OperatorStatus(7,ad);//设置速度
  245. };
  246. EnermyBombJ::EnermyBombJ(Manager *mgr,int xv,int yv,double memsx,double memsy,int ad) : Bomb(mgr,xv,yv,memsx,memsy)
  247. {
  248. MemberStatus::bx=29;//这里是
  249. MemberStatus::by=20;//子弹
  250. MemberStatus::Bitlong=5;//宽
  251. MemberStatus::Bittall=5;//高
  252. rx=1;
  253. ry=1;
  254. rlong=3;
  255. rtall=3;
  256. ChangePlace();
  257. OperatorStatus(7,ad);//设置速度
  258. };