(新手问题) 刚学了javascript,写了个五子棋程序,帮忙看看,为什么总实现不了一个判断函数“向右 x方向判断是否有5连珠”

hktk168 2010-11-10 11:07:51


js文件中的代码
//1判断html是否准备好
// 1.1 是-----初始化界面和逻辑数据
//2判断是否有人下棋子
// 2.1 有-----修改界面和相关逻辑数据
//3判断是否有人赢了


//总共下了多少步
var step=0;
var chess_x=7;
var chess_y=7;
function init()
{
//根据table的id获得一个对象
var a=document.getElementById("table1");
//标题
var caption=a.createCaption();
caption.innerHTML="五子棋<br/><br/><br/><br/>";
for (var i = 0 ; i < chess_x ; i++)
{
//插入行
var tr = a.insertRow(i);
//为每行的id属性赋值
tr.setAttribute("id",i);
//插入列
for (var j = 0 ; j < chess_y ; j++)
{
//循环插入7列
var td = tr.insertCell(j);
//为每一个单元格的id赋值 值=行的id*100+列的id
td.setAttribute("id",i*1000+j);
//下面是初始化界面
td.innerHTML = "<img src='img/m.jpg'>";
//设置棋盘没棋子的name 即初始化逻辑界面数据
td.setAttribute("name","nochess");
//为每个单元格设置onclick属性
setOnclick(td);
}
}
}
function setOnclick(cell)
{

cell.onclick=function(){
if(cell.name=="nochess")
{
//下的步数为偶时,代表黑棋
if(step%2==0){
cell.innerHTML="<img src='img/black.jpg'>";
cell.setAttribute("name","black");
}
else{
cell.innerHTML="<img src='img/white.jpg'>";
cell.setAttribute("name","white");
}
}
//传入了步数 判断是否有人赢了
step++;
isAnyoneWin(cell,step);
}
}

function isAnyoneWin(cell,step){
//1 判断当前此棋子是否五连子
// 1.1 没----进行下一步判断
// 1.2 有----判断此棋子的一方赢了
//2 判断当前是否为最后一粒棋子
// 2.1 是----双方平局
// 2.2 否----继续游戏

//下的那粒棋子的位置
var dangqian_x=cell.getAttribute("id")/1000;
var dangqian_y=cell.getAttribute("id")%1000;

//当前相同的棋子数目
var count=0;
//变化后的x y
var x_change=dangqian_x;
var y_change=dangqian_y;

//x轴方向的判断
do{
//变化后的x y
x_change++;
//当向右查找的棋子超出了边界,停止向右查找
if(x_change > chess_x || x_change < 0 || y_change > chess_y || y_change < 0)
//停止向此方向收索
break;
//
var id_change=x_change*1000+y_change;
var cell_next=document.getElementById("id_change");
//当向右查找的棋子不是下的棋子时,停止向右查找
if(cell_next.getAttribute("name")==cell.getAttribute("name")){
count++;
}
else{
break;
}
}while(count<4);
//判断是否五连珠
if(count==5){
if(cell.getAttribute("name")=="white"){
alert("白棋胜!");
}
else if(cell.getAttribute("name")=="black"){
alert("黑棋胜!");
}
}
if(step==chess_x*chess_y){
alert("双方平局");
}

}

function Tuichu()
{
}

function Restart()
{

}
//当使用导入javascript文件这种方法时,必须有下面的代码
//因为html文件的src只是导出js文件 并不会执行此文件
document.onreadystatechange=startGame; //当状态改变时
function startGame()
{
if(document.readyState=="complete")
try{
init();
}
catch(e){document.writeln('系统出现异常----'+e.message+'<br/>');}
}

html文件
<html>
<head>
<title>五子棋</title>
<link href="css/chess.css" type="text/css" rel="stylesheet">
<script src="js/chess.js" type="text/javascript"></script>
</head>
<body id="chess">
<table align="center">
<input type="button" value="退出" id="button1" onclick="Tuichu();"/>
<input type="button" value="重新开始" id="button2" onclick="Restart();">
</table>
<hr/>
<table id="table1" border="0" align="center" ></table>
</body>
</html>

...全文
145 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wushen583090220 2011-07-14
  • 打赏
  • 举报
回复
你好 恰好我也有个五子棋程序 是javascript写的 基本实现了所有功能
http://www.wushen.biz/wispeeder
支持人机对战(内嵌了一个原创的五子棋AI算法),双人对战,网络对战,观众旁观
还支持掉线处理等功能,希望可以交流啊
hktk168 2010-11-10
  • 打赏
  • 举报
回复
补充:本程序的图片发不了 也就三个图片 白子 黑子 棋盘
程序中,我就写了个X方向向右判断的函数,测试时,总实现不了。
程序有注释,应该很好看懂

51,411

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧