首页 > 代码库 > 结对编程作业
结对编程作业
黄金点游戏是一个数字小游戏,其游戏规则是:
N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值。提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分。玩了几天以后,大家发现了一些很有意思的现象,比如黄金点在逐渐地往下移动。
现在请大家根据这个游戏规则,编一个可以多人一起玩的小游戏程序,要求如下:
1、本作业属于结对编程项目,必须由二人共同完成,并分别将本次作业过程发到博客,同时将本次作业源代码提交到codeing系统;
2、如果可能的话尽量以C/S或B/S方式实现,即利用服务器接收和处理所有玩家提交的数字,并将结果反馈给各玩家,玩家可以通过客户端提交的数字;
3、如果采用单机方式实现的话,需要为用户提供便利的输入界面;
4、该游戏每次至少可以运行10轮以上,并能够保留各轮比赛结果。
5、作业总结中,驾驶员主要描述本次结对编程中领航者对代码复审做了哪些工作,提出了哪些有建设性的意见和建议。领航者对驾驶员本次工作进行总结,主要包括代码风格、编程技巧等,两人应共同总结与一人编程相比,结对编程是否真正提高了代码质量和编程效率,双方应该将本次工作过程拍若干张照片并发布到博客中。
1.角色分配
领航员:孙唱
驾驶员:熊高远(我)
2.程序源代码链接
https://git.coding.net/FadedWhite/gold.point.game.git
3.结对编程过程与总结
读完题目后,最重要的就是对内容进行分析。我们首先对该游戏的需求进行了详细的讨论,具体到每个细节。再整合需求,设计整体布局,在这部分的设计中我们花费了较大力气,需要考虑存储结构,排版布局等一系列问题。接下来就是对具体代码的实现,鉴于我的编程能力较孙唱强一点,因而我选择单机模式实现,并采用了数据结构中图部分的邻接表作为存储结构。在编写的过程中可以感觉到这种邻接表结构很好地解决了我们所面对的问题,这证明了我们的编程方向是对的,不必浪费时间改变思路。在编程的过程中,我将功能逐一实现,而每完成一个小功能的设计,孙唱便给出具体优化建议,我们先讨论该建议是否有必要,若有必要再讨论可行性并拿出具体解决方案。
当主体程序完成并由我完成初步测试后,孙唱开始对程序进行更为精确细致的测试。他的测试设计尽可能多的覆盖标准,并逐一检测结果。完成这些检测之后,事实上,这部分并未出现错误结果。但接下来的测试并不按游戏要求输入,而是刻意使输入错误,观察输出结果。测试前我虽然也考虑了相当多的这类错误输入情况,也给出解决方案,但是显然做的不够全面,依旧有几种情况未曾考虑到。在他的测试完成后,我再对未考虑到的情况给以新的解决方案,使得程序尽可能完美。
通过这次结对编程,我深刻感受到两人合作编程的高执行效率。两个人考虑问题时可以更加全面,更加具体。在整体的设计上,两个人的合作可以最大化避免盲区;具体问题的处理上,也可以更为细致。最后,两个人在对程序的测试上,可以最大大程度上找出未考虑的东西,进而完成对程序的优化。
附上结对编程合作图片:
附上部分编译界面:
结对编程作业