黄金点
码云地址:https://gitee.com/sfr123/sl
1.黄金点
阿超的课都是下午两点钟,这时班上不少的同学都昏昏欲睡,为了让大家兴奋起来,阿超让同学玩一个叫“黄金点”的游戏:
N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值。提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分。记录每一次游戏每名同学的数字和分数。
主要功能:
每位玩家输入数字,最后一位玩家点击结束游戏,由程序计算出G值,并判断每位玩家的得分情况。
设计思想:
我二人决定用数组来存游戏同学输入的数,我们认为游戏需要定义游戏的人数(n)和游戏的局数(b),经过计算找出胜利者和失败者,算出他们得分和扣分
import java.util.Scanner; public class gold { public static void main(String[] args){ int N=10; int b=2; @SuppressWarnings("resource") Scanner scanner=new Scanner(System.in); double sum; double max,min; int maxtotal=0; int mintotal=0; int []total=new int[100]; double []value=new double[100]; int [][]grade=new int[100][100]; for(int j=1;j<=b;j++) { sum=0.0; max=0.0; System.out.println("第"+j+"轮游戏"); for(int i=1;i<=N;i++) { System.out.print("请输入玩家"+i+"输入的数字:"); double num=scanner.nextDouble(); value[i]=num; sum=sum+num; } double G=(sum/N)*0.618; min=Math.abs(value[1]-G); for(int l=1;l<=N;l++) { if(Math.abs(value[l]-G)>=max) { max=Math.abs(value[l]-G); } if(Math.abs(value[l]-G)<=min) { min=Math.abs(value[l]-G); } } for(int m=1;m<=N;m++) { if(Math.abs(value[m]-G)==max) { grade[j][m]=-2; } if(Math.abs(value[m]-G)==min) { grade[j][m]=N; } if(Math.abs(value[m]-G)!=max&&Math.abs(value[m]-G)!=min) { grade[j][m]=0; } } for(int n=1;n<=N;n++) { System.out.println("第"+n+"名游戏玩家所得分数为:"+grade[j][n]); } } for(int s=1;s<=N;s++) { total[s]=0; } for(int p=1;p<=N;p++) { for(int q=1;q<=b;q++) { total[p]=grade[q][p]+total[p]; } } for(int r=1;r<=N;r++) { System.out.println("第"+r+"名玩家所得总分为:"+total[r]); } for(int s=1;s<=N;s++) { if(total[s]>=maxtotal) { maxtotal=total[s]; } if(total[s]<=mintotal) { mintotal=total[s]; } } for(int t=1;t<=N;t++) { if(total[t]==maxtotal) { System.out.println("玩家"+t+"胜利!"); } if(total[t]==mintotal) { System.out.println("玩家"+t+"惜败!"); } } } }
运行结果:
小组成员:
我和刘晓彤一起完成了此次编程练习。
结对编程感受
(1)本次作业我的结对伙伴是刘晓彤(博客链接:https://www.cnblogs.com/sfr123/p/10095296.html)
(2)我们互帮互助发现结对编程比独立完成效率提高了很多,就算出现问题也能在两个人的共同努力下更快更好的解决,大大加快了处理问题的能力。
(4)这是我第一次通过结对编程的方法来完成一项作业,过程中我发现这种编程方法比一个人独自写代码更加有趣,而且工作效率也要高很多,而且在编程过程中还可以相互学习,提高两个人的编程和处理问题的能力,培养团队精神,增进两人间的友谊。
在编程的过程中会遇到很多问题,虽然这些问题耽误了我们很长的时间,但我们在编程方面也有了长足的进步,正所谓吃一堑长一智。即使程序最终仍然不完美,但是我们体会到了编程的快乐,增长了编程的信心,感谢这次结对编程。