package wyf.ytl;
/**
*
* 该类为键盘监听线程类
* 定时检测当前键盘的状态
* 然后根据状态调用相应的处理
*
*/
public class KeyThread extends Thread{
int sleepSpan = 150;
PushBoxActivity pushBoxActivity;//Activity的引用
boolean flag = true;//循环标志
boolean keyFlag = true;//是否监听标志
int action;//键盘状态码
private boolean KEY_UP = false;//向上键是否被按下
private boolean KEY_DOWN = false;//向下键是否被按下
private boolean KEY_LEFT = false;//向左的键被按下
private boolean KEY_RIGHT = false;//向右的键被按下
public KeyThread(PushBoxActivity pushBoxActivity){//构造器
this.pushBoxActivity = pushBoxActivity;
}
@Override
public void run(){//重写的方法
while(flag){
if(keyFlag){//是否需要键盘监听
boolean typeFlag = true;//什么类型。推箱子或者走路
action = pushBoxActivity.action;//得到当前键盘的状态码
if((action & 0x08) != 0){//上
KEY_UP = true;
}
else{
KEY_UP = false;
}
if((action & 0x04) != 0){//下
KEY_DOWN = true;
}
else{
KEY_DOWN = false;
}
if((action & 0x02) != 0){//左
KEY_LEFT = true;
}
else{
KEY_LEFT = false;
}
if((action & 0x01) != 0){//右
KEY_RIGHT = true;
}
else{
KEY_RIGHT = false;
}
if(KEY_UP == true){//向上键被按下
this.keyFlag = false;
if(!(pushBoxActivity.mySprite.i-1 <=0)){//没到最上方时
if(pushBoxActivity.map2[pushBoxActivity.mySprite.i-1][pushBoxActivity.mySprite.j] == 1 || pushBoxActivity.map2[pushBoxActivity.mySprite.i-1][pushBoxActivity.mySprite.j] == 3){//当上侧有箱子时
if(pushBoxActivity.map2[pushBoxActivity.mySprite.i-2][pushBoxActivity.mySprite.j] == 0){//检测箱子的上边是否为空地
if(pushBoxActivity.map1[pushBoxActivity.mySprite.i-2][pushBoxActivity.mySprite.j] == 2 || pushBoxActivity.map1[pushBoxActivity.mySprite.i-2][pushBoxActivity.mySprite.j] == 3){//是否为目的地
pushBoxActivity.map2[pushBoxActivity.mySprite.i-2][pushBoxActivity.mySprite.j] = 3;//绿色的箱子
}
else{
pushBoxActivity.map2[pushBoxActivity.mySprite.i-2][pushBoxActivity.mySprite.j] = 1;
}
pushBoxActivity.map2[pushBoxActivity.mySprite.i-1][pushBoxActivity.mySprite.j] = 0;
pushBoxActivity.gameView.tempi = pushBoxActivity.mySprite.i-2;//移动箱子
pushBoxActivity.gameView.tempj = pushBoxActivity.mySprite.j;
BoxThread bt = new BoxThread(1,pushBoxActivity,pushBoxActivity.gameView.tempi,pushBoxActivity.gameView.tempj);//无极运动箱子
bt.start();//启动箱子移动的线程
typeFlag = false;
}
}
}
SpriteMoveThread smt = new SpriteMoveThread(1,pushBoxActivity, typeFlag);//精灵无极移动
smt.start();
SpriteThread st = new SpriteThread(1, pushBoxActivity, typeFlag);//精灵换帧
st.start();
}
if(KEY_DOWN == true){//向下键被按下
this.keyFlag = false;
if(!((pushBoxActivity.mySprite.i + 1) >= (pushBoxActivity.map2.length-1))){
if(pushBoxActivity.map2[pushBoxActivity.mySprite.i+1][pushBoxActivity.mySprite.j] == 1 || pushBoxActivity.map2[pushBoxActivity.mySprite.i+1][pushBoxActivity.mySprite.j] == 3){//当下侧有箱子时
if(pushBoxActivity.map2[pushBoxActivity.mySprite.i+2][pushBoxActivity.mySprite.j] == 0){//检测箱子的下边是否为空地
if(pushBoxActivity.map1[pushBoxActivity.mySprite.i+2][pushBoxActivity.mySprite.j] == 2 || pushBoxActivity.map1[pushBoxActivity.mySprite.i+2][pushBoxActivity.mySprite.j] == 3){//是否为目的地
pushBoxActivity.map2[pushBoxActivity.mySprite.i+2][pushBoxActivity.mySprite.j] = 3;
}
else{
pushBoxActivity.map2[pushBoxActivity.mySprite.i+2][pushBoxActivity.mySprite.j] = 1;
}
pushBoxActivity.map2[pushBoxActivity.mySprite.i+1][pushBoxActivity.mySprite.j] = 0;
pushBoxActivity.gameView.tempi = pushBoxActivity.mySprite.i+2;
pushBoxActivity.gameView.tempj = pushBoxActivity.mySprite.j;
BoxThread bt = new BoxThread(2,pushBoxActivity,pushBoxActivity.gameView.tempi,pushBoxActivity.gameView.tempj);//无极运动箱子
bt.start();
typeFlag = false;
}
}
}
SpriteMoveThread smt = new SpriteMoveThread(2,pushBoxActivity, typeFlag);//精灵无极移动
smt.start();
SpriteThread st = new SpriteThread(2, pushBoxActivity,typeFlag);//精灵换帧
st.start();
}
if(KEY_LEFT == true){//向左键被按下
this.keyFlag = false;//去掉键盘监听
if(!(pushBoxActivity.mySprite.j-1 <= 0)){
if(pushBoxActivity.map2[pushBoxActivity.mySprite.i][pushBoxActivity.mySprite.j-1] == 1 || pushBoxActivity.map2[pushBoxActivity.mySprite.i][pushBoxActivity.mySprite.j-1] == 3){//当左侧有箱子时
if(pushBoxActivity.map2[pushBoxActivity.mySprite.i][pushBoxActivity.mySprite.j-2] == 0){//检测箱子的左边是否为空地
if(pushBoxActivity.map1[pushBoxActivity.mySprite.i][pushBoxActivity.mySprite.j-2] == 2 || pushBoxActivity.map1[pushBoxActivity.mySprite.i][pushBoxActivity.mySprite.j-2] == 3){//是否为目的地
pushBoxActivity.map2[pushBoxActivity.mySprite.i][pushBoxActivity.mySprite.j-2] = 3;//绿箱子
}
else{
pushBoxActivity.map2[pushBoxActivity.mySprite.i][pushBoxActivity.mySprite.j-2] = 1;
}
pushBoxActivity.map2[pushBoxActivity.mySprite.i][pushBoxActivity.mySprite.j-1] = 0;
pushBoxActivity.gameView.tempi = pushBoxActivity.mySprite.i;
pushBoxActivity.gameView.tempj = pushBoxActivity.mySprite.j-2;
BoxThread bt = new BoxThread(3,pushBoxActivity,pushBoxActivity.gameView.tempi,pushBoxActivity.gameView.tempj);//无极运动箱子
bt.start();
typeFlag = false;
}
}
}
SpriteMoveThread smt = new SpriteMoveThread(3,pushBoxActivity, typeFlag);//精灵无极移动
smt.start();
SpriteThread st = new SpriteThread(3, pushBoxActivity,typeFlag);//精灵换帧
st.start();
}
if(KEY_RIGHT == true){//向右键被按下
this.keyFlag = false;
if(!(pushBoxActivity.mySprite.j+1 >= pushBoxActivity.map2[pushBoxActivity.mySprite.i].length-1)){
if(pushBoxActivity.map2[pushBoxActivity.mySprite.i][pushBoxActivity.mySprite.j+1] == 1 || pushBoxActivity.map2[pushBoxActivity.mySprite.i][pushBoxActivity.mySprite.j+1] == 3){//当左侧有箱子时
if(pushBoxActivity.map2[pushBoxActivity.mySprite.i][pushBoxActivity.mySprite.j+2] == 0){//检测箱子的左边是否为空地
if(pushBoxActivity.map1[pushBoxActivity.mySprite.i][pushBoxActivity.mySprite.j+2] == 2 || pushBoxActivity.map1[pushBoxActivity.mySprite.i][pushBoxActivity.mySprite.j+2] == 3){//是否为目的地
pushBoxActivity.map2[pushBoxActivity.mySprite.i][pushBoxActivity.mySprite.j+2] = 3;
}
else{
pushBoxActivity.map2[pushBoxActivity.mySprite.i][pushBoxActivity.mySprite.j+2] = 1;
}
pushBoxActivity.map2[pushBoxActivity.mySprite.i][pushBoxActivity.mySprite.j+1] = 0;
pushBoxActivity.gameView.tempi = pushBoxActivity.mySprite.i;//移动箱子
pushBoxActivity.gameView.tempj = pushBoxActivity.mySprite.j+2;
BoxThread bt = new BoxThread(4,pushBoxActivity,pushBoxActivity.gameView.tempi,pushBoxActivity.gameView.tempj);//无极运动箱子
bt.start();
typeFlag = false;
}
}
}
SpriteMoveThread smt = new SpriteMoveThread(4,pushBoxActivity, typeFlag);//精灵无极移动
smt.start();
SpriteThread st = new SpriteThread(4, pushBoxActivity,typeFlag);//精灵换帧
st.start();
}
}
try{
Thread.sleep(sleepSpan);//睡觉指
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
android 游戏推箱子源码(非原创) (107个子文件)
resources.ap_ 858KB
PushBox.apk 874KB
GameView.class 5KB
MenuView.class 4KB
KeyThread.class 4KB
WelcomeView.class 3KB
MySprite.class 3KB
PushBoxActivity.class 3KB
MapList.class 3KB
SpriteMoveThread.class 3KB
BoxThread.class 2KB
R$drawable.class 2KB
SpriteThread.class 2KB
WelcomeViewGoThread.class 1KB
WelcomeViewDrawThread.class 1KB
MenuViewDrawThread.class 1KB
GameViewDrawThread.class 1KB
PushBoxActivity$1.class 1KB
MenuViewGoThread.class 912B
R.class 456B
R$raw.class 446B
R$string.class 394B
R$layout.class 361B
R$attr.class 307B
.classpath 280B
Thumbs.db 105KB
classes.dex 29KB
KeyThread.java 8KB
GameView.java 6KB
PushBoxActivity.java 5KB
MySprite.java 4KB
MenuView.java 4KB
SpriteMoveThread.java 4KB
R.java 3KB
BoxThread.java 3KB
WelcomeView.java 3KB
MapList.java 3KB
SpriteThread.java 2KB
WelcomeViewGoThread.java 1KB
WelcomeViewDrawThread.java 1KB
MenuViewDrawThread.java 1KB
GameViewDrawThread.java 1KB
MenuViewGoThread.java 705B
background.jpg 45KB
menubackground.jpg 18KB
sound3.mp3 215KB
sound1.mp3 21KB
winsound.mp3 8KB
sound2.mp3 7KB
menubackground2.png 83KB
image3.png 54KB
image33.png 52KB
image2.png 41KB
image4.png 38KB
wallleft.png 36KB
wallright.png 28KB
mountain2.png 22KB
goon.png 14KB
help1.png 10KB
exit1.png 10KB
sound2.png 9KB
greenbox.png 8KB
box.png 6KB
start1.png 5KB
wall.png 5KB
sound1.png 4KB
icon.png 4KB
g4.png 4KB
f2.png 4KB
g6.png 4KB
c4.png 4KB
a4.png 4KB
f3.png 3KB
e3.png 3KB
e1.png 3KB
e14.png 3KB
a1.png 3KB
a9.png 3KB
d8.png 3KB
c9.png 3KB
c1.png 3KB
g14.png 3KB
g1.png 3KB
a8.png 3KB
c8.png 3KB
h2.png 3KB
h3.png 3KB
e4.png 3KB
d4.png 3KB
d1.png 3KB
d9.png 3KB
h14.png 3KB
h1.png 3KB
b4.png 3KB
b8.png 3KB
b1.png 3KB
b9.png 3KB
exit2.png 3KB
f1.png 3KB
f14.png 3KB
共 107 条
- 1
- 2
资源评论
- lggrief2013-07-29被坑了,没什么用啊这个,分也有点高
无风之翼
- 粉丝: 86
- 资源: 23
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功