100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 华容道源代码android 基于Android的华容道游戏的源代码

华容道源代码android 基于Android的华容道游戏的源代码

时间:2021-09-21 11:01:28

相关推荐

华容道源代码android 基于Android的华容道游戏的源代码

基于Android的华容道游戏的源代码:

相关文件下载在Linux公社的1号FTP服务器里,下载地址:

用户名:

密码:

在 \10月\10月\基于Android的华容道游戏的源代码

示例:

package com.android.test;

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.view.KeyEvent;

import android.view.View;

public class GameView extends View {

private Bitmap[] bmp1 = new Bitmap[10];

int []ltx = new int[10];

int []lty = new int[10];

Rect[] rectpeople = new Rect[10];

int t;

int flagStart;

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);

// TODO Auto-generated constructor stub

//默认第一关

level_01();

//获取资源中的位图

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.general1);

bmp1[3]=BitmapFactory.decodeResource(res, R.drawable.general2);

bmp1[4]=BitmapFactory.decodeResource(res, R.drawable.general3);

bmp1[5]=BitmapFactory.decodeResource(res, R.drawable.general4);

bmp1[6]=BitmapFactory.decodeResource(res, R.drawable.soldier1);

bmp1[7]=BitmapFactory.decodeResource(res, R.drawable.soldier1);

bmp1[8]=BitmapFactory.decodeResource(res, R.drawable.soldier1);

bmp1[9]=BitmapFactory.decodeResource(res, R.drawable.soldier1);

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

b_Result=false;

if(rcSour.top>=rcDest.bottom && rcSour.bottom>rcDest.top) //rcSour在下侧

b_Result=false;

if(rcSour.top

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;

}

flagStart=1;

if (flagStart == 1) {

switch (keyCode) {

case KeyEvent.KEYCODE_DPAD_UP:

if(rectpeople[t].top>0) //在游戏界面内

{

lty[t]-=60;

rectpeople[t].top-=60;

rectpeople[t].bottom-=60;

for(i=0;i<10;i++) //逐个比较是否与其它矩形重叠

{

if(IsHitting(rectpeople[t],rectpeople[i])&& i!=t) //重叠后退回原位

{

lty[t]+=60;

rectpeople[t].top+=60;

rectpeople[t].bottom+=60;

tag[t]=false;

tag[i]=true;

drawRectFrame(canvas);

break;

}

}

}

break;

case KeyEvent.KEYCODE_DPAD_DOWN:

if(rectpeople[0].top==300 && tag[0])

{

flagStart=2;//游戏结束

flagWin = 0; //胜利

}

if(rectpeople[t].bottom<300)

{

lty[t]+=60;

rectpeople[t].top+=60;

rectpeople[t].bottom+=60;

drawRectFrame(canvas);

for(i=0;i<10;i++) //逐个比较是否与其它矩形重叠

{

if(IsHitting(rectpeople[t],rectpeople[i]) && i!=t) //重叠后退回原位

{

lty[t]-=60;

rectpeople[t].top-=60;

rectpeople[t].bottom-=60;

tag[t]=false;

tag[i]=true;

drawRectFrame(canvas);

break;

}

}

}

break;

case KeyEvent.KEYCODE_DPAD_LEFT:

if(rectpeople[t].left>50)

{

ltx[t]-=60;

rectpeople[t].right-=60;

rectpeople[t].left-=60;

for(i=0;i<10;i++) //逐个比较是否与其它矩形重叠

{

if(IsHitting(rectpeople[t],rectpeople[i]) && i!=t) //重叠后退回原位,移动焦点

{

ltx[t]+=60;

rectpeople[t].right+=60;

rectpeople[t].left+=60;

tag[t]=false;

tag[i]=true;

drawRectFrame(canvas);

break;

}

}

}

break;

case KeyEvent.KEYCODE_DPAD_RIGHT:

if(rectpeople[t].right<240)

{

ltx[t]+=60;

rectpeople[t].right+=60;

rectpeople[t].left+=60;

for(i=0;i<10;i++) //逐个比较是否与其它矩形重叠

{

if(IsHitting(rectpeople[t],rectpeople[i]) && i!=t) //重叠后退回原位,移动焦点

{

ltx[t]-=60;

rectpeople[t].right-=60;

rectpeople[t].left-=60;

tag[t]=false;

tag[i]=true;

drawRectFrame(canvas);

break;

}

}

}

break;

case KeyEvent.KEYCODE_MENU:

level++;

selectLever(level%4);

break;

}

postInvalidate();

}

return super.onKeyDown(keyCode, event);

}

private void selectLever(int flevel) {

// TODO Auto-generated method stub

switch(flevel)

{

case 1:

level_01();

break;

case 2:

level_02();

break;

case 3:

level_03();

break;

case 0:

level_04();

break;

}

}

private void level_04() {

// TODO Auto-generated method stub

rectpeople[0] = new Rect(0, 0, 120, 120);

rectpeople[1] = new Rect(0, 120, 120, 180);

rectpeople[2] = new Rect(120, 0, 180, 120);

rectpeople[3] = new Rect(0, 180, 60, 300);

rectpeople[4] = new Rect(180, 0, 240, 120);

rectpeople[5] = new Rect(60, 180, 120, 300);

rectpeople[6] = new Rect(120, 120, 180, 180);

rectpeople[7] = new Rect(120, 180, 180, 240);

rectpeople[8] = new Rect(180, 120, 240, 180);

rectpeople[9] = new Rect(180, 180, 240, 240);

ltx[0] = 0;// 曹操

lty[0] = 0;

ltx[1] = 0;// 关羽

lty[1] = 120;

ltx[2] = 120;

lty[2]=0;

ltx[3]=0;

lty[3]=180;

ltx[4]=180;

lty[4]=0;

ltx[5]=60;

lty[5]=180;

ltx[6]=120;

lty[6]=120;

ltx[7]=120;

lty[7]=180;

ltx[8]=180;

lty[8]=120;

ltx[9]=180;

lty[9]=180;

}

private void level_03() {

// TODO Auto-generated method stub

rectpeople[0] = new Rect(60,0,180,120);

rectpeople[1] = new Rect(60,120,180,180);

rectpeople[2] = new Rect(60,180,120,300);

rectpeople[3] = new Rect(120,180,180,300);

rectpeople[4] = new Rect(0,120,60,240);

rectpeople[5] = new Rect(180,120,240,240);

rectpeople[6] = new Rect(0,0,60,60);

rectpeople[7] = new Rect(0,60,60,120);

rectpeople[8] = new Rect(180,0,240,60);

rectpeople[9] = new Rect(180,60,240,120);

ltx[0]=60;//曹操

lty[0]=0;

ltx[1]=60;//关羽

lty[1]=120;

ltx[2]=60;

lty[2]=180;

ltx[3]=120;

lty[3]=180;

ltx[4]=0;

lty[4]=120;

ltx[5]=180;

lty[5]=120;

ltx[6]=0;

lty[6]=0;

ltx[7]=0;

lty[7]=60;

ltx[8]=180;

lty[8]=0;

ltx[9]=180;

lty[9]=60;

}

private void level_02() {

// TODO Auto-generated method stub

rectpeople[0] = new Rect(60,0,180,120);

rectpeople[1] = new Rect(60,120,180,180);

rectpeople[2] = new Rect(180,0,240,120);

rectpeople[3] = new Rect(0,180,60,300);

rectpeople[4] = new Rect(0,0,60,120);

rectpeople[5] = new Rect(180,180,240,300);

rectpeople[6] = new Rect(0,120,60,180);

rectpeople[7] = new Rect(180,120,240,180);

rectpeople[8] = new Rect(60,180,120,240);

rectpeople[9] = new Rect(120,180,180,240);

ltx[0]=60;//曹操

lty[0]=0;

ltx[1]=60;//关羽

lty[1]=120;

ltx[2]=180;

lty[2]=0;

ltx[3]=0;

lty[3]=180;

ltx[4]=0;

lty[4]=0;

ltx[5]=180;

lty[5]=180;

ltx[6]=0;

lty[6]=120;

ltx[7]=180;

lty[7]=120;

ltx[8]=60;

lty[8]=180;

ltx[9]=120;

lty[9]=180;

}

private void level_01() {

// TODO Auto-generated method stub

rectpeople[0] = new Rect(60,0,180,120);

rectpeople[1] = new Rect(60,120,180,180);

rectpeople[2] = new Rect(0,0,60,120);

rectpeople[3] = new Rect(180,0,240,120);

rectpeople[4] = new Rect(0,120,60,240);

rectpeople[5] = new Rect(180,120,240,240);

rectpeople[6] = new Rect(60,180,120,240);

rectpeople[7] = new Rect(120,180,180,240);

rectpeople[8] = new Rect(0,240,60,300);

rectpeople[9] = new Rect(180,240,240,300);

ltx[0]=60;//曹操

lty[0]=0;

ltx[1]=60;//关羽

lty[1]=120;

ltx[2]=0;

lty[2]=0;

ltx[3]=180;

lty[3]=0;

ltx[4]=0;

lty[4]=120;

ltx[5]=180;

lty[5]=120;

ltx[6]=60;

lty[6]=180;

ltx[7]=120;

lty[7]=180;

ltx[8]=0;

lty[8]=240;

ltx[9]=180;

lty[9]=240;

}

@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, 300, 240, 300, paint);

canvas.drawLine(0, 0, 0, 300, paint);

canvas.drawLine(0, 0, 240, 0, paint);

canvas.drawLine(240, 0, 240, 300, paint);

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。