我是菜鸟,编了个小游戏,想加个触屏功能,怎么做?
只要能选中就可
只要能选中就可
解决方案 »
- android 自动定位时用 NETWORK_PROVIDER方式获取经纬度
- webViewl的oadUrl()和reload(),js不起作用
- android手机待机界面的手触屏幕实现左右滑滚是如何实现的?
- 郁闷啊!EditText设置android:ellipsize="marquee"就报IllegalArgumentException
- 做过android串口通信的来看一下!
- unfortunately android has stopped!
- 有人知道这个布局哪有错吗??急求。。。。
- 联系人去重
- 这是为什么?
- 安卓开发不能从values/strings.xml读取信息
- 在软件中 设置时间提醒如何实现
- android生命周期的问题
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.Bitmap.Config;
import android.media.MediaPlayer;
import android.view.KeyEvent;
import android.view.View;public class GameView<Canvas1> extends View {
Bitmap goon;
boolean isSound = true;
MediaPlayer gamesound;
int time;
private Bitmap[] bmp1 = new Bitmap[20];
int color = 0;
int []ltx = new int[20];
int []lty = new int[20];
Rect[] rectpeople = new Rect[20];
int t;
int flagStart=1;
int flagWin;
int level;
boolean[] tag = {true,false,false,false,false,false,false,false,false,false}; private final Paint paint = new Paint();
public GameView(Context context) {
super(context);
level0();
Resources res = context.getResources();
bmp1[0]=BitmapFactory.decodeResource(res, R.drawable.caocao);
bmp1[1]=BitmapFactory.decodeResource(res, R.drawable.guanyu);
bmp1[2]=BitmapFactory.decodeResource(res, R.drawable.zhaoyun);
bmp1[3]=BitmapFactory.decodeResource(res, R.drawable.machao);
bmp1[4]=BitmapFactory.decodeResource(res, R.drawable.zhangfei);
bmp1[5]=BitmapFactory.decodeResource(res, R.drawable.huangzhong);
bmp1[6]=BitmapFactory.decodeResource(res, R.drawable.soldier);
bmp1[7]=BitmapFactory.decodeResource(res, R.drawable.soldier);
bmp1[8]=BitmapFactory.decodeResource(res, R.drawable.soldier);
bmp1[9]=BitmapFactory.decodeResource(res, R.drawable.soldier);
setFocusable(true);
}
/*****************************************************
desc:是否隐藏
******************************************************/
boolean IsHitting(Rect rcSour, Rect rcDest)
{
boolean b_Result=true;
if(rcSour.left>=rcDest.right && rcSour.right>rcDest.left) //rcSour在右侧
b_Result=false;
if(rcSour.left<rcDest.right && rcSour.right<=rcDest.left) //rcSour在左侧
b_Result=false;
if(rcSour.top>=rcDest.bottom && rcSour.bottom>rcDest.top) //rcSour在下侧
b_Result=false;
if(rcSour.top<rcDest.bottom && rcSour.bottom<=rcDest.top) //rcSour在上侧
b_Result=false;
return b_Result;
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
Bitmap newb = Bitmap.createBitmap(bmp1[0].getWidth(),bmp1[0].getHeight(),Config.ARGB_8888);
Canvas canvas = new Canvas(newb);
int i;
for(int j=0;j<10;j++)
{
if(tag[j]==true)
t=j;
}
if (flagStart == 1) {
switch (keyCode) {
case KeyEvent.KEYCODE_DPAD_UP:
if(rectpeople[t].top>0) //在游戏界面内
{
lty[t]-=90;
rectpeople[t].top-=90;
rectpeople[t].bottom-=90;
for(i=0;i<10;i++) //逐个比较是否与其它矩形重叠
{
if(IsHitting(rectpeople[t],rectpeople[i])&& i!=t) //重叠后退回原位
{
lty[t]+=90;
rectpeople[t].top+=90;
rectpeople[t].bottom+=90;
tag[t]=false;
tag[i]=true;
drawRectFrame(canvas);
break;
}
}
}
break;
case KeyEvent.KEYCODE_DPAD_DOWN:
if(rectpeople[0].bottom==450 &&rectpeople[0].right==270 && tag[0])
{
time=0;
if(time<20){
time++;
}
level++;
selectLever(level%5); }
if(rectpeople[t].bottom<450)
{
lty[t]+=90;
rectpeople[t].top+=90;
rectpeople[t].bottom+=90;
drawRectFrame(canvas);
for(i=0;i<10;i++) //逐个比较是否与其它矩形重叠
{
if(IsHitting(rectpeople[t],rectpeople[i]) && i!=t) //重叠后退回原位
{
lty[t]-=90;
rectpeople[t].top-=90;
rectpeople[t].bottom-=90;
tag[t]=false;
tag[i]=true;
drawRectFrame(canvas);
break;
}
}
}
break;
case KeyEvent.KEYCODE_DPAD_LEFT:
if(rectpeople[t].left>75)
{
ltx[t]-=90;
rectpeople[t].right-=90;
rectpeople[t].left-=90;
for(i=0;i<10;i++) //逐个比较是否与其它矩形重叠
{
if(IsHitting(rectpeople[t],rectpeople[i]) && i!=t) //重叠后退回原位,移动焦点
{
ltx[t]+=90;
rectpeople[t].right+=90;
rectpeople[t].left+=90;
tag[t]=false;
tag[i]=true;
drawRectFrame(canvas);
break;
}
}
}
break;
case KeyEvent.KEYCODE_DPAD_RIGHT:
if(rectpeople[t].right<360)
{
ltx[t]+=90;
rectpeople[t].right+=90;
rectpeople[t].left+=90;
for(i=0;i<10;i++) //逐个比较是否与其它矩形重叠
{
if(IsHitting(rectpeople[t],rectpeople[i]) && i!=t) //重叠后退回原位,移动焦点
{
ltx[t]-=90;
rectpeople[t].right-=90;
rectpeople[t].left-=90;
tag[t]=false;
tag[i]=true;
drawRectFrame(canvas);
break;
}
}
}
break;
case KeyEvent.KEYCODE_MENU:
level++;
selectLever(level%5);
break;
case KeyEvent.KEYCODE_DPAD_CENTER:
if(rectpeople[0].bottom==450 &&rectpeople[0].right==270 && tag[0])
{
level++;
selectLever(level%5);
break;
}
}
postInvalidate();
}
return super.onKeyDown(keyCode, event);
}
// TODO Auto-generated method stub
switch(flevel)
{
case 1:
level0();
break;
case 2:
level1();
break;
case 3:
level2();
break;
case 0:
level3();
break;
case 4:
level4();
break;
}
}
private void level4() {
// TODO Auto-generated method stub
rectpeople[0] = new Rect(0, 0, 180, 180);
rectpeople[1] = new Rect(0, 180, 180, 270);
rectpeople[2] = new Rect(180, 0, 270, 180); rectpeople[3] = new Rect(0, 270, 90, 450);
rectpeople[4] = new Rect(270, 0, 360, 180);
rectpeople[5] = new Rect(90, 270, 180, 450); rectpeople[6] = new Rect(180, 180, 270, 270);
rectpeople[7] = new Rect(180, 270, 270, 360);
rectpeople[8] = new Rect(270, 180, 360, 270);
rectpeople[9] = new Rect(270, 270, 360, 360);
ltx[0] = 0;// 曹操
lty[0] = 0; ltx[1] = 0;// 关羽
lty[1] = 180; ltx[2] = 180;
lty[2]=0;
ltx[3]=0;
lty[3]=270;
ltx[4]=270;
lty[4]=0;
ltx[5]=90;
lty[5]=270;
ltx[6]=180;
lty[6]=180;
ltx[7]=180;
lty[7]=270;
ltx[8]=270;
lty[8]=180;
ltx[9]=270;
lty[9]=270;
}
private void level0() {
// TODO Auto-generated method stub
rectpeople[0] = new Rect(90, 180, 270, 360);
rectpeople[1] = new Rect(90, 180, 270, 180);
rectpeople[2] = new Rect(0, 0, 90, 180);
rectpeople[3] = new Rect(0, 180, 90, 360);
rectpeople[4] = new Rect(270, 0, 360, 180);
rectpeople[5] = new Rect(270, 180, 360, 360); rectpeople[6] = new Rect(90, 0,180, 90);
rectpeople[7] = new Rect(180, 0, 270, 90);
rectpeople[8] = new Rect(0, 360, 90,450);
rectpeople[9] = new Rect(270, 360, 360, 450);
ltx[0] = 90;// 曹操
lty[0] = 180; ltx[1] = 90;// 关羽
lty[1] = 90; ltx[2] = 0;
lty[2] = 0;
ltx[3] = 0;
lty[3] = 180;
ltx[4] = 270;
lty[4] = 0;
ltx[5] = 270;
lty[5] = 180;
ltx[6] = 90;
lty[6] = 0;
ltx[7] = 180;
lty[7] = 0;
ltx[8] = 0;
lty[8] = 360;
ltx[9] = 270;
lty[9] = 360;
} private void level2() {
rectpeople[0] = new Rect(90,0,270,180);
rectpeople[1] = new Rect(90,180,270,270);
rectpeople[2] = new Rect(90,270,180,450);
rectpeople[3] = new Rect(180,270,270,450);
rectpeople[4] = new Rect(0,180,90,360);
rectpeople[5] = new Rect(270,180,360,360);
rectpeople[6] = new Rect(0,0,90,90);
rectpeople[7] = new Rect(0,90,90,180);
rectpeople[8] = new Rect(270,0,360,90);
rectpeople[9] = new Rect(270,90,360,180);
ltx[0]=90;//曹操
lty[0]=0;
ltx[1]=90;//关羽
lty[1]=180;
ltx[2]=90;
lty[2]=270;
ltx[3]=180;
lty[3]=270;
ltx[4]=0;
lty[4]=180;
ltx[5]=270;
lty[5]=180;
ltx[6]=0;
lty[6]=0;
ltx[7]=0;
lty[7]=90;
ltx[8]=270;
lty[8]=0;
ltx[9]=270;
lty[9]=90;
} private void level1() {
rectpeople[0] = new Rect(90,0,270,180);
rectpeople[1] = new Rect(90,180,270,270);
rectpeople[2] = new Rect(270,0,360,180);
rectpeople[3] = new Rect(0,270,90,450);
rectpeople[4] = new Rect(0,0,90,180);
rectpeople[5] = new Rect(270,270,360,450);
rectpeople[6] = new Rect(0,180,90,270);
rectpeople[7] = new Rect(270,180,360,270);
rectpeople[8] = new Rect(90,270,180,360);
rectpeople[9] = new Rect(180,270,270,360);
ltx[0]=90;//曹操
lty[0]=0; ltx[1]=90;//关羽
lty[1]=180;
ltx[2]=270;
lty[2]=0;
ltx[3]=0;
lty[3]=270;
ltx[4]=0;
lty[4]=0;
ltx[5]=270;
lty[5]=270;
ltx[6]=0;
lty[6]=180;
ltx[7]=270;
lty[7]=180;
ltx[8]=90;
lty[8]=270;
ltx[9]=180;
lty[9]=270;
} private void level3() {
rectpeople[0] = new Rect(90,0,270,180);
rectpeople[1] = new Rect(90,180,270,270);
rectpeople[2] = new Rect(0,0,90,180);
rectpeople[3] = new Rect(270,0,360,180);
rectpeople[4] = new Rect(0,180,90,360);
rectpeople[5] = new Rect(270,180,360,360);
rectpeople[6] = new Rect(90,270,180,360);
rectpeople[7] = new Rect(180,270,270,360);
rectpeople[8] = new Rect(0,360,90,450);
rectpeople[9] = new Rect(270,360,360,450);
ltx[0]=90;//曹操
lty[0]=0;
ltx[1]=90;//关羽
lty[1]=180;
ltx[2]=0;
lty[2]=0;
ltx[3]=270;
lty[3]=0;
ltx[4]=0;
lty[4]=180;
ltx[5]=270;
lty[5]=180;
ltx[6]=90;
lty[6]=270;
ltx[7]=180;
lty[7]=270;
ltx[8]=0;
lty[8]=360;
ltx[9]=270;
lty[9]=360;
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
Init(canvas);
drawRectFrame(canvas);
}
/*
* 绘制焦点
*/
private void drawRectFrame(Canvas canvas)
{
paint.setColor(Color.RED);
//tag[0]=true;
int i;
for(i=0;i<10;i++)
{
if(tag[i]==true)
{
canvas.drawLine(rectpeople[i].left, rectpeople[i].top, rectpeople[i].left, rectpeople[i].bottom, paint);
canvas.drawLine(rectpeople[i].left, rectpeople[i].top, rectpeople[i].right, rectpeople[i].top, paint);
canvas.drawLine(rectpeople[i].right, rectpeople[i].top, rectpeople[i].right, rectpeople[i].bottom, paint);
canvas.drawLine(rectpeople[i].left, rectpeople[i].bottom, rectpeople[i].right, rectpeople[i].bottom, paint);
}
}
}
private void Init(Canvas canvas)
{
Paint paint = new Paint();
paint.setColor(Color.RED); for(int i=0;i<10;i++)
{
canvas.drawBitmap(bmp1[i], ltx[i],lty[i], paint);
}
canvas.drawLine(0, 450, 360, 450, paint);
canvas.drawLine(0, 0, 0, 450, paint);
canvas.drawLine(0, 0, 360, 0, paint);
canvas.drawLine(360, 0, 360, 450, paint);
}
}