美俪女神 发表于 2023-8-27 20:21:22

【VB6】一个“坦克大战”游戏的简单实现

【简介】
坦克大战是一款经典的射击类游戏,支持单人或双人模式。
单人模式是电脑控制1到N个坦克和你对打,双人模式是你和你的玩伴各控制一个坦克对打。

【特色】
1、坦克除了支持上下左右移动射击,还支持4个斜向方位的移动和射击(左上↖、左下↙、右上↗、右下↘)。
2、坦克除了有炮,还有机枪,还可以呼叫飞机轰炸敌方坦克(包括精确轰炸和地毯式轰炸)。
3、支持地图编辑(有土墙、钢墙、河流、地雷四种元素)。

【缺点】
1、画面很粗糙(大概是80年代游戏机的水平,因为我实在没有“一身的艺术细菌”,完全不懂美工)。
2、没有AI,电脑控制的坦克看起来不太聪明(但是火力依然很猛,尤其是在一对多的情况下,如果不呼叫轰炸机,人类玩家不占优势)。
3、由于VB默认不支持多线程,所以当地图上的元素较多时,会导致游戏很卡(编译后支持“多线程模式”,但因为这个游戏是很久之前写的,没有使用基于ActiveX-EXE的多线程技术,所以导致稳定性较差)。

【截图】
地图编辑器:对战中(己方坦克寡不敌众,于是叫来飞机进行地毯式轰炸):
【下载】**** Hidden Message *****

gujin163 发表于 2023-8-28 09:14:17


谢谢楼主提供

gujin163 发表于 2023-8-28 09:15:22

祝楼主考试顺利~

0xAA55 发表于 2023-8-29 20:11:33

游戏不管用不用多线程都需要解决一个场景中东西很多的时候怎样做才不会卡的问题。

lichao 发表于 2023-9-9 18:17:09

本帖最后由 lichao 于 2023-9-9 18:22 编辑

   不知道你是不是用窗口控件去实现的一个个坦克/路障啥的,这种游戏如果用“窗口控件”的方式去做,元素多了一定会卡,因为窗口本来就比较费资源。而常规做法是“画”上去,直接“画”上去效率会高得多,Win上gdi就是这种类型的开发模式。(老早以前我做这种东西也是拿控件去做,比如做一个永远点不到的按钮,鼠标到了就跑)。Javascript也是,绘图部分不用控件去做的,而直接是用canvas或者其他绘图库。
   直接“画”的话,和每个假“控件”的交互就得自己做坐标判断,还要自己负责重绘,比如MFC里的onpaint。要想少点繁琐的操作可以用流行的游戏引擎如c++的cocos2dx,这种开发方式就是用引擎帮你播放各种动画(说白了游戏里大部分逻辑都可以认为是动画),平移/旋转/补间,也不用自己重绘了,引擎控制每一帧该放什么。再高级的个人觉的就是如python-panda3d这种的,这种开发出来可以编译到Win/Linux/Mac上,且界面也很精美,官网有大量例子,不多的代码即可开发一个类似于雷电的游戏出来

usr 发表于 2023-9-9 20:02:39

楼主试试用C做个控制台界面的坦克大战。控件遮挡了很多游戏该有的内部实现(比如地图上障碍物的表示,vb可以直接堆控件,C要考虑地图上障碍物实例的位置类型绘图等等)
而且C的可移植性更好。写好坦克大战后可以移植到不同系统和其他平台。vb只能运行在windows上。
页: [1]
查看完整版本: 【VB6】一个“坦克大战”游戏的简单实现