1.项目介绍
黄金点游戏是一个小游戏,我们组的黄金点游戏设计简单,属于单机类游戏。主要针对的是人数较少的人群,操作简单,更易于比较各玩家的得分。
2.代码来源
来源:https://github.com/TalosLin/QTL
3.项目分析
我们的小游戏分几个阶段。首先是用户进入界面,在界面上我们很贴心的为每位新来的玩家设置了指南,游戏规则以及游戏得分算法。接下来就是设置的游戏轮数玩家可以选择需要进行的游戏场数。在选择好场数以后就是游戏的人数,可以是10以内也可以是10以外。然后每位玩家输入自己想输入的数字,但我们仅支持整数,最后全部的得分以及本轮得分都由算法完成。玩家就只需要等待数秒就能知道自己的得分。
4.bug排查
在拿到这个代码的时候我们测试是没有问题的,但是当我们进行游戏测试时发现,我们自己计算的黄金点跟计算机计算的黄金点不一样,并且差距较大。后来我们检查代码时发现,算法出错。原始代码在计算G值时把第二次玩家输入的数字当做了总人数,导致平均数计算出错。我们修改了代码,添加了玩家人数M当做平均数的分母。接下来代码运行也成功了,黄金点跟我们计算的值一样。项目基本完成。
5.项目扩展
对于这个代码的扩展,我认为我们可以在游戏进入时加上玩家name输入,也可以在最后游戏结束时添加恭喜xxx胜利.......
6.游戏某些部分介绍
开始时我对游戏里计算出来的本轮得分和总得分不是很懂。我以为出错了,后来当我仔细看了代码后发现,本轮得分指的是当前这次游戏的得分,而总得分更是关于所有轮次的得分。
7.以下是代码,感谢参考
#include <iostream>
#include<math.h>
using namespace std;
void main()
{
int i, j, num, N, M, S[100], S2[100], S3[100] = { 0 };
double S1[100], ave, sum, G;
double max, min;
cout << "==============欢迎进入黄金点游戏!============" << endl;
cout << "=============================================" << endl;
cout << "=====================v指南v==================" << endl;
cout << "===1.N个玩家(N通常大于10)进行游戏============" << endl;
cout << "===2.每人写一个0~100之间的有理数 (除0和100)==" << endl;
cout << "===3.G=N位玩家平均值*0.618===================" << endl;
cout << "===4.最高分(N): 提交数字最接近G值的玩家======" << endl;
cout << "===5.最低分(-2):提交数字距离G值最远的玩家====" << endl;
cout << "===6.其他分(0): 其他所有玩家=================" << endl;
cout << "Please input the number of your game!" << endl;
cin >> N;
cout << "The number of the person:" << endl;
cin >> M;
for (i = 1; i <= N; i++)
{
sum = 0;
G = 0;
cout << "Input the number between 1 to 100." << endl;
for (j = 1; j <= M; j++)
{
cout << " Player " << j << " input your choose!" << endl;
cin >> num;
S[j] = num;
sum = sum + S[j];
}
ave = sum / M;
G = ave*0.618;
cout << "黄金点是G=" << G << endl;
for (j = 1; j <= M; j++)
{
S1[j] = abs(S[j] - G);
}
max = min = S1[1];
for (j = 1; j <= M; j++)
{
if (S1[j] >= max)
max = S1[j];
else if (S1[j] < min)
min = S1[j];
}
for (j = 1; j <= M; j++)
{
if (S1[j] == max)
S2[j] = -2;
else if (S1[j] == min)
S2[j] = M;
else S2[j] = 0;
}
for (j = 1; j <= M; j++)
{
cout << "本轮分数" << "S2[" << j << "]=" << S2[j] << endl;
S3[j] = S3[j] + S2[j];
cout << "总分数 " << "S3[" << j << "]=" << S3[j] << endl;
}
}
system("pause");
}