关键词:
黄金点游戏
前言:
这次软件工程的作业是以结对编程的形式编写“黄金点游戏”。结对编程是指两位程序员坐在同一工作台前开发软件与两位程序员各自独立工作相比,结对编程能写出质量更好更高的代码,达到事半功倍的效果。
黄金点游戏介绍:N个同学(N通常大于10),每人写一个0~100之间的有理数(不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值,提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分。
具体代码流程如下:
定义玩家结构体,包含玩家姓名,输入数据,得分等。
typedef struct player { int name; int score; int win; int defeat; float number; float b; }PLAYER;
程序主要的三个函数,功能分别为游戏的初始化,游戏规则介绍,游戏得分的计算。
1 void start(); //游戏的初始化 2 void rule(); //游戏规则介绍 3 void count(PLAYER *p,float ave,int num);//计算比赛得分的函数
动态分配结构体数组,当输入游戏玩家人数大于100时,存储空间不足,此时需要重新分配存储空间
p=(PLAYER *)malloc(100*sizeof(PLAYER)); system("cls"); printf("\n\n\n"); printf(" 请输入游戏人数: "); fflush(stdin); scanf("%d",&player_num); if(player_num>100){ p=(PLAYER *)realloc(p,player_num*sizeof(PLAYER)); }
玩家信息用for循环存储到数组中,游戏分数初值为0,玩家姓名直接用数字代替,即“玩家1”,“玩家2”。
for(j=0;j<game_num;j++){ printf("\n\n"); printf("第%d轮比赛:\n",j+1); for(i=0,sum=0;i<player_num;i++) { if(flag==1){ p[i].name=i+1; p[i].score=0; //初始化初值为0 p[i].win=0; p[i].defeat=0; } printf(" 玩家%d: ",p[i].name); scanf("%f",&p[i].number); sum+=p[i].number; }
利用公式求出黄金点数G的值,再调用count()函数求出各个玩家的得分。
ave=sum/player_num; ave=(float)(ave*0.618); printf(" 黄金点G的值为:%f\n",ave); count(p,ave,player_num); flag=0;
统计出本轮游戏的最大值,最小值
for(i=0;i<num;i++) { p[i].b=(float)fabs(p[i].number-ave); if(max<p[i].b) max=p[i].b; if(min>p[i].b) min=p[i].b; }
给每个玩家赋予成绩,获胜者得N分(N个玩家),失败者得-2分,其他人都是0分。
for(i=0;i<num;i++) { if(p[i].b==max) { p[i].score-=2; } else if(p[i].b==min) { p[i].score+=num; } else{ p[i].score+=0; } }
循环输出每个玩家的成绩。
printf("累计比赛得分:\n"); for(i=0;i<num;i++) { printf(" 玩家%d: %d\n",p[i].name,p[i].score); } printf("是否继续 Y or N : ");
运行效果演示
游戏运行界面
键盘输入游戏轮数和游戏玩家数
各个玩家输入心中所想数值,程序计算出黄金点数G,显示累计比赛得分
重复游戏,直至玩家手动退出(即“是否继续”输入N)或者游戏轮数足够后,自动结束游戏
游戏规则
总结:
通过这次结对编程学习到了许多新的知识,队友给了我很多的指导与帮助,结对编程的确是一个事半功倍的好方法,编程本身是一件很枯燥的事情,尤其是遇到解不开的问题时,结对编程让两个人可以一起研究探讨,相互支持与鼓励,这就让编程的过程变得简单轻松了许多。
附带结对编程照一张
我的coding.net地址:http://www.cnblogs.com/wwsthg/
队友coding.net地址: http://www.cnblogs.com/lovewj/
结对编程——黄金点游戏
结对编程项目—黄金点游戏一.项目描述:黄金点游戏是一个数字小游戏,其游戏规则是: N个同学(N通常大于10),每人写一个0-100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘... 查看详情
结对编程-黄金点游戏
...ster/Goldpoint.cpp 分工:本周的课程任务是结对编程实现黄金点游戏,我的结对对象是郑淑丹,分工情况是:驾驶员:袁文雪,领航员:郑淑丹。由于我们两人都比价缺乏项目经验,因此在结 查看详情
结对编程——黄金点游戏
本次的结对编程的项目是黄金点游戏,我的结对对象是杨月永,我们的编程能力都不太好,而且都对C语言更熟悉些,因此我们决定用C语言来实现。(1)分工:角色分配:杨月永是领航员,我是驾驶员,但由于我们的编程能力都... 查看详情
结对编程————黄金点游戏
一、项目描述:黄金点游戏黄金点游戏是一个数字小游戏,其游戏规则是: N个同学(N通常大于10),每人写一个0-100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄... 查看详情
结对编程-黄金点游戏
一、项目描述:黄金点游戏黄金点游戏是一个数字小游戏,其游戏规则是: N个同学(N通常大于10),每人写一个0-100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄... 查看详情
结对编程-黄金点游戏
一、角色的分配 领航员:王香友(本人) 驾驶员:徐建磊二、内容及要求黄金点游戏是一个数字小游戏,其游戏规则是: N个同学(N通常大于10),每人写一个0~100之间的有理数 (... 查看详情
结对编程(黄金点游戏)
&n 查看详情
结对编程-黄金点游戏之旅[一]
黄金点游戏游戏描述:黄金点游戏是一个数字小游戏,其游戏规则是N个同学(N通常大于10),每人写一个0-100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G... 查看详情
黄金点游戏结对编程
游戏项目:1.游戏名:经典游戏黄金点2.游戏规则:N个同学(N通常大于10),每人写一个0~100之间的有理数(不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数)得到G值。提交的数字最靠近G... 查看详情
结对编程——黄金点游戏
一:实现功能 由10位玩家参与游戏,每位玩家输入一个介于o~1000之间的整数,对所有玩家输入的数做如下处理:先求和再平均,将平均数乘以黄金分割数0.618得出黄金值,用黄金值分别减去每位玩家输入的数得... 查看详情
结对编程——黄金点游戏之旅
一、黄金点游戏是一个数字小游戏,其游戏规则是: N个同学(N通常大于10),每人写一个0-100之间的有理数(不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(黄金分割常数),得到G值。提交的数字最靠近G... 查看详情
黄金点游戏(结对编程项目)
黄金点游戏基本要求:N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值。提交的数字最靠近G(取绝对值)的同学... 查看详情
结对编程:黄金点小游戏
一.游戏要求黄金点游戏是一个数字小游戏,其游戏规则是: N个同学(N通常大于10),每人写一个0-100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),... 查看详情
结对编程-黄金点游戏之旅[二]
项目结构:前端页面结构及样式和动画设计登陆(10.14完成)注册(10.14完成)主游戏页(10.15完成)ajax回调函数处理以及页面渲染请求当前房间游戏用户列表返回json数据处理(未完成)请求当前用户游戏历史纪录结果json数据处... 查看详情
一次奇妙的体验:结对编程之黄金点小游戏
项目描述:黄金点游戏黄金点游戏是一个数字小游戏,其游戏规则是: N个同学(N通常大于10),每人写一个 查看详情
结对编程—黄金点游戏(庞思瑶&季远琦)
...得到N分,离G最远的同学得到-2分,其他同学得0分。在结对编程中庞思瑶同学负责main函数的编写,我负责menu()和query()即主 查看详情
结对编程-黄金点游戏之旅[四]
(游戏已上线,更多信息请戳底部链接▼)<--戳这个链接也会跳的哦,了解游戏规则戳这里-->游戏规则我的队友:张波(进入博客请戳底部链接)性格开朗,人很随和,不想写代码的时候都是他主动拉着我去写的,工作认真... 查看详情
结对项目--黄金点游戏
...且变化范围越来越小,通过编程,我们要实现这一功能。结对项目:1、根据 查看详情