Android--中国象棋

这篇博客分享了作者在Android平台上开发中国象棋应用的实践,提供了主要代码片段,并提供Demo下载链接供读者参考学习。
摘要由CSDN通过智能技术生成

象棋,很多人多接触过,学者写了一个,大神可以指点一下~直接上代码:

贴出主要代码,想要Demo的点击下载:中国象棋Demo

package wyf.ytl;

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.media.MediaPlayer;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
/**
 * 该类是整个程序最主要的类,是主游戏的界面
 * 该界面继承自SurfaceView并实现了SurfaceHolder.Callback接口
 * 其中包含了一个刷帧的线程类
 * 
 */
public class GameView extends SurfaceView implements SurfaceHolder.Callback{
	private TutorialThread thread;//刷帧的线程
	TimeThread timeThread ;
	ChessActivity activity;//声明Activity的引用
	Bitmap qiPan;//棋盘
	Bitmap qizibackground;//棋子的背景图片
	Bitmap win;//胜利的图片
	Bitmap lost;//失败的图片
	Bitmap ok;//确定按钮
	Bitmap vs;//黑方红方VS的图片
	Bitmap right;//向右的指针
	Bitmap left;//向左的指针 
	Bitmap current;//“当前”文字
	Bitmap exit2;//退出按钮图片
	Bitmap sound2;//声音按钮图片
	Bitmap sound3;//当前是否播放了声音
	Bitmap time;//冒号
	Bitmap redtime;//红色冒号
	Bitmap background;//背景图片
	MediaPlayer go;//下棋声音	
	Paint paint;//画笔
	boolean caiPan = true;//是否为玩家走棋
	boolean focus = false;//当前是否有选中的棋子
	int selectqizi = 0; //当然选中的棋子

	int startI, startJ;//记录当前棋子的开始位置
	int endI, endJ;//记录当前棋子的目标位置
	Bitmap[] heiZi = new Bitmap[7];//黑子的图片数组
	Bitmap[] hongZi = new Bitmap[7];//红子的图片数组
	Bitmap[] number = new Bitmap[10];//数字的图片数组,用于显示时间 
	Bitmap[] redNumber = new Bitmap[10];//红色数字的图片,用于显示时间 
	
	GuiZe guiZe;//规则类

	int status = 0;//游戏状态。0游戏中,1胜利, 2失败
	int heiTime = 0;//黑方总共思考时间
	int hongTime = 0;//红方总共思考时间 

	int[][] qizi = new int[][]{//棋盘
		{2,3,6,5,1,5,6,3,2},
		{0,0,0,0,0,0,0,0,0},
		{0,4,0,0,0,0,0,4,0},
		{7,0,7,0,7,0,7,0,7},
		{0,0,0,0,0,0,0,0,0},

		{0,0,0,0,0,0,0,0,0},
		{14,0,14,0,14,0,14,0,14},
		{0,11,0,0,0,0,0,11,0},
		{0,0,0,0,0,0,0,0,0},
		{9,10,13,12,8,12,13,10,9},
	};
	
	public GameView(Context context,ChessActivity activity) {//构造器
		super(context);
		this.activity = activity;//得到Activity的引用
		getHolder().addCallback(this);
		go  = MediaPlayer.create(this.getContext(), R.raw.go);//加载下棋的声音
		this.thread = new TutorialThread(getHolder(), this);//初始化刷帧线程
		this.timeThread = new TimeThread(this);//初始化思考时间的线程
		init();//初始化所需资源
		guiZe = new GuiZe();//初始化规则类
	}
	
	public void init(){//初始化方法 
		paint = new Paint();//初始化画笔
		qiPan = BitmapFactory.decodeResource(getResources(), R.drawable.qipan);//棋盘图片
		qizibackground = BitmapFactory.decodeResource(getResources(), R.drawable.qizi);//棋子的背景
		win = BitmapFactory.decodeResource(getResources(), R.drawable.win);//胜利的图片
		lost = BitmapFactory.decodeResource(getResources(), R.drawable.lost);//失败的图片
		ok = BitmapFactory.decodeResource(getResources(), R.drawable.ok);//确定按钮图片
		vs = BitmapFactory.decodeResource(getResources(), R.drawable.vs);//vs字样的图片
		right = BitmapFactory.decodeResource(getResources(), R.drawable.right);//向右的指针
		left = BitmapFactory.decodeResource(getResources(), R.drawable.left);//向左的指针
		current = BitmapFactory.decodeResource(getResources(), R.drawable.current);//文字“当前”
		exit2 = BitmapFactory.decodeResource(getResources(), R.drawable.exit2);//退出按钮图片
		sound2 = BitmapFactory.decodeResource(getResources(), R.drawable.sound2);//声音按钮图片
		time = BitmapFactory.decodeResource(getResources(), R.drawable.time);//黑色冒号
		redtime = BitmapFactory.decodeResource(getResources(), R.drawable.redtime);//红色冒号
		sound3 = BitmapFactory.decodeResource(getResources(), R.drawable.sound3);
		
		heiZi[0] =
  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值