您的位置:首页 > 其它

软件工程第三次作业

2016-10-16 16:44 225 查看
结对编程:黄金点游戏

一、题目描述

黄金点游戏是一个数字小游戏,其游戏规则是:

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

1、本作业属于结对编程项目,必须由二人共同完成,并分别将本次作业过程发到博客,同时将本次作业源代码提交到coding系统;

2、如果可能的话尽量以C/S或B/S方式实现,即利用服务器接收和处理所有玩家提交的数字,并将结果反馈给各玩家,玩家可以通过客户端提交数字;

3、如果采用单机方式实现的话,需要为用户提供便利的输入界面;

4、该游戏每次至少可以运行10轮以上,并能够保留各轮比赛结果。

二、需求分析

游戏需要实现以下功能:

1.玩家人数,轮次,数据输入;

2.G值的计算与输出;

3.每位玩家得分成绩输出;

游戏由输入,输出,数据计算处理三部分组成。

三、程序设计

由于水平有限,不能用C/S和B/S来实现,所以用C写了个简单的单机游戏,部分代码如下:

这里定义了结构体,包含玩家信息

1  int i;
2     char ch;
3     float max=(float)fabs(p[0].number-ave);
4     float min=(float)fabs(p[0].number-ave);
5
6     for(i=0;i<num;i++) {        //统计出本轮最大值,最小值
7         p[i].b=(float)fabs(p[i].number-ave);
8         if(max<p[i].b)
9             max=p[i].b;
10         if(min>p[i].b)
11             min=p[i].b;
12     }
13
14     for(i=0;i<num;i++) {       //挨个玩家赋予成绩
15         if(p[i].b==max) {
16             p[i].score-=2;
17         }
18         else if(p[i].b==min) {
19             p[i].score+=num;
20         }
21         else{
22             p[i].score+=0;
23         }
24     }
25
26     printf("累计比赛得分:\n");
27     for(i=0;i<num;i++) {       //挨个玩家输出成绩
28         printf("      玩家%d: %d\n",p[i].name,p[i].score);
29     }


View Code
四、程序实现与总结

1.结对编程过程中,我负责代码的编写,我的队友刘馨负责代码的审理,下图是结对照片。



2.游戏界面:



3.开始游戏,输入人数、轮数,玩家数据



4.输出G值,玩家分数





5.规则介绍



6.总结

在编程过程中遇到许多问题,变量取名不规范,别人不易看懂,没有加注释,代码的书写不整洁,得分数据处理时情况考虑不周,没有考虑数据全部相等

的情况,这些大大小小的问题都在编程中队友的矫正发现下得到及时的解决。队友是个女孩,沉稳文静,观察思考细致,工作认真,具有很好的想法。我们通

过查阅资料来尽力完善方方面面。期间我们收获良多,学到了很多以前没有学到的知识,也感受到团队协作的重要,两个人更容易发现错误,分工明确,取长

补短,优势互补。

7.博客园链接

我的链接:https://i.cnblogs.com/lovewj/

同伴的链接:http://www.cnblogs.com/wwsthg/

8.coding.net地址:https://coding.net/u/lovewj/p/goldgame/git/upload/master/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: