第一次综合项目实训

人员名单:16012110 王明   16012120 李少宇

领航员:王明

驾驶员:李少宇

项目代码:https://gitee.com/axsj/10wm_20lsy_sxy/blob/master/java

项目名称:第一次综合项目实训

项目背景:

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

项目要求:

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

队员图片:

 

全部代码:
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:

 

这部分代码定义的玩家人数和游戏回合数,用来确定游戏的大致时间和大致玩家
 
 
2:   

输入:“java gold ”进行游戏开始时所进行的提示(第一或第二轮游戏准备就绪)

 

 

3:

 

需要十位玩家进行自己所选择的数字进行输入
 
 
 
4:

 

对十位玩家的分数分别进行计算
 
 
 
5:

 

对几位玩家所得的分数进行比较,并选出最后的胜利者和失败者.
 
 
6:

 

输出结果
 
运行结果:

 

 

小结感受:两个人的合作永远不是一加一等于二,而是一加一远大于二的结果。累加的不是知识量,而是两个人一起做题的思路问题,

    以及两个人在一起做题时会有很多自己一个人完成时的所没有的欢乐。总体来说,两个人一起完成项目要优于一个人独立完成。

组员评价:这是第一次进行两个人合作的实践,我们两个人希望能做出一个可以进行游戏的练手程序,最主要的是为了在这次实训中取得一个较好的成绩,这次实训中,李少宇同学主要负责操作和对代码的写入,我主要负责整体的程序框架以及对程序的编写。在一个共             同的目标下,我们一起坐在电脑前进行编程,并最终完成了这个小程序。期间李少宇同学操作认真,代码写入几乎不会出现打字的错误,只是编写时的速率较慢,希望可以提高一下打字的速度。最后很喜欢这次的实训,体会到了两个人合作时对难点的解决,一                  加一在这种情况下是远远大于二的。

 

posted @ 2018-12-13 13:51  小三金啊  阅读(148)  评论(0编辑  收藏  举报