先說玩法:
輸入四個不重複的數字,點確定按鈕後,結果顯示在下方的歷史中。其形式爲**** ?A?B。星號代表你輸入的數字,你輸入的四位數字中,位置和數字都正確爲A,數字相同而位置不同爲B,當4A時爲猜對,如X次仍未猜中數字則遊戲失敗。
本程序實現了防止用戶輸入重複的數字和設置難度(其實就是設置能猜幾次)也實現了歷史猜的次數和正確次數,比較完善的一個小遊戲,適合對安卓基本開發有所瞭解的初學者學習。
代碼比較簡單易懂,用SharedPreferences保存難度設置,用while循環判斷重複,因爲比較簡單,就不打註釋了,慢慢閱讀就可以了,都可以看懂的。
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class Caishuzi extends Activity implements View.OnClickListener {
EditText cai;
Button btn_del;
Button btn_set;
int a[]=new int[4];
Intent intent;
SharedPreferences pref;
TextView cai_lishi;
int i,A = 0,B,k,j,cai_long,cai_win,qwe=0;
int b[]=new int[4];
String s,duqu = "";
private Button btn0;
private Button btn1;
private Button btn2;
private Button btn3;
private Button btn4;
private Button btn5;
private Button btn6;
private Button btn7;
private Button btn8;
private Button btn9;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.caishuzi);
cai=(EditText)findViewById(R.id.caishu);
btn_del=(Button)findViewById(R.id.cai_del);
btn_set=(Button)findViewById(R.id.cai_2);
cai_lishi=(TextView)findViewById(R.id.cai_lishi);
btn0=(Button)findViewById(R.id.btn_0);
btn1=(Button)findViewById(R.id.btn_1);
btn2=(Button)findViewById(R.id.btn_2);
btn3=(Button)findViewById(R.id.btn_3);
btn4=(Button)findViewById(R.id.btn_4);
btn5=(Button)findViewById(R.id.btn_5);
btn6=(Button)findViewById(R.id.btn_6);
btn7=(Button)findViewById(R.id.btn_7);
btn8=(Button)findViewById(R.id.btn_8);
btn9=(Button)findViewById(R.id.btn_9);
btn0.setOnClickListener(this);
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
btn3.setOnClickListener(this);
btn4.setOnClickListener(this);
btn5.setOnClickListener(this);
btn6.setOnClickListener(this);
btn7.setOnClickListener(this);
btn8.setOnClickListener(this);
btn9.setOnClickListener(this);
btn_set.setOnClickListener(this);
btn_del.setOnClickListener(this);
//先生成數字並防止重複
a[0] = (int) (1 + Math.random() * 8);while(a[0]==0)a[0] = (int) (1 + Math.random() * 8);
a[1] = (int) ( Math.random() * 9);while(a[1]==a[0])a[1] = (int) ( Math.random() * 9);
a[2] = (int) ( Math.random() * 9); while(a[2]==a[0]||a[2]==a[1])a[2] = (int) ( Math.random() * 9);
a[3] = (int) ( Math.random() * 9);while(a[3]==a[0]||a[3]==a[1]||a[3]==a[2]) a[3] = (int) ( Math.random() * 9);
pref = getSharedPreferences("UserId", MODE_PRIVATE);
//獲取難度,如果沒取到,就爲8.
i=pref.getInt("nandu", 8);
}
@Override
public void onClick(View v) {
String str=cai.getText().toString();
switch (v.getId()) {
case R.id.btn_0:
if(str!=null&&!str.equals("")&&i>0&&!str.contains("0")){
cai.setText(str + ((Button) v).getText());
}
break;
case R.id.btn_1:
if(!str.contains("1")&&i>0){
cai.setText(str + ((Button) v).getText());
}
break;
case R.id.btn_2:
if(!str.contains("2")&&i>0){
cai.setText(str + ((Button) v).getText());
}
break;
case R.id.btn_3:
if(!str.contains("3")&&i>0){
cai.setText(str + ((Button) v).getText());
}
break;
case R.id.btn_4:
if(!str.contains("4")&&i>0){
cai.setText(str + ((Button) v).getText());
}
break;
case R.id.btn_5:
if(!str.contains("5")&&i>0){
cai.setText(str + ((Button) v).getText());
}
break;
case R.id.btn_6:
if(!str.contains("6")&&i>0){
cai.setText(str + ((Button) v).getText());
}
break;
case R.id.btn_7:
if(!str.contains("7")&&i>0){
cai.setText(str + ((Button) v).getText());
}
break;
case R.id.btn_8:
if(!str.contains("8")&&i>0){
cai.setText(str + ((Button) v).getText());
}
break;
case R.id.btn_9:
if(!str.contains("9")&&i>0){
cai.setText(str + ((Button) v).getText());
}
break;
case R.id.cai_2:
intent=new Intent(Caishuzi.this,Caiset.class);startActivity(intent);
finish();
break;
case R.id.cai_del:if(str!=null&&!str.equals("")&&i>0){
cai.setText(str.substring(0,str.length()-1));
}
if(i<=0){
intent=new Intent(Caishuzi.this,Caishuzi.class);startActivity(intent);
finish();
}
break;
}
if(cai.getText().toString().length()==4){
gogogo();
}
}
private void gogogo()
{
i--;
if(i>=0){
A=0;B=0;k=0;
s=cai.getText().toString();
cai.setText("");
if(i>0)
Toast.makeText(Caishuzi.this, "你還有"+i+"次機會", Toast.LENGTH_SHORT).show();
if(s.length()!=4||s.charAt(0)=='0'){
Toast.makeText(Caishuzi.this, "輸入有誤", Toast.LENGTH_SHORT).show();
}
else {
b[0]=s.charAt(0)-48;
b[1]=s.charAt(1)-48;
b[2]=s.charAt(2)-48;
b[3]=s.charAt(3)-48;
for( j=0;j<4;j++)
{
if(b[j]==a[j])
A++;
for(k=0;k<4;k++)
if(b[j]!=a[j]&&b[j]==a[k])
{
B++;
break;
}
}
if(A!=4)
{
qwe++;
if(qwe%3!=0)
duqu=duqu+s+" "+A+"A"+B+"B ";
else duqu=duqu+s+" "+A+"A"+B+"B\n";
cai_lishi.setText(duqu);
}
else {
duqu=duqu+s+"\t恭喜你,答對啦!";
cai_lishi.setText(duqu);
}
}
SharedPreferences.Editor editor = pref.edit();
if(A==4){
cai_win=pref.getInt("win",0);
editor.remove("win");
editor.commit();
editor.putInt("win", cai_win + 1);
editor.commit();
Toast.makeText(Caishuzi.this, "恭喜恭喜,答對啦!答案是:"+a[0]+a[1]+a[2]+a[3], Toast.LENGTH_SHORT).show();
}
if(i==0||A==4) {
cai_long= pref.getInt("long",0);
editor.remove("long");
editor.commit();
editor.putInt("long",cai_long+1);
editor.commit();
if(A!=4)
Toast.makeText(Caishuzi.this, "失敗了,再接再厲吧!", Toast.LENGTH_SHORT).show();
}
}
if(i==0||A==4){
btn_del.setText("再來一次");
}
}
}