• 周日. 5 月 31st, 2026

物嫩软件资讯网

软件资讯来物嫩

python双人格斗游戏代码_百行 HTML5 代码实现四种双人对弈游戏

admin@wunen

4 月 4, 2025

百行 HTML5 代码实现四种双人对弈游戏

于 丙超

2012 年 6 月 28 日发布

目标

要做一个完整的双人对弈游戏,至少要做如下事情,第一步:绘制棋盘。不同的棋类游戏棋盘不同,这一点需要进行动态处理;第二步:绘制棋子。需要说明的是,围棋,五子棋等这些棋子都是圆的啊,请不要为了图片苦恼,在 HTML5 时代,我们用代码就可以实现立体圆形棋子;第三步:判断落子事件。当然是要定位手指的点击位置,这四种棋中,有的是落在框里面的,有的却是落在纵横交错的棋盘十字线上,需要动态处理;第四步:判断落子规则。下棋都有规则,不要因为代码少,就将规则打折扣,否则程序不成熟,会变成小朋友的玩具了;第五步:判断输赢。最后,我们要判断输赢。也就是要数子,这个事情必须由程序来完成,因为下棋总得需要一个裁判嘛;第六步:就是平板电脑时代,我们得实现离线应用。这个太重要了,否则,要是在台式电脑上,接根网线玩的游戏,已经遍地都是了,您写得再牛,有什么用?就是要移动,在没有信号的地方,才有市场,现在平板,智能手机这么多,在没有网络信号的地方,掏出移动设备来下棋,才是一件很牛的事情。

绘制棋盘

前面说了围棋、五子棋、四子棋和翻转棋的棋盘并不相同,围棋是纵横 18 个格,其他三种棋则是 8 个格。所以绘制棋盘是需要有参数。这是个小问题,大问题是,选择什么方法来绘制棋盘?

HTML5 框架下,有至少 3 种方法:第一种,用 Canvas 画线;第二种,用 DIV,CSS3 里面增加了行列属性;第三种,用 table 标签。

用哪一种速度最快,代码少呢?答案是:第三种。多少有点失望啊,HTML5 不是万能的。详细代码如下:this.board=function(name,width,height,rowBak,colBak){ /* 画棋盘 */

nameBak=name;

if(“turnover”==name){row=8;col=8;}else if(“gogame”==name){row=18;col=18;}

var aW=Math.floor(width/(col+2)),aH=Math.floor(height/(row+2));

minL=(aW>aH?aH:aW)-4;// 这个减法很重要,否则填空时会把表格撑大

var array=new Array(”

“+

height=\””+(aH*row)+”\”>”);

for(var i=0;i

array.push(”

“);

for(var j=0;j

“+

evt(i,j,minL,minL,aW*j+minL/2+8,aH*i+minL/2)+””);}

if(nameBak!=”four”&&nameBak!=”turnover”)/* 将事件添加到表格中 */

array.push(evt(i,col,minL,minL,aW*col+minL/2+8,aH*i+minL/2));

array.push(”

“);

}

if(nameBak!=”four”&&nameBak!=”turnover”){

for(var j=0;j<=col;j++){

array.push(evt(row,j,minL,minL,aW*j+minL/2+8,aH*row+minL/2));

}

}

document.write(array.join(“”)+”

“);

setClick(row,col,minL,minL);/* 初始化事件 */

start();/* 初始化棋子 */

}

上面代码中,最重要的是标黑体的第 6 行代码,这里面有两个诀窍,第一个就是 table 的定义,第二个就是使用了 Array 数组。为什么要使用数组,而不是定义一个字符串呢?答案是优化,就是 Array 数组的 push 方法的速

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注