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; //计算黄金点Gdouble 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的效果
姓名 | 风格 | 团队贡献 | 优点 | 缺点 | 希望提高的地方 |
胡文媛 | 默默做事 | 提供思路 | 出现问题能自查 | 查不着问题出在哪 | 勤快一点 |
曲梦 | 哈哈大笑 | 动手能力 | 善于观察 | 东张西望 | 不要太懒 |