2012年1月2日 星期一

猜數字遊戲

XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >


    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />


    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="請輸入四個不重複數字"
        android:textAppearance="?android:attr/textAppearanceLarge" />




    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >


        <EditText
            android:id="@+id/inputEt"
            android:layout_width="226dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.93"
            android:inputType="number" />


        <Button
            android:id="@+id/guessBtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button" />
    </LinearLayout>


    <TextView
        android:id="@+id/resultTv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=""
        android:textAppearance="?android:attr/textAppearanceLarge" />


</LinearLayout>
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
JAVA

package com.demo.android.Guess;


import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;


public class GuessActivity extends Activity {
    /** Called when the activity is first created. */
private String result="";
private char[] numAnswer = {};
private char[] numInput = {};

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        numAnswer = GenNum().toCharArray();
        
        Button guessBtn = (Button)findViewById(R.id.guessBtn);
        
        guessBtn.setOnClickListener(new Button.OnClickListener(){   
  public void onClick(View v){
   
  int countA=0;//A的個數
  int countB=0;//B的個數
   
   
  EditText inputEt = (EditText) findViewById(R.id.inputEt);
  numInput = inputEt.getText().toString().toCharArray();
   
  //比對數字
  for(int i=0; i<4; i++){
  for(int j=0;j<4;j++){
  if(numInput[i] == numAnswer[j]){
  if(i==j)
  countA+=1;//數字相同而且位置相同 +1A
  else
  countB+=1;//數字相同但是位置不同 -1A
  }
  }
  }
     
       
    result="=>"+countA+"A"+countB+"B";
     
    if( countA == 4){
    result += " 答對了!遊戲結束。";
    }
     
  //顯示資料
    TextView resultTv = (TextView)findViewById(R.id.resultTv);
    resultTv.setText(inputEt.getText().toString()+result);
     
    inputEt.setText("");//清除輸入
  }
    });
    }


    
    //亂數產生數字
    public String GenNum(){
    String number = "0123456789";
    String numAnswer = "";


    //從0~9抽號碼
    //每次亂數抽一個號碼
    for(int i=0; i<4; i++){
    //因為每次會抽一個號碼,所以數字個數會少一個
    //i=1 產生亂數第0~9個號碼 0123456789 假設抽到第3個數字3
    //i=2 產生亂數第0~8個號碼 012456789 假設抽到第6個數字7
    //i=3 產生亂數第0~7個號碼 01245689 假設抽到第1個數字1
    //...
    int randNum =(int)(Math.random()*(10-i));
    //抽到的號碼
    String randStr = number.substring(randNum, randNum+1);
    //刪掉抽到的號碼
    number = number.replace(randStr, "");
    //存抽到的號碼
    numAnswer += randStr;
    }
   
    //測試用,顯示答案
    TextView tv = (TextView)findViewById(R.id.textView1);
tv.setText(tv.getText().toString()+"( "+ numAnswer + " )");
     
    return numAnswer;
    }
}
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

2 則留言:

  1. 老師 我把程式放到手機上RUN 可是在螢幕翻轉的時候 會不定時的發生"未正常終止"

    回覆刪除