package Yuleo.Android;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class Game extends Activity {
private TextView tv1,tv2,tv3;//三个TextView的引用
private Button[][] allButtons;//所有Button对象的引用的二维数组
private int[][] allValues;//Button对象对应的数值,另外一种办法是用Button的继承类
//Handler
static final int UPDATE_TV2=1;//消息的定义
Handler h=new Handler()
{
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch(msg.what)
{
case UPDATE_TV2://处理tv3中数字的增加
{
String sNum=(String) tv3.getText();//得到String并转为int
Integer i=new Integer(sNum);
int iNum=i.intValue();
iNum++;
tv3.setText(""+iNum);//更新
break;
}
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.game);
tv1=(TextView)findViewById(R.id.tv1);//得到控件对象的引用
tv2=(TextView)findViewById(R.id.tv2);//id已修改
tv3=(TextView)findViewById(R.id.tv3);
Intent i=getIntent();
String nickName=i.getStringExtra("NickName");
int iGrade=i.getIntExtra("Grade", 0);//默认是0
tv2.setText(nickName);//设置TextView
tv3.setText(""+iGrade);
allButtons=new Button[5][5];//Button控件
allButtons[1][1]=(Button)findViewById(R.id.button11);
allButtons[1][2]=(Button)findViewById(R.id.button12);
allButtons[1][3]=(Button)findViewById(R.id.button13);
allButtons[1][4]=(Button)findViewById(R.id.button14);
allButtons[2][1]=(Button)findViewById(R.id.button21);
allButtons[2][2]=(Button)findViewById(R.id.button22);
allButtons[2][3]=(Button)findViewById(R.id.button23);
allButtons[2][4]=(Button)findViewById(R.id.button24);
allButtons[3][1]=(Button)findViewById(R.id.button31);
allButtons[3][2]=(Button)findViewById(R.id.button32);
allButtons[3][3]=(Button)findViewById(R.id.button33);
allButtons[3][4]=(Button)findViewById(R.id.button34);
allButtons[4][1]=(Button)findViewById(R.id.button41);
allButtons[4][2]=(Button)findViewById(R.id.button42);
allButtons[4][3]=(Button)findViewById(R.id.button43);
allButtons[4][4]=(Button)findViewById(R.id.button44);
//这个真没办法偷懒
allValues=new int[5][5];//数组对象
for(int r=1;r<=4;r++)//row column
{
for(int c=1;c<=4;c++)
{
allValues[r][c]=(r-1)*4+c;
if(allValues[r][c]<10)
{
allButtons[r][c].setText(" "+allValues[r][c]+" ");
//加空格固定Button的宽度,也可以通过布局文件来固定
}
else
{
allButtons[r][c].setText(" "+allValues[r][c]+" ");
}
}
}
//修改右下角那个Button
allValues[4][4]=111;
allButtons[4][4].setText(" ");
//设置监听器
for(int r=1;r<=4;r++)
{
for(int c=1;c<=4;c++)
{
GameListener gl=new GameListener(r,c);
allButtons[r][c].setOnClickListener(gl);
}
}
}
//Button监听器类,内部类可以方便地访问外部类中的成员变量
class GameListener implements OnClickListener
{
private int iRow,iColumn;
GameListener(int r, int c)
{
iRow=r;
iColumn=c;
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(iRow>1)//上面有按钮的话
{
if(allValues[iRow-1][iColumn]==111)//如果上面那个按钮为空
{
//交换数据
int iTemp=allValues[iRow][iColumn];
allValues[iRow][iColumn]=111;
allValues[iRow-1][iColumn]=iTemp;
//交换显示的内容
String sTemp=(String) (allButtons[iRow][iColumn]).getText();
allButtons[iRow][iColumn].setText(allButtons[iRow-1][iColumn].getText());
allButtons[iRow-1][iColumn].setText(sTemp);
return ;
}
}
if(iRow<4)//下面有按钮的话
{
if(allValues[iRow+1][iColumn]==111)
{
int iTemp=allValues[iRow][iColumn];
allValues[iRow][iColumn]=111;
allValues[iRow+1][iColumn]=iTemp;
String sTemp=(String) (allButtons[iRow][iColumn]).getText();
allButtons[iRow][iColumn].setText(allButtons[iRow+1][iColumn].getText());
allButtons[iRow+1][iColumn].setText(sTemp);
return ;
}
}
if(iColumn>1)//左边有按钮的话
{
if(allValues[iRow][iColumn-1]==111)
{
int iTemp=allValues[iRow][iColumn];
allValues[iRow][iColumn]=111;
allValues[iRow][iColumn-1]=iTemp;
String sTemp=(String) (allButtons[iRow][iColumn]).getText();
allButtons[iRow][iColumn].setText(allButtons[iRow][iColumn-1].getText());
allButtons[iRow][iColumn-1].setText(sTemp);
return ;
}
}
if(iColumn<4)//右边有按钮的话
{
if(allValues[iRow][iColumn+1]==111)
{
int iTemp=allValues[iRow][iColumn];
allValues[iRow][iColumn]=111;
allValues[iRow][iColumn+1]=iTemp;
String sTemp=(String) (allButtons[iRow][iColumn]).getText();
allButtons[iRow][iColumn].setText(allButtons[iRow][iColumn+1].getText());
allButtons[iRow][iColumn+1].setText(sTemp);
return ;
}
}
}
}
//线程类,用于让tv3中的数字增加
class NumberAdder implements Runnable
{
@Override
public void run() {
// TODO Auto-generated method stub
for(int j=1;j<20;j++)
{
try
{
Thread.sleep(1000);
Message msg = new Message();
msg.what = UPDATE_TV2;//给Handler发消息,让Handler去处理
h.sendMessage(msg);
}
catch (Exception e)
{
}
}
}
}
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
//建立线程
NumberAdder na=new NumberAdder();
new Thread(na).start();
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Android-Move小游戏
共29个文件
class:12个
xml:4个
java:3个
需积分: 9 15 下载量 168 浏览量
2011-08-13
19:33:04
上传
评论
收藏 57KB ZIP 举报
温馨提示
Android-Move小程序 http://www.cnblogs.com/yubin/articles/HelloworldGo.html
资源推荐
资源详情
资源评论
收起资源包目录
Move.zip (29个子文件)
Move
.project 840B
default.properties 363B
bin
Yuleo
Android
R$string.class 412B
R$layout.class 407B
Game.class 4KB
Game$GameListener.class 2KB
R$drawable.class 385B
MoveActivity.class 1KB
R.class 496B
Game$1.class 1KB
R$attr.class 325B
Game$NumberAdder.class 942B
MoveActivity$1.class 1KB
R$id.class 1KB
Move.apk 18KB
resources.ap_ 12KB
classes.dex 9KB
proguard.cfg 1KB
AndroidManifest.xml 730B
src
Yuleo
Android
MoveActivity.java 1KB
Game.java 6KB
res
values
strings.xml 167B
layout
game.xml 4KB
main.xml 557B
drawable-ldpi
icon.png 2KB
drawable-hdpi
icon.png 4KB
drawable-mdpi
icon.png 3KB
.classpath 280B
gen
Yuleo
Android
R.java 2KB
assets
共 29 条
- 1
资源评论
yubinyuleo
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功