结对编程(黄金点游戏)

黄金点游戏

前言:

  这次软件工程的作业是以结对编程的形式编写“黄金点游戏”。结对编程是指两位程序员坐在同一工作台前开发软件与两位程序员各自独立工作相比,结对编程能写出质量更好更高的代码,达到事半功倍的效果。

  黄金点游戏介绍: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/

时间: 2024-10-22 23:15:26

结对编程(黄金点游戏)的相关文章

结对编程——黄金点游戏之旅【二】

一.黄金点游戏是一个数字小游戏,其游戏规则是: N个同学(N通常大于10),每人写一个0-100之间的有理数(不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(黄金分割常数),得到G值.提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分. 二.后续功能的实现功能 经过三天的努力,我们终于完成了开始游戏.取消准备.查看历史纪录.添加测试以及退出登录功能. 1.开始游戏(准备游戏)功能介绍:玩家登陆成功后直接进入游戏界面,下方的准备窗口会

结对编程-黄金点游戏之旅[四]

(游戏已上线,更多信息请戳底部链接▼) <--戳这个链接也会跳的哦, 了解游戏规则戳这里-->游戏规则 我的队友: 张波(进入博客请戳底部链接) 性格开朗,人很随和,不想写代码的时候都是他主动拉着我去写的,工作认真负责,有分歧的地方或者逻辑不顺的地方我们都会仔细讨论 主要负责写后台的业务逻辑,登陆.注册.开始游戏等小功能的后台代码 遵照代码规范.每次他写完后我都会做Code Review,虽然没有自动化测试,没有性能分析,但是我会单步调试,分析每一行代码的逻辑和作用 我: 李洋洋 主要负责前端

结对编程-黄金点游戏

一.项目描述:黄金点游戏 黄金点游戏是一个数字小游戏,其游戏规则是: N个同学(N通常大于10),每人写一个0-100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值.提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分.玩了几天以后,大家发现了一些很有意思的现象,比如黄金点在逐渐地往下移动. 现在请大家根据这个游戏规则,编一个可以多人一起玩的小游戏程序,要求如下: 1.本作业属于结对编程项

结对编程—黄金点游戏WinForm单机版

本小游戏场景来自邹欣老师的<移山之道>一书: "阿超的课都是下午两点钟,这时班上不少的同学都昏昏欲睡,为了让大家兴奋起来,阿超让同学玩一个叫"黄金点"的游戏:N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值.提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分.玩了几天以后,大家发现了一些很有意思的现象,比如黄金

结对编程——黄金点游戏

结对编程项目-黄金点游戏 一.项目描述:黄金点游戏是一个数字小游戏,其游戏规则是: N个同学(N通常大于10),每人写一个0-100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值.提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分.玩了几天以后,大家发现了一些很有意思的现象,比如黄金点在逐渐地往下移动. 现在请大家根据这个游戏规则,编一个可以多人一起玩的小游戏程序,要求如下: 1.本作业

结对编程黄金点游戏

此次结对编程我是与同班的王鑫同学一组,题目是设计一个黄金点游戏,本来看老师建议界面和服务器的设计,想用java来写,但是我俩对于java不太熟悉,忙活了两天没有结果,干脆用我二人共同会的语言C语言来实现,所以我二人决定通过C语言来实现这个游戏. 题目要求设计的游戏的规则为:有N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值.提交的数字最靠近G(取绝对值)的同学得到N分,离G最远

结对编程————黄金点游戏

一.项目描述:黄金点游戏 黄金点游戏是一个数字小游戏,其游戏规则是: N个同学(N通常大于10),每人写一个0-100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值.提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分.玩了几天以后,大家发现了一些很有意思的现象,比如黄金点在逐渐地往下移动. 现在请大家根据这个游戏规则,编一个可以多人一起玩的小游戏程序,要求如下: 1.本作业属于结对编程项

结对编程-黄金点游戏之旅[一]

黄金点游戏 游戏描述:黄金点游戏是一个数字小游戏,其游戏规则是N个同学(N通常大于10),每人写一个0-100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值.提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分.玩了几天以后,大家发现了一些很有意思的现象,比如黄金点在逐渐地往下移动. 游戏机制设计:采用B/S模式,由客户端发起请求参加游戏,服务端接收请求处理,当满足游戏结算条件的时候向客户

结对编程-黄金点游戏之旅[二]

项目结构: 前端页面结构及样式和动画设计 登陆(10.14完成) 注册(10.14完成) 主游戏页(10.15完成) ajax回调函数处理以及页面渲染 请求当前房间游戏用户列表返回json数据处理(未完成) 请求当前用户游戏历史纪录结果json数据处理(未完成) 前端ajax交互方法 注册(10.14完成) 登陆(10.15完成) 添加当前用户到游戏列表(10.15完成) 从游戏列表删除当前用户(10.15完成) 前端js事件处理方法 退出登陆返回登陆页(10.15完成) 后台控制器层交互方法

结对编程——黄金点小游戏的设计与实现

个人感想 最近总是很纠结,关于如何平衡考研时间和学校课程时间,还有关于考研资料的选择.就是在这样一种状态下,我迎来了结对编程项目,两个人共同编程完成一个小游戏,说实话,刚开始时我对这个项目不怎么感兴趣,我总觉得应该把时间都放在考研上.还有一个原因就是,我觉得自己什么都不会,肯定会拖累队友,但是经过我们多次沟通后,我发现这个小游戏没有我想象中的那么难,而且我逐渐有点兴趣了,再加上和队友的多次沟通,我觉得结对编程是一件很有意思的事,两个人提出不同的想法然后讨论,再接着看着自己的想法都能慢慢的实现出来