package com.bn.chess;
import static com.bn.chess.Chess_LoadUtil.DST;
import static com.bn.chess.LoadUtil.IsMate;
import static com.bn.chess.LoadUtil.LegalMove;
import static com.bn.chess.LoadUtil.MakeMove;
import static com.bn.chess.LoadUtil.SearchMain;
import static com.bn.chess.LoadUtil.mvResult;
import static com.bn.chess.ViewConstant.*;
import java.util.Stack;
import android.content.Context;
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.RectF;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.widget.Toast;
public class GameView extends SurfaceView implements SurfaceHolder.Callback{
Chess_DJB_Activity father;
Bitmap[][] chessBitmap;//象棋棋子图片
Bitmap chessZouQiflag;//标志走棋
Bitmap paotai;//炮台
Bitmap paotai2;//炮台边沿的时候
Bitmap paotai1;
Bitmap chuhe;//楚河图片
Paint paint;//画笔
Bitmap chessQipan2;//棋盘边框
Bitmap huiqi;//悔棋图片
Bitmap chonWan;//重玩文字
Bitmap[] iscore=new Bitmap[10];//数字图
Bitmap dunhao;//顿号
Bitmap beijint;//背景图
Bitmap minueBeijint;//菜单背景图
Bitmap ifPlayChess;//标识下棋方的背景
Bitmap isPlaySound;//开启声音
Bitmap noPlaySound;//关闭声音
Bitmap start;//开始
Bitmap suspend;//暂停
Bitmap nandutiaoZ;//难度
Bitmap nonandutiaoZ;//难度不可用
Bitmap guanggao1[]=new Bitmap[2];//广告条1
Bitmap guanggao2;//广告条2
Bitmap winJiemian;//赢界面
Bitmap loseJiemian;//输界面
Bitmap fugaiTu;//覆盖图
Bitmap queDinButton;//确定按钮
Bitmap beijint3;//拖动条背景
Bitmap beijint4;//剪裁框背景
int[][] color=new int[20][3];
int length;//难度数
int huiqibushu=0;
float guanggao2X=0;//
boolean playChessflag;//下棋方标志位,false为黑方下棋
SurfaceHolder holder;//画布
Canvas canvas;
int ucpcSquares[]=new int[256];
Stack<StackplayChess> stack=new Stack<StackplayChess>();
float xMove;
float yMove;//移动坐标
boolean cMfleg=true;//触摸是否有效
boolean isFlage;//是否为第一次下棋
boolean xzflag = false;//是否为选中,选中中需要移动的话就绘制移动
boolean threadFlag=true;//线程是否运行
int xzgz = 0;//选中的初始格子
boolean flag;//是否为移动标志
boolean huiqiFlag=false;//点击处为悔棋标志
boolean chonwanFlag=false;//点击处为重玩标志
boolean isnoNanDu=true;//难度是否可选
boolean dianjiNanDu;//点击处为难度
boolean dianjiXinJu;//点击处为新局
boolean dianjiKaiShi;//点击处为开始
boolean dianjishengyin;//点击为声音区域
boolean dianjiJDT;//点击处为拖动
boolean dianjiQueDing;//点击处为确定按钮
boolean nanduBXZ;
int bzcol;
int bzrow;
public GameView(Context context) {
super(context);
this.father=(Chess_DJB_Activity)context;
this.getHolder().addCallback(this);//设置生命周期回调接口的实现者
paint = new Paint();//创建画笔
paint.setAntiAlias(true);//打开抗锯齿
isnoStart=false;
length=nanduXS*4;
initColer();//初始化难度滚动条颜色数组
LoadUtil.Startup();//初始化棋盘
initArrays();//初始化数组
initBitmap(); ///初始化图片
LoadUtil.sdPlayer=0;//下棋方为
endTime=zTime;//总时间
}
public void initArrays()
{
for(int i=0;i<256;i++)
{
ucpcSquares[i]=LoadUtil.ucpcSquares[i];
}
}
@Override
public void onDraw(Canvas canvas)
{
canvas.drawColor(Color.argb(255, 0, 0, 0));
canvas.drawBitmap(beijint,sXtart,sYtart, null);
if(isnoStart)//如果开始了
{
onDrawWindowindow(canvas,ViewConstant.sXtart,ViewConstant.sYtart);
if(flag)
{
float left=xMove>sXtart+5*xSpan?windowXstartLeft:windowXstartRight;
float top=windowYstart;
float right=left+windowWidth;
float bottom=top+windowHeight;
canvas.save();
canvas.clipRect(new RectF(left,top,right,bottom));
onDrawWindowindow(canvas,sXtartCk,sYtartCk);//小窗口
canvas.restore();
canvas.drawBitmap(beijint4,left-6,top-6, null);
}
}else
{
canvas.drawBitmap(guanggao1[(int) ((Math.abs(guanggao2X/40)%2))],sXtart,sYtart, null);
}
onDrawWindowMenu(canvas,ViewConstant.sXtart,ViewConstant.sYtart);
if(yingJMflag)//如果是赢了
{
canvas.drawBitmap(fugaiTu,sXtart,sYtart, null);//画覆盖图
canvas.drawBitmap(winJiemian,sXtart+2.5f*xSpan,sYtart+5f*ySpan, null);//赢背景盖图
if(dianjiQueDing)
{
canvas.drawBitmap(scaleToFit(queDinButton,1.2f),sXtart+3.7f*xSpan,sYtart+8.3f*ySpan, null);//确定按钮
}else
canvas.drawBitmap(queDinButton,sXtart+3.9f*xSpan,sYtart+8.5f*ySpan, null);//确定按钮
}
else if(shuJMflag)//输了
{
canvas.drawBitmap(fugaiTu,sXtart,sYtart, null);//画覆盖图
canvas.drawBitmap(loseJiemian,sXtart+2.5f*xSpan,sYtart+5f*ySpan, null);//赢背景盖图
if(dianjiQueDing){
canvas.drawBitmap(scaleToFit(queDinButton,1.2f),sXtart+3.7f*xSpan,sYtart+8.3f*ySpan, null);//确定按钮
}else
canvas.drawBitmap(queDinButton,sXtart+3.9f*xSpan,sYtart+8.5f*ySpan, null);//确定按钮
}
}
public void onDrawWindowindow(Canvas canvas,float sXtart,float sYtart)
{
canvas.drawBitmap(chessQipan2,sXtart,sYtart, null);
//绘制红色填充矩形
paint.setColor(Color.RED);//设置画笔颜色
paint.setColor(Color.RED);//设置画笔颜色
paint.setStrokeWidth(3);//设置线的粗细
for(int i=0;i<10;i++)//画横线
{
canvas.drawLine(xSpan+sXtart,ySpan+ySpan*i+sYtart, sXtart+xSpan*9, sYtart+ySpan+ySpan*i, paint);
}
for(int i=0;i<9;i++)//画竖线
{
canvas.drawLine(sXtart+xSpan+i*xSpan,sYtart+ySpan, sXtart+xSpan+xSpan*i, sYtart+ySpan*10, paint);
}
canvas.drawLine(sXtart+xSpan*4,sYtart+ySpan, sXtart+xSpan*6, sYtart+ySpan*3, paint);//绘制九宫斜线
canvas.drawLine(sXtart+xSpan*6,sYtart+ySpan, sXtart+xSpan*4, sYtart+ySpan*3, paint);
canvas.drawLine(sXtart+xSpan*4,sYtart+ySpan*8, sXtart+xSpan*6, sYtart+ySpan*10, paint);
canvas.drawLine(sXtart+xSpan*6,sYtart+ySpan*8, sXtart+xSpan*4, sYtart+ySpan*10, paint);
//绘制边框
paint.setStrokeWidth(5);//设置线的粗细
canvas.drawLine(sXtart+0.8f*xSpan,sYtart+0.8f*ySpan, sXtart+9.2f*xSpan, sYtart+0.8f*ySpan, paint);
canvas.drawLine(sXtart+0.8f*xSpan,sYtart+0.8f*ySpan, sXtart+0.8f*xSpan, sYtart+10.2f*ySpan, paint);
canvas.drawLine(sXtart+9.2f*xSpan,sYtart+0.8f*ySpan, sXtart+9.2f*xSpan, sYtart+10.2f*ySpan, paint);
canvas.drawLine(sXtart+0.8f*xSpan, sYtart+10.2f*ySpan,sXtart+9.2f*xSpan, sYtart+10.2f*ySpan, paint);
canvas.drawBitmap(chuhe,sXtart+xSpan+1.8f,sYtart+5*ySpan+1.0f, null);//绘制楚河
canvas.drawBitmap(paotai,sXtart+2*xSpan-chessR*0.86f,sYtart+3*ySpan-chessR*0.86f, null);//绘制炮台
canvas.drawBitmap(paotai,sXtart+2*xSpan-chessR*0.86f,sYtart+8*ySpan-chessR*0.86f, null);//绘制炮台
canvas.drawBitmap(paotai,sXtart+8*xSpan-chessR*0.86f,sYtart+3*ySpan-chessR*0.86f, null);//绘制炮台
canvas.drawBitmap(paotai,sXtart+8*xSpan-chessR*0.86f,sYtart+8*ySpan-chessR*0.86f, null);//绘制炮台
canvas.drawBitmap(paotai2,sXtart+1*xSpan-chessR*0.86f,sYtart+4*ySpan-chessR*0.86f, null);//绘制兵台
canvas.drawBitmap(paotai,sXtart+3*xSpan-chessR*0.86f,sYtart+4*ySpan-chessR*0.86f, null);//绘制兵炮台
canvas.drawBitmap(paotai,sXtart+5*xSpan-chessR*0.86f,sYtart+4*ySpan-chessR*0.86f, null);//绘制兵炮台
canvas.drawBitmap(paotai,sXtart+7*xSpan-chessR*0.86f,sYtart+4*ySpan-chessR*0.86f, null);//绘制兵炮台
canvas.drawBitmap(paotai1,sXtart+9*xSpan-chessR*0.86f,sYtart+4*ySpan-chessR*0.86f, null);//绘制兵炮台
canvas.drawBitmap(paotai2,sXtart+1*xSpan-chessR*0.86f,sYtart+7*ySpan-chessR*0.86f, null);//绘制兵台
canvas.drawBitmap(paotai,sXtart+3*xSpan-chessR*0.86f,sYtart+7*ySpan-chessR*0.86f, null);//绘制兵炮台
canvas.drawBitmap(paotai,sXtart+5*xSpan-chessR*0.86f,sYtart+7*ySpan-chessR*0.86f, null);//绘制兵炮台
canvas.drawBitmap(paotai,sXtart+7*xSpan-chessR*0.86f,sYtart+7*ySpan-chessR*0.86f, null);//绘制兵炮台
canvas.drawBitmap(paotai1,sXtart+9*xSpan-chessR*0
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
基于安卓的中国象棋游戏app (141个子文件)
resources.ap_ 1006KB
Chess_DJB.apk 1.01MB
GameView.class 19KB
LoadUtil.class 8KB
Constant.class 5KB
Chess_DJB_Activity.class 4KB
Chess_LoadUtil.class 3KB
WelcomeView.class 3KB
ViewConstant.class 2KB
WelcomeView$1.class 2KB
R$drawable.class 2KB
GameView$2.class 2KB
GameView$1.class 1KB
WhichView.class 989B
Chess_DJB_Activity$1.class 897B
MyComparator.class 846B
R$raw.class 517B
R.class 491B
R$string.class 409B
StackplayChess.class 407B
R$layout.class 376B
BuildConfig.class 333B
R$attr.class 322B
.classpath 853B
classes.dex 45KB
GameView.java 33KB
Constant.java 16KB
LoadUtil.java 14KB
Chess_DJB_Activity.java 4KB
R.java 4KB
WelcomeView.java 3KB
Chess_LoadUtil.java 3KB
ViewConstant.java 2KB
MyComparator.java 356B
StackplayChess.java 214B
BuildConfig.java 154B
floor.jpg 287KB
beijintu.jpg 100KB
guanggao1.jpg 61KB
floor2.jpg 29KB
huiqi.jpg 22KB
nanduxuanz.jpg 21KB
beijing3.jpg 21KB
start.jpg 21KB
queding.jpg 21KB
zhanting.jpg 21KB
chonwan.jpg 20KB
chuhe.jpg 20KB
beijing.jpg 20KB
baina.jpg 19KB
nonandu.jpg 16KB
bnkjs.jpg 16KB
win.mp3 72KB
loss.mp3 12KB
noxiaqi.mp3 7KB
zouqi.mp3 6KB
dong.mp3 5KB
wanjiazouqi.mp3 2KB
yingjiemian.png 38KB
shuijiemian.png 38KB
yingjiemian.png 35KB
shuijiemian.png 35KB
beijingkuangtu.png 33KB
beijingkuangtu.png 30KB
guanbishengy.png 9KB
caidanxiaqifang.png 8KB
guanggao2.png 8KB
kaiqishengy.png 8KB
bb.png 7KB
rn.png 7KB
bk.png 7KB
rk.png 7KB
rb.png 7KB
bc.png 7KB
rr.png 7KB
rp.png 7KB
rc.png 7KB
ra.png 7KB
bn.png 7KB
br.png 7KB
bp.png 7KB
ba.png 6KB
guanbishengy.png 6KB
caidanxiaqifang.png 6KB
kaiqishengy.png 6KB
icon.png 5KB
shuyingfugai.png 5KB
paotai.png 4KB
paotai2.png 4KB
paotai1.png 4KB
d8.png 3KB
d9.png 3KB
d6.png 3KB
guanggao2.png 3KB
d3.png 3KB
d0.png 3KB
d2.png 3KB
d5.png 3KB
d7.png 3KB
d4.png 3KB
共 141 条
- 1
- 2
资源评论
- number_1234562018-05-18不错,拿来看看
- lsqfly20052018-06-14习惯5星,看了再评
sinat_24915017
- 粉丝: 2
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- python语言解决背包问题,使用递归和动态规划两种思路并比较运行速度
- 基于Django和Celery的中国知网(CNKI)爬虫及数据可视化设计源码
- 基于C++实现的斐波那契数列
- 基于SSM框架的Java家庭财务管理设计源码
- UDP转发脚本udp-forwarding-udp-forward-master.zip
- tio来开发udptio-udp-showcase-master.zip
- 基于Scala的Spark数字仓库推荐系统设计源码
- 基于Django的博客系统设计源码
- 基于Node.js和AngularJS的JsGen社区网站系统设计源码
- 基于Vue和Echarts的数据可视化大屏设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功