跳棋游戏—backbone框架开发

游戏效果

跳棋效果图

跳棋游戏 -- 【代码详细见附件,本版本暂只支持 谷歌的 chrome 浏览器,其它浏览器后续支持 】

作者:江潇

qq: 2270112418

Version: 0.0.1  2013-6-24   -- 建议使用 chrome 运行、调用本次和后面推出的示例

背景:学了段时间backbone框架,分析跳棋游戏比较适合于backbone的编程思维,其有多些个 collecton + model + view 模型。

      其实本游戏当初我不用backbone时代码量会更少,但用了结构更清晰、且易于扩展。

      如何应用backbone 请参见即将在iteye上连载的 《 逐行分析JS源代码 之 backbone 》[今晚将推出第一部分],欢迎批评指正。

      后期将在分析其它源码时为本案例添加其它诸如 nodeJS 等可连网对战功能。

功能:1、chrome下运行 附件里的 draughts.html,会自动生成棋盘。

      2、选择左上角玩家数量,点击开始,在棋盘上生成对应的玩家棋子

      3、选择任一棋子其周围会显示可跳位置,同常规跳棋

      4、点击可跳位置,棋子会跳到目标位置

      5、玩家在跳动过程中可悔棋一步

      6、当玩家全部跳到对家阵地时,会弹框提示成功

重点:1、如何画出棋盘 及 标识每个坑的位置见下图棋盘坐标图

            通过看上面的图,可得出,棋盘就是两个等边三角形交叉可得,且每个棋子生成有可遵循的规律。

            我们以其所在坐标点为每个点的ID,如 12-0为第一层的ID,11-2,13-2为第二层的ID,坐标数值也    可以按规范取出,详见 draughts.js里的 createCoords 方法

            

function loop( dir ){
	var j = 0,
	      k = 0;
	while( j < 13 ){
		_x = x - j * _lit + k * _lit * 2;
		if( dir ){
			_y = y + _lit * j * 2;
			_c = 12 - j + k*2 + '-' + j;
		} else {
			_y = y + _lit*2*( 16 - j );
			_c = 12 - j + k*2 + '-' + (16 - j);
		}
		me.createCoord( _c, _x, _y, j, k, dir );
		if( k == j ){
			j = k + 1;
			k = 0;
		} else {
			k++;
		}
         }
}
 

 

      2、如何标识出每个坑与邻近坑的关系

           通过上图我们可以看到每个点有六个相连点,左上、右上、左、右、左下、右下,而坐标关系如下

 

refers  = { 
	tl: (_x-1)+'-'+(_y-1),   //左上
	tr: (_x+1)+'-'+(_y-1),  //右上
	ll: (_x-2)+'-'+_y,  //左
	rr: (_x+2)+'-'+_y, //右
	bl: (_x-1)+'-'+(_y+1),  //左下
	br: (_x+1)+'-'+(_y+1) //右上
};
/*
*  上面这所以标出方向,是后面查询间隔跳的关联点是要用到
*/
           如方向上的值 所代表的坐标点在第一步中生成的坐标集合中存在,即意味该点存在,这样找到坑所有的存在的关联。详见 Coords.refer 

 

 

      3、点击某棋子时,如何找出可跳点

          在第二步的基础上,查询A点一周的关联点,是否有棋子,如果没有则可跳,如果有,如点右下方B点已有其它棋子,则查询B的右下方位置C是否空缺,如空则可跳,再判断C一周是是否有棋子,如有再查找同方法的下一个位置是否有空缺,依次递归。详见 Piece.arround / Piece.getSkip / Piece.near / Piece.getNearBy

 

最后,本游戏只在两台电脑上测试通过,欢迎大家试用,如有问题建议,欢迎反馈

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值