黄金点

码云地址: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)这是我第一次通过结对编程的方法来完成一项作业,过程中我发现这种编程方法比一个人独自写代码更加有趣,而且工作效率也要高很多,而且在编程过程中还可以相互学习,提高两个人的编程和处理问题的能力,培养团队精神,增进两人间的友谊。

   在编程的过程中会遇到很多问题,虽然这些问题耽误了我们很长的时间,但我们在编程方面也有了长足的进步,正所谓吃一堑长一智。即使程序最终仍然不完美,但是我们体会到了编程的快乐,增长了编程的信心,感谢这次结对编程。

 

posted @ 2018-12-11 15:08  adroitse  阅读(359)  评论(4编辑  收藏  举报