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
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论








收起资源包目录





































































































共 3021 条
- 1
- 2
- 3
- 4
- 5
- 6
- 31

梅青月
- 粉丝: 4
- 资源: 54
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


会员权益专享
安全验证
文档复制为VIP权益,开通VIP直接复制

- 1
- 2
前往页