结对编程:黄金点游戏
一.游戏内容
黄金点游戏是一个数字小游戏,其游戏规则是:
N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值。提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分。玩了几天以后,大家发现了一些很有意思的现象,比如黄金点在逐渐地往下移动。
二.程序实现功能
每次输入N个数字,计算出平均值和G点,输入数字最靠近G的同学得N分,离G最远的同学得到-2分,其他同学得0分。将每轮G点与每个同学对应的各自成绩打印出来。游戏结束后将每人成绩总和输出,可以看出第几名同学胜利。
三.程序模块
1.输入
输入分为两部分:玩家人数与局数、每位玩家的数据输入。用双重循环i、j分别控制玩家输入与游戏局数,并将玩家的输入数据按序存放在数组里。代码如下:
2.计算G点
首先将所有玩家数据总数求出来,求出平均值,再将平均值乘0.618后得到G点。我们使用一个函数——count(float a[],int size)求所有玩家数据总数,函数将存数据的数组s[]与数组长度n传入,在函数内部使用循环将总和求出,返回给主函数。将总数返回后在主函数求平均值与G点,并将G点打印出来。函数如下:
3.比较赋值
游戏要求玩家输入的数要与黄金点比较,所以我们将玩家输入的数依次与求得的黄金点相减,并将结果放入数组b中,然后对数组中的数用循环进行比较,求出数组b中的最大最小值后,在另一个数组c里对求得的b中最大值所对应下标赋值-2,最小值所对应下标赋值N,其他值赋值0。这样玩家每轮得分就会记录下来,并把分数累加放入数组num中。代码如下:
四.运行结果
1.自行输入玩家人数与游戏轮数后开始游戏
五.总结
通过多次实验我们发现黄金点确实在向下移动。本次要求结对编程,两个人写一个程序,这对于两个人的默契有很大的考验,我的结对伙伴是李帅伟,这次我们的合作还是很顺利的,经过多次交流,我们也有了一定的默契,有些问题能想到一起去,这样解决起来就很快。程序的编写与改错是我与李帅伟共同完成的,互相学习,互相进步,在我编写时出现了不少错误,李帅伟能够快速发现并给与改正。我认为结对编程很快速地提高了我的编程能力,对我有很大的帮助。下面附合作照片一张。