我的结对编程队友是马啸天, 代码已体提交到coding.net上,网址 https://coding.net/u/yuqincao/p/the-third/git/blob/master/main.cpp
一:前言
黄金点游戏是一个数字小游戏,其游戏规则是:
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轮以上,并能够保留各轮比赛结果。
二:分工
这次是采用两人结对编程形式来完成作业,我的结对编程队友是马啸天,我是驾驶员,他是领航员;我们先是讨论了一下黄金点游戏的游戏规则,并按照游戏规则玩了一下游戏,发现G点确实有往下移动的的趋势。由于我是驾驶员,我决定用c++中的map来写,之前一直听别人说map,一直想学来的,这次作业正好可以用map来实现。于是我们就打算学着map来实现。
三:代码编写
1、for 循环来接受数据,G值的求解,按照要求。求与G值的距离,用一个for循环,这里用到了fabs函数,头文件为math.h。用两个标志low,high来存储差值最小和最大的位置,这些地方没有出什么大问题。
2、首先我们先实现的是只进行一次游戏的代码编写。一开始我定义的map数据类型是map<string,int>,在领航员的指出下,才发现这个错误。当出现输入数据不符合数据时,提示一直不停地打印出来,这个是马啸天测试的时候,发现的,改正了这个错误。
3、接下来我们想实现进行多次游戏,于是我就加上游戏次数你,用while循环,可是结果不对。后来我们进行讨论,队友发现每次上一轮的G和求和的参数等没有清零。于是我在队友的帮助下成功修改成功了。这里用的了map里的clear()函数。
4、这是运行时的照片。
四 总结
在这次结对编程中,由于第一次进行结对编程,每个人都有自己的编程习惯,在别人的复审下,一开始效率还是很低的,会出现一些小的矛盾,从而各执己见,导致争吵不休。后来,慢慢适应了。发现效率还是大于一个人的。自己编程的时候,有时候就会有分心的时候,不注意就少写了分号,或者小的逻辑错误,这时候队友就会及时的指出,要不然还得自己调试,结对的时候,也不太好偷懒,这样效率就提高了。尤其有的时候,有一些不确定,队友也会给出建议,如怎么进行多次游戏。
总的来说,结对编程确实能正提高了代码质量和编程效率。结对的时候,我的精神是高度紧张的,一直在编代码,效率很高,偶尔的一些小错误也会马上被改掉。
另附上结对编程时的照片。