用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