結對項目《黃金點遊戲》

黃金點遊戲java

基本要求:
N個同窗(N一般大於10),每人寫一個0~100之間的有理數 (不包括0或100),交給裁判,裁判算出全部數字的平均值,而後乘以0.618(所謂黃金分割常數),獲得G值。提交的數字最靠近G(取絕對值)的同窗獲得N分,離G最遠的同窗獲得-2分,其餘同窗得0分。android

主要功能:git

每位玩家輸入名字和數字(必須大於兩位玩家),最後一位玩家點擊結束遊戲,由程序計算出G值,並判斷每位玩家的得分狀況。github

設計思想:編程

咱們組是在android平臺上開發的這個遊戲,由於android提供了更好的圖形界面,能使遊戲變得更加有趣。app

小組成員:ide

我和室友陳亮一塊兒完成了這次編程練習,我負責代碼查找與修改,他負責測試以及優化。測試

 

咱們的代碼來自https://coding.net/u/rayshea/p/android-based-golden-point/git,通過咱們本身修改優化,增長了保存數據,刪除數據等方法,將這個小遊戲作得更加完善。代碼地址:https://github.com/xiaofancheng/goldenPoint。優化

下面是咱們項目的主要代碼以及效果圖:ui

MainActivity.java:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
package  com.example.shea.goldenpoint2rd;
 
import  android.app.AlertDialog;
import  android.content.DialogInterface;
import  android.content.Intent;
import  android.content.SharedPreferences;
import  android.support.v7.app.AppCompatActivity;
import  android.os.Bundle;
import  android.view.View;
import  android.widget.Button;
import  android.widget.Toast;
 
public  class  MainActivity  extends  AppCompatActivity {
     private  int  round;
 
 
     @Override
     protected  void  onCreate(Bundle savedInstanceState) {
         super .onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
         final  Button start = (Button) findViewById(R.id.start);
         Button delete = (Button) findViewById(R.id.delete);
         Button history = (Button) findViewById(R.id.history);
         Button rules = (Button) findViewById(R.id.rules);
         SharedPreferences tempData = getSharedPreferences( "tempData" , MODE_APPEND);
         final  SharedPreferences.Editor dataEdit = tempData.edit();
         round=tempData.getInt( "round" , 1 );
 
 
         assert  start !=  null ;
         start.setOnClickListener( new  View.OnClickListener() {
             @Override
             public  void  onClick(View v) {
                 Intent intent= new  Intent(MainActivity. this ,gameInterface. class );
                 startActivity(intent);
 
             }
         });
 
         assert  delete !=  null ;
         delete.setOnClickListener( new  View.OnClickListener() {
             @Override
             public  void  onClick(View v) {
                 dataEdit.clear();
                 if  (round!= 0 ){
                     for  ( int  i =  1 ; i <=round ; i++) {
                         dataEdit.remove(Integer.toString(i));
                         dataEdit.commit();
                     }
                 }
                 dataEdit.putInt( "round" , 1 );
                 Toast.makeText(MainActivity. this , "刪除成功!" ,Toast.LENGTH_SHORT).show();
 
 
             }
         });
 
         assert  rules !=  null ;
         rules.setOnClickListener( new  View.OnClickListener() {
             @Override
             public  void  onClick(View v) {
                 new  AlertDialog.Builder(MainActivity. this ).
                         setMessage( "請輸入一個0-100的有理數,而後點擊提交,若是須要更改,點擊再次提交,若是完成請點擊下一位玩家,並將手機傳遞給下一位玩家,最後一名玩家請點擊結束遊戲" ).
                         setTitle( "遊戲規則" ).setPositiveButton( "懂了!開始遊戲!" new  DialogInterface.OnClickListener() {
                     @Override
                     public  void  onClick(DialogInterface dialog,  int  which) {
                         Intent intent= new  Intent(MainActivity. this ,gameInterface. class );
                         startActivity(intent);
 
                     }
                 }).setNegativeButton( "先不遊戲   " new  DialogInterface.OnClickListener() {
                     @Override
                     public  void  onClick(DialogInterface dialog,  int  which) {
 
                     }
                 }).create().show();
 
             }
         });
 
         assert  history !=  null ;
         history.setOnClickListener( new  View.OnClickListener() {
             @Override
             public  void  onClick(View v) {
                 if  (round== 0 ){
                     Toast.makeText(MainActivity. this , "沒有歷史數據,快來完一輪吧!~" ,Toast.LENGTH_LONG).show();
                 }
                 else
                 {
                     Intent intent= new  Intent(MainActivity. this ,showResult. class );
                     startActivity(intent);
                 }
 
             }
         });
 
 
     }
}

  gameInterface.java:

複製代碼
  1 package com.example.shea.goldenpoint2rd;
  2 
  3 import android.app.AlertDialog;
  4 import android.content.Context;
  5 import android.content.DialogInterface;
  6 import android.content.Intent;
  7 import android.content.SharedPreferences;
  8 import android.support.v7.app.AppCompatActivity;
  9 import android.os.Bundle;
 10 import android.text.TextUtils;
 11 import android.view.View;
 12 import android.view.inputmethod.InputMethodManager;
 13 import android.widget.Button;
 14 import android.widget.EditText;
 15 import android.widget.TextView;
 16 import android.widget.Toast;
 17 
 18 public class gameInterface extends AppCompatActivity {
 19     private String username="";
 20     private double number=0;
 21     private int ID=1;
 22     private double G=0;
 23     private double sum;
 24     private double distance=0;
 25     private boolean FLAG=false;
 26     private String result="";
 27     private int round=1;
 28     private information[] userInfo =new information[100];
 29 
 30     @Override
 31     protected void onCreate(Bundle savedInstanceState) {
 32         super.onCreate(savedInstanceState);
 33         setContentView(R.layout.activity_gameinterface);
 34         Button next= (Button) findViewById(R.id.next);
 35         Button end= (Button) findViewById(R.id.endgame);
 36         final Button submit= (Button) findViewById(R.id.input_btn);
 37         final EditText name= (EditText) findViewById(R.id.name);
 38         final TextView userId= (TextView) findViewById(R.id.userId);
 39         final TextView showInfo= (TextView) findViewById(R.id.showInfo);
 40         final EditText inputNum= (EditText) findViewById(R.id.inputNum);
 41         SharedPreferences tempData=getSharedPreferences("tempData",MODE_APPEND);
 42         final SharedPreferences.Editor editData=tempData.edit();
 43         round=tempData.getInt("round",1);
 44         userId.setText("您是當前第1名玩家");
 45 
 46         assert next != null;//下一個玩家
 47         next.setOnClickListener(new View.OnClickListener() {
 48             @Override
 49             public void onClick(View v) {
 50                 if (TextUtils.isEmpty(inputNum.getText().toString())) {
 51                     Toast.makeText(gameInterface.this, "請輸入您的數值!", Toast.LENGTH_SHORT).show();
 52                 } else if (FLAG) {
 53                     Toast.makeText(gameInterface.this, "請提交數據", Toast.LENGTH_SHORT).show();
 54                 } else {
 55                     ID++;
 56                     showInfo.setText("");
 57                     name.setText("");
 58                     inputNum.setText("");
 59                     userId.setText("您是當前第" + ID + "名玩家");
 60                 }
 61 
 62             }
 63         });
 64 
 65 
 66 
 67         assert submit != null;
 68         submit.setOnClickListener(new View.OnClickListener() {
 69             @Override
 70             public void onClick(View v) {
 71                 if (TextUtils.isEmpty(inputNum.getText().toString()))
 72                     Toast.makeText(gameInterface.this, "請輸入數據!", Toast.LENGTH_SHORT).show();
 73                 else if (TextUtils.isEmpty(name.getText().toString()))
 74                     Toast.makeText(gameInterface.this, "請輸入暱稱!", Toast.LENGTH_SHORT).show();
 75                 else
 76                     if (Float.valueOf(inputNum.getText().toString()) < 100 && Float.valueOf(inputNum.getText().toString()) > 0) {
 77                         InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
 78                         if (imm.isActive() && getCurrentFocus() != null) {
 79                             if (getCurrentFocus().getWindowToken() != null) {
 80                                 imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
 81                             }
 82                         }
 83                         number = Double.valueOf(inputNum.getText().toString());
 84                         username = name.getText().toString();
 85                         userInfo[ID] = new information(username, number, ID);
 86                         String test = userInfo[ID].getInfo();
 87                         System.out.println(test);
 88                         FLAG = false;
 89                         showInfo.setText(username + ",您輸入的數據是:" + number + '\n' + "您能夠輸入框內更改輸入數據,再點擊提交數據");
 90                         Toast.makeText(gameInterface.this, "提交成功!", Toast.LENGTH_SHORT).show();
 91                     } else {
 92                         {Toast.makeText(gameInterface.this, "請輸入一個介於0-100之間的有理數", Toast.LENGTH_SHORT).show();
 93                         inputNum.setText("");
 94                         }
 95                     }
 96 
 97             }
 98         });
 99 
100         assert end != null;//結束遊戲
101         end.setOnClickListener(new View.OnClickListener() {
102             @Override
103             public void onClick(View v) {
104                 if (TextUtils.isEmpty(inputNum.getText().toString()))
105                     Toast.makeText(gameInterface.this,"請輸入數據!",Toast.LENGTH_SHORT).show();
106                 else if (TextUtils.isEmpty(name.getText().toString()))
107                     Toast.makeText(gameInterface.this,"請輸入暱稱!",Toast.LENGTH_SHORT).show();
108                 else  if (FLAG){
109                     Toast.makeText(gameInterface.this,"請提交數據!",Toast.LENGTH_SHORT).show();
110                 }else
111                 if (ID<3)
112                 {
113                     new AlertDialog.Builder(gameInterface.this).setTitle("不符合遊戲規則!").setMessage("遊戲結束至少須要2人,推薦人數10人").setPositiveButton("退出遊戲", new DialogInterface.OnClickListener() {
114                         @Override
115                         public void onClick(DialogInterface dialog, int which) {
116                             Intent intent=new Intent(gameInterface.this,MainActivity.class);
117                             startActivity(intent);
118                         }
119                     }).setNegativeButton("繼續遊戲", new DialogInterface.OnClickListener() {
120                         @Override
121                         public void onClick(DialogInterface dialog, int which) {
122 
123                         }
124                     }).create().show();
125                 }
126                 else{
127                     for (int i=1;i<=ID;i++)
128                     {
129                         sum+= userInfo[i].inputNum;
130                     }
131                     G=(sum/ID)*0.618;
132                     for (int i = 1; i <=ID; i++) {
133                         distance= userInfo[i].inputNum -G;
134                         userInfo[i].setDistance(distance);
135                     }
136                     double max= userInfo[1].distance;
137                     double min= userInfo[1].distance;
138                     for (int i=2;i<=ID;i++)
139                     {
140                         if (max< userInfo[i].distance)
141                             max= userInfo[i].distance;
142                         if (min> userInfo[i].distance)
143                             min= userInfo[i].distance;
144                     }
145                     for (int i=1;i<=ID;i++)
146                     {
147                         if (userInfo[i].distance==max)
148                             userInfo[i].setScore(-2);
149                         else if (userInfo[i].distance==min)
150                             userInfo[i].setScore(ID);
151                         else
152                             userInfo[i].setScore(0);
153                         result=result+'\n'+ userInfo[i].getInfo();
154 
155                     }
156                     System.out.println(result);
157                     String KEY=Integer.toString(round);
158                     editData.putString(KEY, result);
159                     round++;
160                     editData.putInt("round", round);
161                     editData.commit();
162                     Intent intent=new Intent(gameInterface.this,gameOver.class);
163                     intent.putExtra("data",result);
164                     startActivity(intent);
165                 }
166 
167             }
168         });
169 
170     }
171 }
複製代碼

showResult.java:

複製代碼
 1 package com.example.shea.goldenpoint2rd;
 2 
 3 import android.content.Intent;
 4 import android.content.SharedPreferences;
 5 import android.support.v7.app.AppCompatActivity;
 6 import android.os.Bundle;
 7 import android.view.View;
 8 import android.widget.Button;
 9 import android.widget.TextView;
10 import android.widget.Toast;
11 
12 public class showResult extends AppCompatActivity {
13     private int round=0;
14     private String info="";
15 
16     @Override
17     protected void onCreate(Bundle savedInstanceState) {
18         super.onCreate(savedInstanceState);
19         setContentView(R.layout.activity_showresult);
20         SharedPreferences tempData=getSharedPreferences("tempData",MODE_APPEND);
21         SharedPreferences.Editor editData=tempData.edit();
22         TextView tv= (TextView) findViewById(R.id.textView);
23         Button back= (Button) findViewById(R.id.back);
24         round=tempData.getInt("round", 0);
25         if (round==0)
26             Toast.makeText(showResult.this,"無數據!",Toast.LENGTH_LONG).show();
27         else {
28             for (int i = 1; i <round ; i++) {
29                 info+='\n'+"第"+i+"輪的數據"+'\n'+tempData.getString(Integer.toString(i),"");
30             }
31             tv.setText(info);
32 
33         }
34         back.setAlpha((float) 0.6);
35         back.setOnClickListener(new View.OnClickListener() {
36             @Override
37             public void onClick(View v) {
38                 Intent intent=new Intent(showResult.this,MainActivity.class);
39                 startActivity(intent);
40             }
41         });
42     }
43 }
總結:通過此次測試,讓我體會了兩我的一塊兒編程測試的樂趣與效率,測試的時候,我沒有想到的問題,他想到了;改代碼的時候,他沒發現的問題,我看到了,等等......
相關文章
相關標籤/搜索