我们组的成员包括张远(我)和董沛同学。两人开发了一个小游戏-三人足球,作为pair project的作品。
欢迎下载围观:
source: https://files.cnblogs.com/SE-team-2011/Billiards.rar
demo: https://files.cnblogs.com/SE-team-2011/Billiards_demo.rar
这个游戏源自于足球游戏和台球游戏的结合。传统的足球游戏的目标是双方争夺足球将球踢进对方球门里面。传统的台球是利用球的碰撞将目标球击入袋中。两者结合就产生了碰撞足球,即每方控制几个球,撞击场上的足球,将球打入对方球门。
我们在网上调查了一下这一类的游戏,发现了一款比较好玩的网页游戏(http://www.globulos.com/play.php?ds=1&)。如下图所示
这款游戏本身比较丰富有趣,最近具有挺高的人气。但这个游戏现在不具备AI功能,如果想玩这个游戏需要登录并且等待其他玩家加入进行对战。董沛对这个游戏的AI设计有着非常浓厚的兴趣,非常希望能够为这个游戏写一个AI。于是我们选择这个游戏中的一个游戏项目-三人碰撞足球,作为我们的基础游戏。将这个游戏做成一个offline的游戏并加入AI。
“三人足球”的简单介绍
在这个游戏中,每方控制三个队员(即三个球),每一回合可以选择自己的球的弹射方向和力度,点击Go,双方的球同时弹出。游戏的目标是把场中的足球(白球)撞进对方球面里面。如下图所示
注意,自己的球掉进任何一方球门里面就会挂掉,这局比赛再也无法行动。所以行动的时候要小心不要一头撞进门里哦,要不自己三个球都进门里了就只能眼睁睁的看着对方自娱自乐了:)如下图所示
当然比赛中可以觉得局面太囧了可以选择重新摆球,重新开始。
“三人足球”的一些拓展设计
在这个project中,我们拓展的重点在于游戏AI的实现。AI主要要考虑一下三个因素
- 把足球打入对方球门
- 避免己方球进入球门
- 把对方球打入球门
此外,我们添加了一下简单的customization的要素。包括更改AI级别,调整球的最大速度,重新开始游戏等等
Pair Programming开发经历总结
开发的第一步就是确定要做什么。作品的创意来源于董沛。随后我们开会讨论了这个project的可行性,主要是讨论在短短两周内是否能完成游戏的开发。这个project主要有以下几个难点,并估算了每一部分的时间
- 前期可行性分析与survey(2天)
- 碰撞足球游戏中碰撞物理模型的实现(3天)
- 游戏框架的搭建(2天)
- 游戏逻辑的实现(2天)
- 游戏图片的制作(1天)
- AI的实现(4天)
由于两人都不太熟悉WPF,我们花了两天时间做了相关的survey。
我很幸运的在网上找到了一个台球游戏的源码(http://www.cnblogs.com/iwteih/archive/2010/04/21/1717379.html),里面有我们需要的碰撞物理模型以及一个比较好的游戏框架。对我们有很大的帮助。由于我要准备开题以及董沛同学在外实习等各种原因,pair programming只能安排在周末,其余时间完成制定好的survey和coding的任务。第一周周末我们共同完成了难点中的前两点。第二周中我们分工,董沛负责AI的实现,我负责游戏和UI的完善。在第二周周末我们共同完成本游戏的制作。
这次的Pair Programming中体验到了这种方式的若干好处,例如
- 程序代码更清晰,因为是两人共同设计的。
- bug更少,查除bug更容易,因为两人对代码比较了解。
- 能够取长补短,游戏的开发涉及到方方面面,创意,代码,美工等方面都有涉及。两人可以根据自己的兴趣和状况作出分工。例如董沛对AI比较感兴趣,而我比较熟悉ps等UI方面的工作。
How different the actual time spent versus the original estimation
实际开发过程与计划相比,我们的survey花了更长的时间,大概从第一周周末才确定计划。但由于我们有了台球游戏的源码,前两步变的容易了很多,一个周末便全部实现了。其他部分基本按照计划进行。
Some photos
以下是一些照片,记录了我们第一次pair project的经历:)
对partner的评论
感谢!
感谢iwteih同学的台球源码,对我们的project有很大的帮助>_<
最后,继续欢迎大家下载测试,并评论提意见:)