当前位置:C++技术网 > 资讯 > 毕业设计-幼儿飞行棋之做后感(3)

毕业设计-幼儿飞行棋之做后感(3)

更新时间:2016-03-07 22:04:54浏览次数:1+次

  讲完VC6.0的bug,就来聊一下我对飞行棋的理解。

  毕业设计的飞行棋,飞为单机版和网络版,首先解决单机版,下载了一个单机版的飞行棋代码,看懂了之后,总结出自己的理解,一个单文档,视图用一幅飞行棋谱覆盖,计算出飞行棋谱每一步的坐标以及鼠标点击的每一步的范围大小,我弄成8个一维数组保存每一步坐标,4个二维数组保存鼠标点击的每一步的范围大小,如下图所示

  

  因为数组太多,没有截图完整。

  接着就定下飞信棋的规则,因为有些规则难以实现(以我当时的技术以及交付的时间),例如飞行棋重叠会怎么样等规则,所以就没有实现,简单的规则如下:

  1.只有6点,才能起飞,6点可以继续掷骰。
  2.棋子走到敌方棋子停留的格子可将敌方击落。
  3.棋子停留在和自己颜色相同格子上,可向前跳跃四格。
  4.棋子若到颜色相同虚线连接一格,可通过虚线到前方颜色相同一格。

  接下来就是制作飞机的模型,因为设计的水平太差,导致还是抄袭了别人的作品,飞机模型如下图所示

  

  四种飞机为什么会有八个图片?这个原因我也是看了源代码才懂,原来是调用了BitBlt函数进行贴图,


pdc->BitBlt(300,10,41,35,&Redmask,0,0,MERGEPAINT);
pdc->BitBlt(300,10,41,35,&Redplane,0,0,SRCAND);

先使用MERGEPAINT参数(通过使用布尔型的OR(或)操作符将反向的源矩形区域的颜色与目标矩形区域的颜色合并),将黑色的飞机图片与背景或运算重叠起来,这样背景图上就会出现黑色的飞机模型,然后再使用SRCAND参数(通过使用AND(与)操作符来将源和目标矩形区域内的颜色合并),将真正的飞机图片贴到那一块黑色的飞行模型上,这样就达到了飞机飞行在飞行棋谱上的感觉。

  今天先讲这三点,坐标,规则,飞机图形,如果大家对我的毕业设计有想法,欢迎留言。