码迷,mamicode.com
首页 > 其他好文 > 详细

结对编程:黄金点游戏

时间:2016-04-09 00:10:08      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:

一.游戏内容

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

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

二.程序实现功能

每次输入N个数字,计算出平均值和G点,输入数字最靠近G的同学得N分,离G最远的同学得到-2分,其他同学得0。将每轮G点与每个同学对应的各自成绩打印出来。游戏结束后将每人成绩总和输出,可以看出第几名同学胜利。

三.程序模块

1.输入

输入分为两部分:玩家人数与局数、每位玩家的数据输入。用双重循环i、j分别控制玩家输入与游戏局数,并将玩家的输入数据按序存放在数组里。代码如下:

printf("游戏人数为:");            与                 for (i = 0; i<n; i++)
        scanf("%f", &s[i]);                             scanf("%f", &s[i]);//输入数据

    scanf("%d",&n);
    printf("游戏轮数为:");
 scanf("%d",&m);

2.计算G点

首先将所有玩家数据总数求出来,求出平均值,再将平均值乘0.618后得到G点。我们使用一个函数——count(float a[],int size)求所有玩家数据总数,将总数返回后在主函数求平均值与G点,并将G点打印出来。函数如下:

float count(float a[],int size)
 {
 int i;
 float sum=0.0;
 for (i = 0; i<size; i++)
 {
  sum = sum + a[i];
 }
 return sum;

}//求和函数

A = sum / n;
  printf("黄金点G=%f\n",0.618*A);//计算G点

3.比较赋值

游戏要求玩家输入的数要与黄金点比较,所以我们将玩家输入的数依次与求得的黄金点相减,并将结果放入数组中,然后对数组中的数进行比较求最大最小值,在另一个数组里对求得的最大值所对应下标赋-2,最小值所对应下标赋N,其他值赋0。这样玩家每轮得分就会记录下来。代码如下:

min = b[0];
     max = b[0];
     for (i = 0; i<n; i++)
  {
      if (b[i]<min)
   min = b[i];
  }
     for (i=0; i<n; i++)
  {
  if (b[i] == min)
   c[i] = n;
  else
   c[i] = 0;
  }
     for (i = 0; i<n; i++)
  {
  if (b[i]>max)
   max = b[i];
  }
     for (i = 0; i<n; i++)
  {
  if (b[i] == max)
   c[i] = -2;
  }
  //将每人得分放入数组c中
     for(i=0;i<n;i++)
  {
  mun[i]=mun[i]+c[i];
  }
  //将每个人的成绩累加
  printf("********************\n*得分为:          *\n");
     for (i = 0; i<n; i++)
  printf("*        %2d        *\n", c[i]);
  printf("********************\n");
  //输出每轮成绩

4.输出结果

printf("********************\n*得分为:          *\n");
     for (i = 0; i<n; i++)
  printf("*        %2d        *\n", c[i]);
  printf("********************\n");
  //输出每轮成绩
 }
 printf("********************\n*总得分为:        *\n");
 for(i=0;i<n;i++)
    printf("*        %2d        *\n",mun[i]);
 printf("********************\n");
 }

四.运行结果

技术分享

 

结对编程:黄金点游戏

标签:

原文地址:http://www.cnblogs.com/syh2013040101006/p/5370420.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!