实训一

16012112 ,16012119 

码云地址:https://gitee.com/iseekun99/training_a_golden_point

黄金点

阿超的课都是下午两点钟,这时班上不少的同学都昏昏欲睡,为了让大家兴奋起来,阿超让同学玩一个叫“黄金点”的游戏:

N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值。提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分。记录每一次游戏每名同学的数字和分数。

设计思路:从控制台输入N个同学进行游戏,每位同学需要输入数字,求出黄金点G,用Math.abs(x)取最靠近G的绝对值,得到最大和最小值,当同学输入的数字与G值相差与最大值相等时,得到-2分,与最小值相等时得到N分,其他同学均的0分。

 

import java.util.*;
public class HJD {
    public static void main(String[] args) {
        int b =100;
        double value[]=new double[100];
        int grade[][]=new int[100][100];
        System.out.println("****黄金点****");
        for(int j=1;j<=100;j++){     //游戏开始,进入循环
        Scanner HJD =new Scanner(System.in);
        Scanner HJD1 =new Scanner(System.in);
        System.out.println("输入玩家人数:\n当玩家人数为0时结束游戏");
        //for(int j=1;j<=100;j++){
        int n=HJD1.nextInt();//输入玩家人数 
        if(n==0){break;}     //如果输入人数为0时,则跳出循环,游戏结束
        int sum=0;
        for (int i=0;i<n;i++)
        {
            int h=i+1;
            System.out.print("第"+h+"名同学:");
            int m=HJD1.nextInt();   //输入数字
            value[i]=m;
            sum+=m;
        }
        //System.out.print(sum);
        double G=(sum/n)*0.618;        //计算黄金点G
        double max=0.0;
        double min=Math.abs(value[1]-G); 
        System.out.println(G);    
        for(int l=1;l<=n;l++)        
            {
                if(Math.abs(value[l]-G)>=max)  
                {
                    max=Math.abs(value[l]-G);  //找到离G值最远的数字
                }
            
                if(Math.abs(value[l]-G)<=min)
                {
                    min=Math.abs(value[l]-G);    //找到离G值最近的数字
                }
                
            }
            //System.out.println(max);    
            //System.out.println(min);    
            for(int m=1;m<=n;m++)
            {
                if(Math.abs(value[m]-G)==max)
                {
                    grade[j][m]=-2;              //最远的同学得到-2分
                    //System.out.println("最远"+grade[j][m]);
                }
                if(Math.abs(value[m]-G)==min)
                {
                    grade[j][m]=n;                  //其他同学0分
                    //System.out.println("最近"+grade[j][m]);
                }
                if(Math.abs(value[m]-G)!=max&&Math.abs(value[m]-G)!=min)
                {
                    grade[j][m]=0;                  //最近的同学得到N分
                    //System.out.println("其他"+grade[j][m]);
                }
            }
            
            for(int p=0;p<=n-1;p++)
            {
                int q=p+1;
                System.out.println("第"+q+"名游戏玩家所得分数为:"+grade[j][p]);
            }
        }
        System.out.println("****游戏结束***");
    }
}

 

 

运行结果:

      

小结感受:通过两天的实训,设计了一个小游戏“黄金点”,虽然可能做不到尽善尽美,但还是顺利的完成了任务,在合作过程中有时会有歧义,不断磨合得到结果,培养了一定的默契

并且在知识的补充方面做到了互补,能一起探讨问题,找到根源,期望在下一次实训中,可以配合的更好,真正做到1+1>2的效果

姓名 风格 团队贡献     优点 缺点 希望提高的地方
胡文媛 默默做事 提供思路 出现问题能自查 查不着问题出在哪 勤快一点
曲梦 哈哈大笑 动手能力 善于观察 东张西望 不要太懒

 

posted @ 2018-12-12 11:08  huwyuan  阅读(155)  评论(0编辑  收藏  举报