软工课设:黄金点游戏 - 新闻资讯 - 云南小程序开发|云南软件开发|云南网站建设-昆明葵宇信息科技有限公司

159-8711-8523

云南网建设/小程序开发/软件开发

知识

不管是网站,软件还是小程序,都要直接或间接能为您产生价值,我们在追求其视觉表现的同时,更侧重于功能的便捷,营销的便利,运营的高效,让网站成为营销工具,让软件能切实提升企业内部管理水平和效率。优秀的程序为后期升级提供便捷的支持!

您当前位置>首页 » 新闻资讯 » 技术分享 >

软工课设:黄金点游戏

发表时间:2020-10-19

发布人:葵宇科技

浏览次数:25

这里写自定义目录标题

  • 课设要求
  • 设计思路及流程图
  • 代码
  • 结对编程感想

课设要求

分组编写一个满足下列要求的黄金点游戏程序。
? 游戏规则:N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618 (所谓黄金分割常数),得到G值。提交的数字最靠近G(取绝对值)的同 学得到N分,离G最远的同学得到-2分,其他同学得0分。
? 采用单机方式实现,需要为用户提供便利的输入界面。
? 该游戏每次至少可以运行10轮以上,并能够保留各轮比赛结果。
? 后续在此基础上迭代开发。

设计思路及流程图

设计语言:C++
设置goldgame结构体来存放用户的输入数据和分数;
首先,用户输入参与人数,创建结构体数组存储用户信息,然后在功能选择界面选择开始游戏,结束游戏,显示分数等功能;
开始游戏后,用户依次输入数字,系统将计算平均值并乘以0.618,然后通过循环n次选出与这个值最近与最远的用户编号,并对其进行加分与扣分;
跳转至功能选择界面,用户继续选择需要执行的功能。
在这里插入图片描述

代码

#include <iostream>
#include<cmath>
using namespace std;

struct goldpoint 
{
double data;
int score = 0;
}; 

int main()
{
	int n,m = 0;
	double number=0;
	cout << "请输入参与人数";
	cin >> n;
	goldpoint student[n];
	ff1:  cout << "请选择功能:1:进行游戏;2:结束游戏;3:查看当前分数"<< endl;
	cin >> m;
	while(m!=2) 
	{
		if(m==1)
		{
			cout << "请依次输入" << n <<"位学生的数字" << endl; 
			for(int i=0; i<n; i++)
			{
				cin>>student[i].data;
				number+=student[i].data;
			}
			double avg = number/n*0.618;
			double max=fabs(student[0].data-avg), min=fabs(student[0].data-avg);
			int flagmax=0, flagmin=0;
			for(int i=0; i<n; i++)
			{
				if(max < fabs(student[i].data-avg))
				{
					max = fabs(student[i].data-avg);
					flagmax = i;
				}
				if(min > fabs(student[i].data-avg))
				{
					min = fabs(student[i].data-avg);
					flagmin = i;
				}
			}
			student[flagmax].score-=2;
			student[flagmin].score+=2;
			cout << "本轮游戏最近者:" << flagmin+1 << "号同学" << endl;
			cout << "本轮游戏最远者:" << flagmax+1 << "号同学" << endl;
		}
		if(m==3)
		{
			for(int i=0; i < n; i++)
				cout << "stunent" << i+1 << ":" << student[i].score << endl; 
		}
		goto ff1;
	} 
	return 0;
} 

结对编程感想

结对编程是一种敏捷软件开发的方法,两个程序员在一个计算机上共同工作。一个人输入代码,而另一个人审查他输入的每一行代码。输入代码的人称作驾驶员,审查代码的人称作观察员。两个程序员经常互换角色。
在此次结对编程中,我们可以及时讨论思路,解决了一个人思考的局限性;一个人工作时,由于时间跨度较大,在编译时,之前的一些细节思路会有所遗忘,增大debug的难度,而通过结对编程,在输入代码的同时,另一个人可以及时地作出反馈,及时改掉一些bug,在编译之前就解决它,大大地提高了效率;最后,因为是两个人一起编程,不会像独自编程时那样随意,而是会集中注意力以免被队友挑出漏洞,同时在代码格式的使用上也会比较严谨,这样也在一定程度上提高了代码质量。

相关案例查看更多