欢迎光临
我们一直在努力

射击的乐趣:WIN32诠释打飞机游戏源码补充

 1 void CbitmapDlg::OnHit()
 2 {
 3     //defender hit
 4     for(int i = 0; i < iCurplane; i++)
 5     {
 6         //修正定时器偏差和键盘消息之间偏差导致的错误碰撞检测
 7         if (plane[i].status == DESTROYED)
 8             continue;
 9         int defendcox = superdefender.pos_x + superdefender.Deswidth/2;
10         int defendcoy = superdefender.pos_y + superdefender.Desheight/2;
11         int planecox = plane[i].pos_x + plane[i].Deswidth/2;
12         int planecoy = plane[i].pos_y + plane[i].Desheight/2;
13 
14         //按照圆形包围体检测
15         if(((defendcox - planecox)*(defendcox - planecox) + (defendcoy - planecoy)*(defendcoy - planecoy)) > ((superdefender.Desheight + plane[i].Desheight)*(superdefender.Desheight + plane[i].Desheight)/4 + (superdefender.Deswidth + plane[i].Deswidth)*(superdefender.Deswidth + plane[i].Deswidth)/4))
16             continue;
17         else
18         {
19             //检测defender的4个点是否碰撞到飞机
20             CRect rect;
21             rect.left = plane[i].pos_x;
22             rect.right = plane[i].pos_x + plane[i].Deswidth;
23             rect.top = plane[i].pos_y;
24             rect.bottom = plane[i].pos_y + plane[i].Desheight;
25 
26             CPoint point1, point2, point3, point4;
27             point1.x = superdefender.pos_x;
28             point1.y = superdefender.pos_y;
29             point2.x = superdefender.pos_x + superdefender.Deswidth;
30             point2.y = superdefender.pos_y;
31             point3.x = superdefender.pos_x;
32             point3.y = superdefender.pos_y + superdefender.Desheight;
33             point4.x = superdefender.pos_x + superdefender.Deswidth;
34             point4.y = superdefender.pos_y + superdefender.Desheight;
35 
36             if(PtInRect(rect, point1) || PtInRect(rect, point2) || PtInRect(rect, point3) || PtInRect(rect, point4))
37                 superdefender.status = DESTROYED;
38 
39         }
40         if(superdefender.status == DESTROYED)
41         {
42             life -= 1;
43             AddDefender();
44             return ;
45         }
46     }
47 }

  • 海报
海报图正在生成中...
赞(0) 打赏
声明:
1、本博客不从事任何主机及服务器租赁业务,不参与任何交易,也绝非中介。博客内容仅记录博主个人感兴趣的服务器测评结果及一些服务器相关的优惠活动,信息均摘自网络或来自服务商主动提供;所以对本博客提及的内容不作直接、间接、法定、约定的保证,博客内容也不具备任何参考价值及引导作用,访问者需自行甄别。
2、访问本博客请务必遵守有关互联网的相关法律、规定与规则;不能利用本博客所提及的内容从事任何违法、违规操作;否则造成的一切后果由访问者自行承担。
3、未成年人及不能独立承担法律责任的个人及群体请勿访问本博客。
4、一旦您访问本博客,即表示您已经知晓并接受了以上声明通告。
文章名称:《射击的乐趣:WIN32诠释打飞机游戏源码补充》
文章链接:https://www.456zj.com/40932.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址