用java写一个小游戏

  软工作业:黄金点游戏。跟我结对编程的是杨晓帅,我班编程能力较强的一位同学。我们自学了java,用java编写了这个程序,用时两天。

 杨晓帅的博客园链接:http://www.cnblogs.com/fench/  coding链接:https://coding.net/u/fench

 思路:采用二维数组:第一行用于存储用户输入原始数据,第二行用于存储中间数据(第一行的与G值做差的绝对值),第三行用于保存用户得分。优点:易于实现,结构简单。

 工作过程:杨晓帅是一个认真的,负责任的同学,我对java不太熟悉,他会仔细的给我讲解代码的明细,帮助我理解程序。他的态度认真,和善。

 

 分工:前期:我负责界面设计 和 代码的检查        中期:我负责代码的检查,bug检查       后期:我负责App测试 

             杨晓帅负责算法的实现,界面优化            杨晓帅负责编码和bug订正               杨晓帅负界面的优化,代码调试

App界面设计:

第一版代码:实现具体的功能

package cn.sau.Test;

import java.util.Arrays;
import java.util.Collection;

public class testGolden {
     static int number = 10;
    public static void main(String[] args) {
        double[][] array = new double[10][3];
        for(int i = 0 ;i<number;i++)
        {
            for(int j = 0 ;j<2;j++)
                if(j==0)
                    array[i][j]=i+10;
                else
                {
                    array[i][2]=0;
                    array[i][j] = 0;
       
                }
        }
        //平均值
        double average  = 0;
        for(int i = 0; i<number;i++){
            average = average +array[i][0];
        }
        int x = number;
        average = average /x;
       
        //G值
        double G =average *0.618;
       
        //相近度
        for(int i = 0; i<number;i++){
            array[i][1] = Math.abs(array[i][0] -average);
        }
       
        //min:最近; max:最远
        double min = array[0][1];
        double max = array[0][1];
        for(int i = 1; i<number; i++){
            if(min >array[i][1]){
                min =array[i][1];
            }
            if(max<array[i][1]){
                max =array[i][1];
            }
        }
        System.out.println("max:"+max +"\n min:" +min);
        //统计得分
        for(int i = 0; i<number;i++){
            if(array[i][1]==min){
                array[i][2] =number;
            }
            else if(array[i][1] == max){
                array[i][2]=-2;
            }
        }
       
       
        for(int i = 0 ;i<10;i++)
        {
           
             System.out.print(array[i][2] +"\n");
   
        }
    }
   

}

第二版:移植到android平台

package com.example.m.goldengame10;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

/*
   黄金分割小游戏1.0版本
   实现以下功能:
       单机操作
       固定用户为10
   2016/10/16
   作者:Finch & xiaoPang
 */

public class MainActivity extends AppCompatActivity {


     int number =10; //总人数
     int  count = 1; //局数判断
    double[][] array = new double[10][3];

    TextView news ;
    EditText user1 ;
    EditText user2;
    EditText user3 ;
    EditText user4;
    EditText user5;
    EditText user6 ;
    EditText user7 ;
    EditText user8 ;
    EditText user9 ;
    EditText user10;
    Button  submit ;
    Button  clean;


    protected void onCreate(Bundle savedInstanceState) {
        Log.v("Button","on");
        for(int i = 0; i<number;i++){
            array[i][0]=0;
            array[i][1]=0;
            array[i][2]=0;
        }

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        news =(TextView)findViewById(R.id.news);
        user1 = (EditText)findViewById(R.id.user1);
        user2 = (EditText)findViewById(R.id.user2);
        user3 = (EditText)findViewById(R.id.user3);
        user4 = (EditText)findViewById(R.id.user4);
        user5 = (EditText)findViewById(R.id.user5);
        user6 = (EditText)findViewById(R.id.user6);
        user7 = (EditText)findViewById(R.id.user7);
        user8 = (EditText)findViewById(R.id.user8);
        user9 = (EditText)findViewById(R.id.user9);
        user10 = (EditText)findViewById(R.id.user10);
        submit =(Button)findViewById(R.id.submit);
        clean =(Button)findViewById(R.id.clean);
        submit.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){

                news.setText("第"+count+"局得分");
                array[0][0] =Double.parseDouble( user1.getText().toString());
                array[1][0] =Double.parseDouble( user2.getText().toString());
                array[2][0] =Double.parseDouble( user3.getText().toString());
                array[3][0] =Double.parseDouble( user4.getText().toString());
                array[4][0] =Double.parseDouble( user5.getText().toString());
                array[5][0] =Double.parseDouble( user6.getText().toString());
                array[6][0] =Double.parseDouble( user7.getText().toString());
                array[7][0] =Double.parseDouble( user8.getText().toString());
                array[8][0] =Double.parseDouble( user9.getText().toString());
                array[9][0] =Double.parseDouble( user10.getText().toString());

                //平均值
                double average  = 0;
                for(int i = 0; i<number;i++){
                    average = average +array[i][0];
                }
                int x = number;
                average = average /x;

                //G值
                double G =average *0.698;

                //相近度
                for(int i = 0; i<number;i++){
                    array[i][1] = Math.abs(array[i][0] -G);
                }

                //min:最近; max:最远
                double min = array[0][1];
                double max = array[0][1];
                for(int i = 1; i<number; i++){
                    if(min >array[i][1]){
                        min =array[i][1];
                    }
                    if(max<array[i][1]){
                        max =array[i][1];
                    }
                }

                //统计得分
                for(int i = 0; i<number;i++){
                    if(array[i][1]==min){
                        array[i][2] =array[i][2] + number;
                    }
                    else if(array[i][1] == max){
                        array[i][2]=array[i][2]-2;
                    }
                }

                user1.setText(String.valueOf(array[0][2]));
                user2.setText(String.valueOf(array[1][2]));
                user3.setText(String.valueOf(array[2][2]));
                user4.setText(String.valueOf(array[3][2]));
                user5.setText(String.valueOf(array[4][2]));
                user6.setText(String.valueOf(array[5][2]));
                user7.setText(String.valueOf(array[6][2]));
                user8.setText(String.valueOf(array[7][2]));
                user9.setText(String.valueOf(array[8][2]));
                user10.setText(String.valueOf(array[9][2]));
                count++; //每提交一次,局数加一
            }
        });

        clean.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){


                //初始化
               for(int i= 0;i<number;i++){
                   array[i][0]=0;
                   array[i][1]=0;
                   news.setText("开始第"+count+"局,请输入数值");
                   news.setTextSize(30);
               }
                //自动清空数据
                user1.getText().clear();
                user2.getText().clear();
                user2.getText().clear();
                user3.getText().clear();
                user4.getText().clear();
                user5.getText().clear();
                user6.getText().clear();
                user7.getText().clear();
                user8.getText().clear();
                user9.getText().clear();
                user10.getText().clear();
            }
        });
    }
}

App界面设计:初始界面

 

APP测试:

第一局输入数据                                                          第一局得分                                                              第二局开始 

                           

代码测试图集:

 

App测试其他图集:

附录:

android studio 项目 代码:https://coding.net/u/Clyln/p/softwarehomework---android-APK/git

App下载地址A(欢迎试玩):https://coding.net/u/Clyln/p/softwarehomework---android-APK/git/tree/master

 

posted @ 2016-10-17 17:11  clyln  阅读(17286)  评论(0编辑  收藏  举报