安卓猜數字小遊戲1

先說玩法:
輸入四個不重複的數字,點確定按鈕後,結果顯示在下方的歷史中。其形式爲**** ?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("再來一次");
        }

    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章