坦克大战项目总结

坦克大战是一款经典的小游戏,也是我们这次的开发项目。

关于线程的项目开发,本来是有很多选择的,比如弹球,打砖块,雷电等等。由于这类项目我们个人来做可能存在很多问题,所以是以小组的形式做项目。至于为什么选择坦克大战,应该说是我们选择的时候欠考虑了。本来是想选个简单点的,而坦克大战不少人都做过,当时也没想太多,觉得不会太难,就选择了这个。后来在制作过程中发现了不少问题,细想以后发现这个其实比另外几个都还难,下面简单阐述一下坦克大战的开发思路,及和其他项目的区别比较。

我们小组四个人来完成这个项目,由于初次以小组合作的形式来做项目,存在着许多不足之处,导致在制作过程中的很多麻烦。当然,初次合作,我们也有不少做的好的地方。

首先,我们是分工完成。各自挑一部分写。一开始我们想到的类有主界面类,我方坦克类,敌方坦克类,子弹类,各种数据类(包括地图)。我当时负责的是敌方坦克,这个类算是比较好写的一个类,我自己写好的程序是有敌方坦克和己方坦克,能用键盘控制己方坦克自由移动的程度。后来是要把我那个敌方坦克的类整合到主类里去。整合的过程中出现了很多麻烦。比如我们的包名不一样,很多变量名和方法名不一样,都导致了整合时出现问题。之后的总结中我们也提到了这个问题,这是因为我们一开始就没有统一这些东西,只统一了显示界面的大小之类的,没有想到这些。

前期的开发是比较顺利的,地图很快就弄好了,我方坦克和敌方坦克也都弄好了,接下来的首要任务就是加子弹了。子弹是另外一个线程。同时我们也要为坦克都附加一个子弹的属性。后来我们采用了再创建一个坦克类,这个类是我方坦克和敌方坦克的基类,坦克该有的属性都在这个类里,这样就省去了很多麻烦。

剩下的东西就是比较麻烦的。比如解决坦克碰墙问题,子弹发射后打到东西没有停下来,而是直接覆盖了,打到敌方坦克后敌方坦克没有消失等等。这些问题差不多就是我们完成项目的主要障碍了,没有如期完成除了学校功课紧张,时间较少外,就是这些问题比较麻烦了。不过最后还是得到解决。总结的前一天晚上我们四个人还跑去网吧通宵做项目。不过在网吧的话,还是玩的比较多一点。但起码精神是可贵的。

至于问题的解决方案,在这里也就不细说了。也有很多问题不是我解决的,其实我也还没弄得很明白是怎么解决的。这点还是比较惭愧的。

下面是我们的坦克大战的两幅效果图,不同的地图。



 



 

接下来说一下坦克大战和其他项目的比较。由于没有做过其他几个,所以这些只能是我想到的。先说雷电,个人觉得雷电其实和坦克大战差不多。制作上应该比坦克大战容易,因为不需要判断飞机与地图接触,地图只是一个背景而已,而不像坦克大战那样有草地,砖块,河流等等。其他的地方和坦克大战很类似,不过在敌机出现方式上可能会有改变。另外就是可以移动下面的背景来使达到飞机前进的效果,这点不太一样。弹球主要是解决碰撞问题。打砖块的难点应该在球与砖块接触后球的运动方向及砖块的消失。改变运动方向的我只做过单一的座标反方向,就是碰撞时单一的改变座标增量xy的正负,以达到反弹的效果。另一个是砖块消失,这个和坦克消失也可以用类似的方法做到。把砖块或坦克放到一个容器里,然后再移除。其他的就是美观和优化问题了,技术要点应该是差不多的。

这是一个合作项目,做起来和个人开发不太一样。在这次合作中,我们也学到了很多合作方法,有了一定的合作经验,相信下一次的合作肯定能有更多的进步。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章