zoukankan      html  css  js  c++  java
  • 结对编程——黄金点游戏

          原题目说的是:N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值。提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分。玩了几天以后,大家发现了一些很有意思的现象,比如黄金点在逐渐地往下移动。

    要求如下:

       1、本作业属于结对编程项目,必须由二人共同完成,并分别将本次作业过程发到博客,同时将本次作业源代码提交到codeing系统;

       2、如果可能的话尽量以C/S或B/S方式实现,即利用服务器接收和处理所有玩家提交的数字,并将结果反馈给各玩家,玩家可以通过客户端提交的数字;

       3、如果采用单机方式实现的话,需要为用户提供便利的输入界面;

       4、该游戏每次至少可以运行10轮以上,并能够保留各轮比赛结果

          我和雷翔宇同学我们两个在几天前商量了一下包括编程语言、界面、老师的要求等这些内容, 从题目的要求上来看,这次的结对编程主要是要实现黄金点游戏的编程。而具体的黄金点游戏在上面的题目以及要求里面已经说的很清楚:可以实现N个同 学进行黄金点游戏,每个同学随机给1-99之间的任意有理数,通过计算机计算实现求出平均值以后乘以0.618得到G值,即所谓的黄金分割常数。每次输入N个数字,计算出平均值和G点,输入数字最靠近G的同学得N分,离G最远的同学得到-2分,其他同学得0分。将每轮G点与每个同学对应的各自成绩打印出来。游戏结束后将每人成绩总和输出,可以看出第几名同学胜利。

    具体文件如下:

    package com.example.shea.goldenpoint;
    //************************************************************
    //**                                                        **
    //**                    RAY'S WORK                          **
    //**                    2013040101016                       **
    //**                                                        **
    //************************************************************
    import android.content.Intent;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.widget.TextView;
    
    public class showresult extends AppCompatActivity {
        private String[] result=new String[100];
        private Boolean draw;
        private String res="";
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_showresult);
            TextView textView= (TextView) findViewById(R.id.textView);
            Intent intent=getIntent();
            Bundle mybundle=intent.getBundleExtra("data");
            result=mybundle.getStringArray("result");
            draw=mybundle.getBoolean("draw");
            for (int i=0;result[i]!=null;i++)
            {res=res+result[i]+'
    ';
            System.out.println(res);}
            if (draw)
            {
                textView.setText(res);
            }
            else {
                textView.setText("该场游戏平局");
    
            }
        }
    }
    
    package com.example.shea.goldenpoint;
    //************************************************************
    //**                                                        **
    //**                    RAY'S WORK                          **
    //**                    2013040101016                       **
    //**                                                        **
    //************************************************************
    
    import android.app.AlertDialog;
    import android.content.Context;
    import android.content.DialogInterface;
    import android.content.Intent;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
    import android.graphics.Color;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.text.TextUtils;
    import android.view.View;
    import android.view.inputmethod.InputMethodManager;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import java.lang.reflect.Field;
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Collections;
    import java.util.List;
    
    public class Game extends AppCompatActivity {
        private int count = 1;
        private boolean FLAG=true;
        private int counter=0;
        private double average=0;
        private double sum=0;
        private double num=0;
        private  double G=0;
        public String name="";
        public boolean draw=true;
        private double[] data= new double[100];
        private double[] distance=new double[100];
        public playerINFO playerinfo[]=new playerINFO[100];
        List<playerINFO> AL=new ArrayList<playerINFO>();
        String[] result=new String[100];
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.game);
            String path="";
            final Button END= (Button) findViewById(R.id.END);
            final Button NEXT= (Button) findViewById(R.id.NEXT);
            final Button reSUBMITbtn= (Button) findViewById(R.id.SUBMITbtn);
            final Button SUBMIT= (Button) findViewById(R.id.SUBMIT);
            //final EditText getNAME=new EditText(this);
            final EditText ET = new EditText(getApplicationContext());
            final EditText INPUT= (EditText) findViewById(R.id.INPUT);
            final TextView reSUBMIT= (TextView) findViewById(R.id.SUBMITtv);
            final TextView SHOWINFO = (TextView) findViewById(R.id.PLAYERINFO);
            reSUBMITbtn.setVisibility(View.INVISIBLE);
            SHOWINFO.setText("当前是第" + 1 + "名玩家");
            reSUBMIT.setText("");
            Intent intent= getIntent();
            name=intent.getStringExtra("name");
    
            SUBMIT.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    FLAG = false;
                    String str = INPUT.getText().toString();
                    if (TextUtils.isEmpty(INPUT.getText().toString()))
                        Toast.makeText(Game.this, "请输入您的数值!", Toast.LENGTH_SHORT).show();
                    else {
                        num = Float.valueOf(str);
                        if (num < 100 && num > 0) {
                            Toast.makeText(Game.this, "输入成功,请将手机传递给下一个玩家,如需修改,请输入数据后点击再次提交。如果停止游戏,请点击结束游戏", Toast.LENGTH_LONG).show();
                            reSUBMIT.setText(name+",您输入的数据是" + str);
                            reSUBMITbtn.setVisibility(View.VISIBLE);
                            data[counter] = Float.valueOf(str);
                            String ObjectNAME = "";
                            System.out.println(name);
                            playerinfo[counter] = new playerINFO(name, data[counter]);
                            playerinfo[counter].setNO(counter+1);
                            AL.add(playerinfo[counter]);
                            for (int i = 0; i < 5; i++) {
                                System.out.println("----------------------------");
                                System.out.println(data[i] + "  " + i);
    
                            }
    
                            InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                            if (imm.isActive() && getCurrentFocus() != null) {
                                if (getCurrentFocus().getWindowToken() != null) {
                                    imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
                                }
                            }
    
    
                        } else {
                            Toast.makeText(Game.this, "请输入一个介于0-100之间的有理数", Toast.LENGTH_SHORT).show();
    
                        }
                    }
                }
            });
    
            reSUBMITbtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    reSUBMITbtn.setVisibility(View.INVISIBLE);
                    reSUBMIT.setText("");
                    INPUT.setText("");
    
                }
            });
    
            NEXT.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                   if (FLAG)
                   {
                       Toast.makeText(Game.this,"请提交你的结果",Toast.LENGTH_SHORT).show();
                   }
                    else
                   {
                       reSUBMITbtn.setVisibility(View.INVISIBLE);
                       reSUBMIT.setText("");
                       INPUT.setText("");
                       FLAG=true;
                       count++;
                       counter++;
                       name="";
                       System.out.println();
                       SHOWINFO.setText("当前是第" + count + "名玩家");
                       final EditText ET = new EditText(getApplicationContext());
                       ET.setHint("请输入你的昵称");
                       ET.setTextColor(Color.BLACK);
                       ET.setHintTextColor(Color.BLUE);
                       new AlertDialog.Builder(Game.this).setView(ET).
                               setMessage("请输入一个0-100的有理数,然后点击提交,如果需要更改,点击再次提交,如果完成请点击下一位玩家,并将手机传递给下一位玩家,最后一名玩家请点击结束游戏").
                               setTitle("游戏规则").
                               setPositiveButton("了解!开始游戏!", new DialogInterface.OnClickListener() {
                           @Override
                           public void onClick(DialogInterface dialog, int which) {
                               if (TextUtils.isEmpty(ET.getText().toString()))
                               {
                                   try {
                                       Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
                                       field.setAccessible(true);
                                       field.set(dialog, false);
                                   } catch (IllegalAccessException e) {
                                       e.printStackTrace();
                                   } catch (NoSuchFieldException e) {
                                       e.printStackTrace();
                                   }
                                   Toast.makeText(Game.this,"请输入玩家姓名",Toast.LENGTH_LONG).show();
                                   System.out.println("======================================="+ET.getText().toString());}
                               else
                               {                                   try {
                                   Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
                                   field.setAccessible(true);
                                   field.set(dialog, true);
                               } catch (IllegalAccessException e) {
                                   e.printStackTrace();
                               } catch (NoSuchFieldException e) {
                                   e.printStackTrace();
                               }
                                   name = ET.getText().toString();
                                   System.out.println(name+"this aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
                               }
                           }
                       }).create().show();
                   }
    
    
                }
            });
    
            END.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v)
                {
                    if(count<2)
                        new AlertDialog.Builder(Game.this).setTitle("不符合游戏规则!").setMessage("游戏结束至少需要2人,推荐人数10人").setPositiveButton("退出游戏", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                Intent intent=new Intent(Game.this,MainActivity.class);
                                startActivity(intent);
                            }
                        }).setNegativeButton("继续游戏", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
    
                            }
                        }).create().show();
                    else if (TextUtils.isEmpty(INPUT.getText().toString())){
                        Toast.makeText(Game.this, "请输入您的数值!", Toast.LENGTH_SHORT).show();
                    }
                    else
                    {
    
    
                        for (int m=0;m<count;m++)
                        {
                            sum+=data[m];
    
                        }
                        average = sum/count;
                        G=average*0.618;
                        System.out.println("=================G=" + G + "=================");
                        for (int i=0;i<count;i++)
                        {
                            distance[i]=data[i]-G;
                            double a=Math.abs(distance[i]);
                            playerinfo[i].setDistance(a);
                            System.out.println("-------------------DISTANCE  " + playerinfo[i].distance + "---------------------");
                            System.out.println("-------------------name     "+playerinfo[i].name+"---------------------");
                         }
                        double max=playerinfo[0].distance;
                        double min=playerinfo[0].distance;
                        for (int i=1;i<count;i++) {
                            if (playerinfo[i].distance>max)
                                max=playerinfo[i].distance;
                            if (playerinfo[i].distance<min)
                                min=playerinfo[i].distance;
    
                        }
                        System.out.println(max+"    -----------    "+min);
                        for (int i=0;i<count;i++)
                        {
                            if (playerinfo[i].distance==max)
                                playerinfo[i].setScore(-2);
                            else if (playerinfo[i].distance==min)
                                playerinfo[i].setScore(10);
                            else
                                playerinfo[i].setScore(0);
                            playerinfo[i].showinfo();
                        }
                        for (int i=0;i<count;i++)
                        {
                            result[i]=playerinfo[i].showinfo();
    
                        }
                        if (max==min)
                            draw=false;
    
    
                        Bundle mybundle=new Bundle();
                        mybundle.putStringArray("result",result);
                        mybundle.putBoolean("draw",draw);
                        Intent intent=new Intent(Game.this,showresult.class);
                        intent.putExtra("data",mybundle);
                        startActivity(intent);
    
    
    
    
    
                    }
                }
            });
        }
    
    }
    
    package com.example.shea.goldenpoint;
    //************************************************************
    //**                                                        **
    //**                    RAY'S WORK                          **
    //**                    2013040101016                       **
    //**                                                        **
    //************************************************************
    import android.app.AlertDialog;
    import android.content.DialogInterface;
    import android.content.Intent;
    import android.graphics.Color;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.text.TextUtils;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;
    
    import java.lang.reflect.Field;
    
    public class MainActivity extends AppCompatActivity {
    
        String name="";
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Button STARTbtn=(Button)findViewById(R.id.START);
            STARTbtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
    
                    final EditText ET = new EditText(getApplicationContext());
                    ET.setHint("请输入你的昵称");
                    ET.setTextColor(Color.BLACK);
                    ET.setHintTextColor(Color.BLUE);
                    new AlertDialog.Builder(MainActivity.this).setView(ET).
                            setMessage("请输入一个0-100的有理数,然后点击提交,如果需要更改,点击再次提交,如果完成请点击下一位玩家,并将手机传递给下一位玩家,最后一名玩家请点击结束游戏").
                            setTitle("游戏规则").
                            setPositiveButton("了解!开始游戏!", new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                    if (TextUtils.isEmpty(ET.getText().toString()))
                                    {
                                        try {
                                            Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
                                            field.setAccessible(true);
                                            field.set(dialog, false);
                                        } catch (IllegalAccessException e) {
                                            e.printStackTrace();
                                        } catch (NoSuchFieldException e) {
                                            e.printStackTrace();
                                        }
                                        Toast.makeText(MainActivity.this, "请输入玩家姓名", Toast.LENGTH_LONG).show();
                                        System.out.println("======================================="+ET.getText().toString());}
                                    else
                                    {                                   try {
                                        Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
                                        field.setAccessible(true);
                                        field.set(dialog, true);
                                    } catch (IllegalAccessException e) {
                                        e.printStackTrace();
                                    } catch (NoSuchFieldException e) {
                                        e.printStackTrace();
                                    }
                                        name = ET.getText().toString();
                                        System.out.println(name);
                                        Intent intent=new Intent(MainActivity.this,Game.class);
                                        intent.putExtra("name",name); startActivity(intent);
                                        System.out.println(name+"this aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
                                    }
                                }
                            }).create().show();
                }
            });
        }
    }
    
    package com.example.shea.goldenpoint;
    
    import java.util.ArrayList;
    
    //************************************************************
    //**                                                        **
    //**                    RAY'S WORK                          **
    //**                    2013040101016                       **
    //**                                                        **
    //************************************************************
    public class playerINFO {
        public String name="";
        public double score=0;
        public  int result=0;
        public double distance=0;
        public int NO=0;
        public String showresults="";
        public void setName(String sname){
            name=sname;
        }
    
        public void setNO(int sno)
        {
            NO=sno;
        }
    
        public void setScore(int sscore){
            result=sscore;
            //score.add(sscore);
           // score
        }
    
        public void setDistance(double sdistance){
            distance=sdistance;
        }
    
        public playerINFO(String sname,double sscore){
            name=sname;
            score=sscore;
    
        }
    
        public String showinfo()
        {
            System.out.println();
            System.out.println("----------------------NO   "+NO+"-------------------------------");
            System.out.println("----------------------score   "+result+"-------------------------------");
            System.out.println("----------------------name   "+name+"-------------------------------");
            System.out.println("----------------------distance   "+distance+"-------------------------------");
            System.out.println();
            if (name.isEmpty())
                showresults="玩家序号:"+NO+"  昵称:不知名大侠"+"  数值"+score+"  得分:"+result;
            else
                showresults="玩家序号:"+NO+"  昵称:"+name+"  数值"+score+"  得分:"+result;
            return showresults;
        }
    
    }
    

    部分截图:

    因为我的编程能力不是很强,我在这次编程中的角色责任不是很大,但是还是想在合作中给的自己的一份力量,感谢队友的信任和帮助,让我们的编程作业能够顺利完成,也正是由于这次结对编程,让我有机会和大神雷翔宇同学一起完成这个任务,在合作的过程中,从他身上学到了很多东西,我想这就是结对编程任务的特别之处吧。可能这只是一个简单的小游戏,不过我和队友还是想在自己的能力范围内,让自己的东西能够趋于完美,可能以后的解队作业还会有,但是我会努力让自己的角色变得不一样,感谢老师,感谢队友雷翔宇同学。

    PS:我们(23333)

       

  • 相关阅读:
    【CodeForces】835D Palindromic characteristics
    【BZOJ】2006: [NOI2010]超级钢琴
    【比赛】STSRM 09
    【比赛】洛谷夏令营NOIP模拟赛
    【BZOJ】4147: [AMPPZ2014]Euclidean Nim
    【BZOJ】3895: 取石子
    【胡策08】解题报告
    【codevs】3196 黄金宝藏
    【BZOJ】1443: [JSOI2009]游戏Game
    【BZOJ】3105: [cqoi2013]新Nim游戏
  • 原文地址:https://www.cnblogs.com/xhl1234/p/5372279.html
Copyright © 2011-2022 走看看