android猜数字游戏程序代码以及效果图
小型企业会计制度-横批
android真机测试运行效果图如下:
以下是文件
**************************************
package nggame;
import
import
ty;
import
import
import
import
public class MainActivity
extends Activity {
private Button
easyBtn; 响应“简单”按钮
private Button
normalBtn;响应“标准”按钮
private Button hardBtn;
响应“困难”按钮
@Override
protected void
onCreate(Bundle savedInstanceState) {
te(savedInstanceState);
setContentView(ty_main);
initControl();
初始化控件
}
初始化控件
public void
initControl(){
easyBtn =
(Button)findViewById();
normalBtn =
(Button)findViewById();
hardBtn =
(Button)findViewById();
}
响应button点击事件
public void clickButton(View
v){
Intent intent = new Intent( , );
switch (()) {
case :
ra(
ra(
startActivity(intent);
break;
case :
ra(
ra(
startActivity(intent);
}
break;
case :
ra(
ra(
startActivity(intent);
break;
default:
break;
}
}
@Override
public boolean
onCreateOptionsMenu(Menu menu) {
Inflate the
menu; this adds items to the action bar if it is
present.
getMenuInflater().inflate(, menu);
return true;
}
以下是文件
*******************************
package
nggame;
import ist;
import
import ty;
import ialog;
import
Interface;
import kListener;
import
import
import le;
import tcher;
import nt;
import
import em;
import
import istener;
import
;
import xt;
import utton;
import ew;
import
public class GuessingGame
extends Activity{
private int guessNums; 猜测总次数
private int
guessCounts;猜测次数统计
private int numOfData;
给定猜测的位数
private int[] randomNum; 生成随机数
private int countNums; 用户输入数字的位数统计
private int[] userInputNum; 用户输入数字
private
StringBuffer ARight; 已经猜对的数字
private int
ARightLength; ARight的长度
private List
private ToolMethods
toolMth; 获取随机数方法类
private EditText
editAnswer; 显示输入的答案
private TextView
guessingInfo;显示猜测结果
private ImageButton
imageBtn; 提示按钮
private Button createNum;
生成随机数按钮
private Button answerBtn; 查看答案
private Button guessBtn; “开始猜”按钮
private
Button[] numButtons; 拥有0~9数字的button按钮
拥有0~9数字的ID号
private int[] numButtonsID = {
, , ,
, , ,
, ,
, };
@Override
protected void
onCreate(Bundle savedInstanceState) {
te(savedInstanceState);
setContentView(ng);
init(); 初始化
}
private
void init() {
数据初始化
int temp = 0;
temp = getIntent().getIntExtra(
guessNums =
temp;
temp =
getIntent().getIntExtra(
numOfData = temp;
guessCounts = 0;
randomNum = new
int[numOfData];
countNums = 0;
userInputNum = new int[numOfData];
方法类初始化
toolMth = new ToolMethods();
控件初始化
editAnswer =
(EditText)findViewById(swer);
guessingInfo =
(TextView)findViewById(ngInfo);
imageBtn =
(ImageButton)findViewById(tn);
createNum =
(Button)findViewById(Num);
answerBtn =
(Button)findViewById();
guessBtn =
(Button)findViewById();
numButtons = new
Button[10];
for(int i = 0; i < 10; i++){
numButtons[i]=(Button)findViewById(numButtonsID[i]
);
}
t(随机生成位数
eyListener(new
onKeyListener());输入框响应事件
tChangedListener(new
textWatcher());输入字符串超过长度响应
getApplicationContext()对于整个应用处于运行期间有效
alog( , 吴康大侠,您好! 3000, false, true);
事件
}
输入字符串超过长度响应事件
public class textWatcher
implements TextWatcher{
private int
selectionStart = 0;
private int
selectionEnd = 0;
private
CharSequence temp = null;
@Override
public void onTextChanged(CharSequence s, int
start, int before, int count) {
}
@Override
public void
beforeTextChanged(CharSequence s, int start, int
count,
int after) {
temp = s;
}
@Override
public void
afterTextChanged(Editable s) {
selectionStart = ectionStart();
selectionEnd = ectionEnd();
if(()
> numOfData)
{
xt(, 请不要超过+ numOfData + 位数
_SHORT).show();
(selectionStart-1,
selectionEnd);
int
tempSelection = selectionStart;
t(s);
ection(tempSelection);
}
}
}
输入框响应事件
public class onKeyListener implements
OnKeyListener{
@Override
public
boolean onKey(View v, int keyCode, KeyEvent event)
{
if(keyCode == E_DEL){
if(t().toString().length() < numOfData){
for(Button tempBtn : numButtons){
bled(true);
}
}
tFocus();
}
if(keyCode == E_0 || keyCode ==
E_1 ||
keyCode == E_2 ||
keyCode ==
E_3 || keyCode == E_4 ||
keyCode == E_5 ||
keyCode == E_6 || keyCode == E_7 ||
keyCode == E_8 || keyCode == E_9){
judgeNumsCount();
}
return false;
}
}
响应产生随机数的函数
public void createNum(View v){
randomNum = Num(numOfData);
ibility(E);
}
t(不重复的位数
bled(false);
bled(true);
bled(true);
for(int i = 0; i < 10; i++){
numButtons[i].setEnabled(true);
}
响应0~9数字按钮的函数
public void numButton(View
v){
for(int i = 0; i < 10; i++){
if(v
== numButtons[i]){
获取光标的位置
int index
= ectionStart();
Editable editable = t();
(index,
numButtons[i].getText().toString());
judgeNumsCount();
break;
}
}
}
public void judgeNumsCount(){
list = new ArrayList
当“输入位数”==“给定猜测的位数”时,数字按钮将失效
if(t().toString().length() == numOfData){
for(Button tempBtn : numButtons){
bled(false);
}
int temp =
nt(t().toString());
int[] tempNum = new
int[numOfData];
for(int j = 0; j <
numOfData; j++){
tempNum[j] = temp % 10;
temp = temp10;
}
for(int j =
numOfData - 1; j >= 0 j--){
(tempNum[j]);
}
}
else{
for(Button tempBtn
: numButtons){
bled(true);
}
}
}
public void guessButton(View v){
int Acounts = 0; 统计A的次数
int Bcounts =
0; 统计B的次数
ARight = new
StringBuffer(你已经猜对了:
ARightLength = ();
if(v == guessBtn){
if(t().toString().length() !=numOfData){
xt(this, 请输入位数,不然不能猜的(⊙o⊙)
哦~~
}else
if(!ated(list)){
xt(this, 请不要输入重复数字
}else{
judgeNumsCount();
for(int i
= 0; i < (); i++){
userInputNum[i] =
(i).intValue();
}
guessCounts++; 统计已经猜的次数
for(int i = 0; i <
numOfData; i++)
for(int j = 0; j < numOfData;
j++){
if(userInputNum[i] == randomNum[j]){
if(i == j){
Acounts++; 统计A的次数
(userInputNum[i] + 、
}
else
Bcounts++; 统计B的次数
}
}
if(guessCounts == guessNums){
if(Acounts == numOfData){
alog(, 您在最后一次机会中猜
对了答案,恭喜您!
StringBuffer showStr = new
StringBuffer(t().toString());
(+
t().toString() + +
Acounts +
t(showStr);
}
else{
r
builder
r()
.setTitle(可惜...
.setMessage(已经超过次
.
setIcon()
= new
.setPositiveButton(确定
@Override
public void
onClick(DialogInterface dialog, int which) {
}
});
().show();
}
ibility(BLE);
t(随机生成位数
bled(true);
bled(false);
bled(false);
t(
guessCounts = 0;
(0, ());
}
else if(Acounts == numOfData){
if(guessCounts == 1){
alog(,
您在第一次就猜对了答
案,太厉害了!
}
else{
alog(, 恭喜您猜对了!
true, false);
}
StringBuffer showStr = new
StringBuffer(t().toString());
(+
t().toString() + +
Acounts +
ibility(BLE);
t(showStr);
t(随机生成位数
bled(true);
bled(false);
bled(false);
t(
guessCounts = 0;
(0, ());
}
else{
alog(, 您没有猜对!3000, false,
false);
StringBuffer showStr = new
StringBuffer(t().toString());
(+
t().toString() +
Acounts +
nt().setFakeBoldText(true);
nt().setAntiAlias(true);
nt().setFlags(INE_TEXT_FLAG);
t(showStr);
}
countNums = 0;
for(Button
tempBtn : numButtons){
bled(true);
}
if(t().toString().length() ==
numOfData){
t(
}
}
}
}
public void imageButton(View v){
if(v == imageBtn){
String
tempTitle,tempMessage;
if(ARight == null ||
() <= 0){
tempTitle = 提示:
tempMessage = 请开始吧!
}
else if(() ==
ARightLength){
tempTitle = 可惜„
tempMessage = 抱歉,你没有答对
}else{
tempTitle = 提示:
tempMessage = ing(0, ()-1);
}
r builder = new r();
le(tempTitle)
+
.setMessage(tempMessage)
.setPositiveButton(确定
public void
onClick(DialogInterface dialog, int which) {
}
});
().show();
}
}
public void answerButton(View v){
StringBuffer answerStr = new StringBuffer();
for(int temp : randomNum){
(temp);
}
r builder = new r();
le(答案如下:
.setMessage(answerStr)
.setPositiveButton(确定
public void
onClick(DialogInterface dialog, int which) {
}
});
().show();
}
public
boolean onCreateOptionsMenu(Menu menu) {
teOptionsMenu(menu);
*
*
add()方法的四个参数,依次是: 1、组别,如果不分组的话就写,
*
2、Id,这个很重要,Android根据这个Id来确定不同的菜单
3、顺序,那个菜
单现在在前面由这个参数的大小决定
*
4、文本,菜单的显示文本
*
(1, 1, 1,
帮助
(1, 2, 2, 关于
return true;
}
@Override
public boolean
onOptionsItemSelected(MenuItem item) {
r
builder = new r(this);
switch (mId()) {
case 1:
le(帮助
.setMessage(ngGame)
}
}
.setPositiveButton(确定
@Override
public void onClick(DialogInterface dialog,
int which) {
}
});
().show();
break;
case 2:
le(关于
.setMessage(玉树临风,嘿嘿~~
.setPositiveButton(确定
@Override
public void onClick(DialogInterface dialog, int
which) {
}
});
().show();
break;
default:
break;
}
return onsItemSelected(item);
以下是文件
****************** ****************
package nggame;
import t;
import
;
import
import t;
import y;
import iew;
import Layout;
import
public class ToolMethods {
public int[] createNum(int
numOfData) {
int[] randomNum = new
int[numOfData];
int i = 0;
String[]
tempArray;
do{
tempArray =
getNumber(numOfData);
}while(!isRepeated(tempArray));
for(String
tempNum : tempArray){
randomNum[i++] =
nt(tempNum);
}
return randomNum;
}
生成随机数(字符串类型)
private String[]
getNumber(int numOfData) {
String[]
tempArray = new String[numOfData];
for(int i
= 0; i < numOfData; i++){
int tempNum =
(int)(()*10);
tempArray[i] = f(tempNum);
}
return tempArray;
}
验证随机数是否重复
private boolean isRepeated(String[]
tempArray) {
Set
for(String tempStr :
tempArray){
(tempStr);
}
if(()
!= ){
return false;
}
return
true;
}
验证随机数是否重复
public
boolean isRepeated(List
Set
}
for(int i = 0; i < (); i++){
((i));
}
if(() != ()){
return false;
}
return true;
}
public void
showDialog(Context context, String message, int
milliseconds,
boolean useSmileImage, boolean
useCoolImage){
Toast dialog = xt(context,
message, _LONG);
vity(, 0, 0);
LinearLayout dialogView = (LinearLayout)w();
ImageView useImage = new ImageView(context);
if(useSmileImage){
geResource();
}else
if(useCoolImage){
geResource();
}else{
geResource();
}
w(useImage, 0);
ation(milliseconds);
();
}