用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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM