实例-15---猜数字
经典游戏,猜数字。各种不解释,因为最近发生了一些事情,所以好几天没有发了,两年来在学校经历的事情确实很丰富,当然丰富并不是你们想象的,很多都不是我自己去选择的,而是只能忍受。分享自己的感受:为什么那么多人要追求财富和权力,因为他们遭遇到了太多需要钱和权的事情了。学生是弱势群体,因为他们没钱也没权,在家里,他们的保障来自于父母,在学校,他们的保障来自于学校,当学校不对学生负责时,他们要找谁?学校两年来都在告诉我们,我们谁都不能靠,只能靠自己。只能靠自己。因为只有自己才不会在足够的利益面前抛弃自己。不想说原因,在这个和谐的社会里。
下面给出效果图和原代码:
package com.wjh.demon_15;
import java.util.Random;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class Demon_15 extends Activity implements OnClickListener {
public static final int INPUT = 1;
public EditText m_TFInput; //文本编辑框
public TextView m_strItem; //文本显示组件
public Button inputB ;
public int m_aNum[]; //存储目标数
public int m_nTimes = 0; //输入的次数
public boolean m_bEndGame = false; //游戏结束的标志
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.setTitle("猜数字");
//产生目标数
setContentView(R.layout.main);
m_TFInput = (EditText)findViewById(R.id.ed);
m_strItem = (TextView)findViewById(R.id.tv);
inputB = (Button)findViewById(R.id.input_b);
inputB.setOnClickListener(this);
m_aNum = new int[4];
InitNum();
}
public void InitNum(){ //产生随机的目标数
Random random = new Random();
int k = random.nextInt();
int m = 0;
for( int n = 0; n < 4; n ++ ){
k = random.nextInt();
m_aNum[n] = Math.abs(k % 10);
//for循环语句,确保四个数位上的数字无重复
for( m = 0; m < n; m ++ ){
//若与前面的数字重复,则用加1的办法保证不重复
if( m_aNum[n] == m_aNum[m] )
m_aNum[n] ++;
//若加1后大于9则回到0
if( m_aNum[n] > 9 )
m_aNum[n] = 0;
}
}
}
public boolean CheckNumber( char cNum[] ){ //检测数据是否合法
if( cNum.length != 4 )
return false;
for( int i = 0; i < 4; i ++ ){
for( int j = 0; j < i; j ++ ){
//有两个数字相同了,确定是非法输入
if( cNum[i] == cNum[j] ){
return false;
}
}
}
return true;
}
public void FeedBack(char cNum[]){ //根据输入数反馈信息
if( cNum.length != 4 )
return;
int nB = 0; //记录B的个数,即m的值
int nA = 0; //记录A的个数,即n的值
for( int i = 0; i < 4; i ++ ){
for( int j = 0; j < 4; j ++ ){
//cNum[i]是字符,需先转换成对应的数字,再与m_aNum[j]进行比较
if( (int)(cNum[i] - '0') == m_aNum[j] ){
if( i == j )
nA ++; //如果位置也相同,则m的值加1
else
nB ++; //如果位置不相同,则n的值加1
}
}
}
if( nA == 4 ){ //猜数成功
m_strItem.setText("成功");
m_bEndGame = true;
return;
}
else
m_nTimes ++;
if( m_nTimes > 5 ){ //猜数失败
m_strItem.setText("失败");
m_bEndGame = true;
return;
}
//输出反馈信息
StringBuffer temp = new StringBuffer();
temp.append(nB);
temp.append("B");
temp.append(nA);
temp.append("A");
m_strItem.setText(temp.toString());
m_TFInput.setText("");
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if( m_bEndGame )
return;
if (v == inputB){ //指令被触发
char cNum[] = new char[4];
m_TFInput.getText().toString().getChars(0,cNum.length,cNum,0);
Log.d("ddd", m_TFInput.getText().toString());
if( !CheckNumber( cNum ) )
{//如果输入数不合法
m_strItem.setText("");
m_TFInput.setText("");
m_strItem.setText("非法数字");
return;
}
FeedBack(cNum); //反馈信息
}
}
}
apk文件(将后缀改为apk):Demon_15.zip
源代码:Demon_15.rar