结对编程:黄金点游戏
本次的作业是本人首次参与结对编程项目,在完成本次作业的过程中,我深切地体会到了两个人一起编程和独自一人完成任务之间的巨大 差异,在任务完成的过程中,我们要不断进行磨合,以适应对方的工作方式和编码风格,总而言之,这一次的经历让我意识到了与他人进行合作的重要性,两个人之间对同一问题的不同思考也有助于程序的优化,使其尽可能做到尽善尽美。接下来总结一下任务具体的进行过程。
首先,在这次作业的题目发布之后,我和孙步桥一开始打算用一种易于可视化编程的语言来完成这个黄金点游戏,然而接下来在多方面的权衡和考量之后,我和我的搭档放弃了原定的构想,决定继续用我们两个人都很熟悉的C语言来进行编码。因为采用了C语言在Visual Studio2013的平台上来编写程序,所以操作界面可能不是很绚丽迷人,但作为理工科的学生,我们也尽可能做到了另一种简约之美,用最小的代价实现最好的结果。
在开始编写程序之前,我和搭档为程序划分成了几个部分,分别负责游戏的具体进行,计算G值,以及每轮玩家最终成绩的管理。接下来的编码由我和我的结对伙伴交替进行,每个人都对对方的成果进行检测以及评价,并提出改进意见,每一个模块完成之后,我们都要一起进行进一步的调试工作,如果出现错误,就要进行具体的分析,找出错误,并对代码进行相应的修改,使得计算结果符合预期要求,就这样在经过了接近两周的艰苦奋斗之后,最终的程序总算是完工了,这是凝聚了我们二人无数汉水的结晶。在这两个星期的时间里,我发现了自己原本的很多编程习惯有很多不可取或者需要改进之处,同时也发现孙步桥同学在思维方式上的很多不同凡响之处,令我着实眼界大开,受益匪浅,在此,我要感谢孙步桥,是你让我感觉这2个星期过得充满意义,学到了许多,如果还有机会的话,愿我们还能合作愉快。如下所示为具体代码和运行结果示意图。
#include<stdio.h> #include<stdlib.h> #include<Windows.h> int result[100][1000000]; int count = 0; int num1[100][1]; void main() { int flag = 0, flag1; while (flag == 0) { printf("欢迎进入黄金点游戏\n"); int i, a, j; int num[1000], sum = 0, l, m, G, num2[1000], num3[100], num4[100], t; printf("请输入本轮参加游戏的人数\n"); scanf("%d", &a);//玩家人数 for (i = 0; i < a; i++)//输入各个玩家的数据 { printf("请第%d成员输入数据",i+1); scanf("%d", &num[i]); if (num[i]<0) { exit(0); } else { if (num[i]>100) { exit(0); } } } for (i = 0; i < a; i++) { l = num[i]; sum = sum + l; } G = (int)(sum / a*0.618);//G值 for (i = 0; i < a; i++) { l = abs(num[i]-G); num2[i] = l; num3[i] = l; } for (i = 1; i < a; i++)//冒泡排序 { for (j = 0; j < a - 1; j++) { if (num3[j] > num3[j + 1]) { t = num3[j]; num3[j] = num3[j + 1]; num3[j + 1] = t; } } } for (i = 0; i < a; i++)//num4=0 { num4[i] = 0; } for (i = 0; i < a; i++) { l = num3[0], m = num3[a - 1]; if (num2[i] == l) { num4[i] = a; } if (num2[i] == m) { num4[i] = -2; } } for (i = 0; i < a; i++)//输出各个玩家的信息 { printf("第%d个成员的成绩为%d\n",i+1, num4[i]); } for (i = 0; i < a; i++) { result[count][i] = num4[i]; } num1[count][0] = a; count++; printf("是否还想继续,是请按0,否请按任意键退出游戏"); scanf("%d", &flag); } int n, i; printf("请问是否想查看之前的成绩,是请输入0,否按任意键退出\n"); scanf("%d", &flag1); while (flag1 == 0)//查看各轮结果的比赛成绩 { printf("请输入想查看的第几轮成绩"); scanf("%d", &n); for (i = 0; i<num1[n - 1][0]; i++) { printf("第%d个成员的成绩为%d\n",i+1, result[n - 1][i]); } printf("是否还要继续观看,是请输入0,否按任意键退出\n"); scanf("%d", &flag1); } system("pause"); }
最后再附上我和搭档的工作照一张。