判断玩家是否赢了井字游戏_井字游戏

判断玩家是否赢了井字游戏

<脚本>

// **************************************************** ******************************************

//井字游戏,由iam_clint撰写(

www.thescripts.com ),您可以在任何希望的网站上使用它。

// **************************************************** ******************************************

//全局变量声明

var turn = 0;

var comp = 0;

var computer;

var active = false;

window.onload = resetGame; //在加载窗口时开始游戏。

函数setXO(row,col){

//此函数将X或O设置在适当的位置

如果(有效){

var tbl = document.getElementById(“ ttt”);

var cRow = tbl.getElementsByTagName(“ tr”)[行];

var cCol = cRow.getElementsByTagName(“ td”)[col];

if(cCol.getAttribute(“ xo”)==“ 0”){//确保您单击的位置尚未标记

如果(turn == 2 && document.getElementById(“ computer”)。checked && comp == 0){alert(“不是您的回合!”); 返回false; } //检查以确保轮到您了。

cCol.setAttribute(“ xo”,turn); //将玩家编号设置到该位置

document.getElementById(“ write”)。play(); //播放音频文件,因为您单击并可以使用该位置;

if(turn == 1){turn = 2; cCol.innerHTML =“ <img src ='x.gif'>”; } else {turn = 1; cCol.innerHTML =“ <img src ='o.gif'>”; comp = 0; } //将玩家形象设置在适当的位置。

updateTurn(); //更新打开它的人

}

}

}

函数updateTurn(){

//更新轮到谁了。

如果(有效){

checkWinner();

checkDraw();

document.getElementById(“ turn”)。innerHTML =“玩家” + turn +“的转弯”; //在萤幕上说谁转动了

如果(document.getElementById(“ computer”)。checked && turn == 2){

computer = window.setTimeout(“ computerMove()”,random(500,3000)); //如果在玩计算机,它会随机超时以使其移动,因此不会立即发生。

}

}

}

函数computerMove(){

//将计算机标记放置在未使用的板上随机位置。

var tbl = document.getElementById(“ ttt”);

var row = random(0,2)

var col = random(0,2)

var place = tbl.getElementsByTagName(“ tr”)[row] .getElementsByTagName(“ td”)[col] .getAttribute(“ xo”);

while(place!= 0){

行=随机(0,2)

col = random(0,2)

位置= tbl.getElementsByTagName(“ tr”)[行] .getElementsByTagName(“ td”)[col] .getAttribute(“ xo”);

}

comp = 1;

setXO(row,col);

}

函数checkDraw(){

//检查是否所有地方都已满,没有找到获胜者。 (猫游戏)

var draw = true;

var tbl = document.getElementById(“ ttt”);

var rows = tbl.getElementsByTagName(“ tr”);

对于(i = 0; i <rows.length; i ++){

var cols = rows [i] .getElementsByTagName(“ td”);

对于(c = 0; c <cols.length; c ++){

如果(cols [c] .getAttribute(“ xo”)== 0){draw = false; }

}

}

if(draw){alert(“ Cats Game!”); resetGame(); 返回false; }

}

函数checkWinner(){

//检查获胜者

var tbl = document.getElementById(“ ttt”);

var check = new Array(23); //有24种可能的方式可以在井字游戏中赢得胜利,即横穿,横穿和对角线。 他们如下

var ps = new Array(2);

//记住这是从0开始而不是从1开始。

//因此在此数组(检查)中,我将按顺序获得3套。 集1将是check [0] check [1]和check [2],因此它说第一行(“ tr”)[0]第一个单元格(“ td”)[0]并保存

//接着检查第1行(“ tr”)[1]和单元格1(“ td”)[1],然后检查第2行单元格2,所以现在check [0] check [1]和check [2]是标记相应区域的人的值。 这一切都有可能继续。

check [0] = tbl.getElementsByTagName(“ tr”)[0] .getElementsByTagName(“ td”)[0] .getAttribute(“ xo”); //第0行0行-从左上角到右下角开始的对角线

check [1] = tbl.getElementsByTagName(“ tr”)[1] .getElementsByTagName(“ td”)[1] .getAttribute(“ xo”); //第1行第1行

check [2] = tbl.getElementsByTagName(“ tr”)[2] .getElementsByTagName(“ td”)[2] .getAttribute(“ xo”); //第2行2

check [3] = tbl.getElementsByTagName(“ tr”)[0] .getElementsByTagName(“ td”)[2] .getAttribute(“ xo”); //第0行2行-从右上角到左下角开始对角线

check [4] = tbl.getElementsByTagName(“ tr”)[1] .getElementsByTagName(“ td”)[1] .getAttribute(“ xo”); //第1行第1行

check [5] = tbl.getElementsByTagName(“ tr”)[2] .getElementsByTagName(“ td”)[0] .getAttribute(“ xo”); //第2行0

check [6] = tbl.getElementsByTagName(“ tr”)[0] .getElementsByTagName(“ td”)[0] .getAttribute(“ xo”); //第0行col 0-这会直接向上和向下检查col 0

check [7] = tbl.getElementsByTagName(“ tr”)[1] .getElementsByTagName(“ td”)[0] .getAttribute(“ xo”); //第1行0行

check [8] = tbl.getElementsByTagName(“ tr”)[2] .getElementsByTagName(“ td”)[0] .getAttribute(“ xo”); //第2行0

check [9] = tbl.getElementsByTagName(“ tr”)[0] .getElementsByTagName(“ td”)[1] .getAttribute(“ xo”); //第0行col 1-这会直接向上和向下检查col 1

check [10] = tbl.getElementsByTagName(“ tr”)[1] .getElementsByTagName(“ td”)[1] .getAttribute(“ xo”); //第1行第1行

check [11] = tbl.getElementsByTagName(“ tr”)[2] .getElementsByTagName(“ td”)[1] .getAttribute(“ xo”); //第2行1

check [12] = tbl.getElementsByTagName(“ tr”)[0] .getElementsByTagName(“ td”)[2] .getAttribute(“ xo”); //第0行2列-这会直接向上和向下检查第2列

check [13] = tbl.getElementsByTagName(“ tr”)[1] .getElementsByTagName(“ td”)[2] .getAttribute(“ xo”); //第1行2

check [14] = tbl.getElementsByTagName(“ tr”)[2] .getElementsByTagName(“ td”)[2] .getAttribute(“ xo”); //第2行2

check [15] = tbl.getElementsByTagName(“ tr”)[0] .getElementsByTagName(“ td”)[0] .getAttribute(“ xo”); //第0行第0行-左右开始检查第0行

check [16] = tbl.getElementsByTagName(“ tr”)[0] .getElementsByTagName(“ td”)[1] .getAttribute(“ xo”); //第0行1

check [17] = tbl.getElementsByTagName(“ tr”)[0] .getElementsByTagName(“ td”)[2] .getAttribute(“ xo”); //第0行2

check [18] = tbl.getElementsByTagName(“ tr”)[1] .getElementsByTagName(“ td”)[0] .getAttribute(“ xo”); //第1行第0行-从左和右开始检查第1行

check [19] = tbl.getElementsByTagName(“ tr”)[1] .getElementsByTagName(“ td”)[1] .getAttribute(“ xo”); //第1行第1行

check [20] = tbl.getElementsByTagName(“ tr”)[1] .getElementsByTagName(“ td”)[2] .getAttribute(“ xo”); //第1行2

check [21] = tbl.getElementsByTagName(“ tr”)[2] .getElementsByTagName(“ td”)[0] .getAttribute(“ xo”); //第2行第0行-这将左右开始检查第2行

check [22] = tbl.getElementsByTagName(“ tr”)[2] .getElementsByTagName(“ td”)[1] .getAttribute(“ xo”); //第2行1

check [23] = tbl.getElementsByTagName(“ tr”)[2] .getElementsByTagName(“ td”)[2] .getAttribute(“ xo”); //第2行2

var b = 0

//而不是用一堆if语句检查每个人,这是我检查获胜者的方式

对于(i = 0; i <= check.length; i ++){

if(b == 3){//如果我们设置了数组ps的前3个,我们将检查获胜。

if(ps [0]!= 0 && ps [1]!= 0 && ps [2]!= 0){//确保所有3个都不为空

if(ps [0] == ps [1] && ps [1] == ps [2]){return win(ps [2]); } //在这个循环中,它设置了一个由3个项目ps []组成的数组,现在记住它一次执行3个,因为井字游戏中有3行和3个列。 因此,它使我们的前3种可能性得到了分别为check [0] check [1]和check [2]的信息,然后它会考虑在这些地方是否有赢家,因此它说ps [0] == ps [1] && ps [1] == ps [2],因为如果0 = 1和1 = 2,则意味着所有3个标记均由同一玩家做出。

}

b = 0 //将变量重置为0,以便可以获取下3种可能性。

}

ps [b] =检查[i]; //将可能性设置为数组。

b ++; //仅将1加到变量b

}

}

功能win(玩家){

document.getElementById(“ turn”)。innerHTML =“ <font size = '20'color ='red'>玩家“ + player +”获胜!</ font>”; //简单地用红色大文字说出谁赢了!

document.getElementById(“ win”)。play(); //播放音频文件

var tbl = document.getElementById(“ ttt”);

var rows = tbl.getElementsByTagName(“ tr”);

for(i = 0; i <rows.length; i ++){//此循环将所有广告位设置为烟花,gif

var cols = rows [i] .getElementsByTagName(“ td”);

对于(c = 0; c <cols.length; c ++){

cols [c] .innerHTML =“ <img src ='fireworks.gif'>”;

}

}

活动=假; //告诉游戏未运行的所有内容

返回false;

}

函数random(min,max){

//只是一个使随机数更容易的函数。

random_num = Math.round((Math.random()* max)+ min)

返回random_num

}

函数resetGame(){

//重置游戏

active = true; //告诉游戏一切

document.getElementById(“ buttons”)。play(); //因为单击了一个按钮,所以播放音频文件。

转= 1; //设置轮到谁,1 =玩家1和2 =玩家2

comp = 0; //将comp设置为0

var tbl = document.getElementById(“ ttt”);

var rows = tbl.getElementsByTagName(“ tr”);

for(i = 0; i <rows.length; i ++){//将所有属性设置回0(此处没有人标记),并设置空白图像,因此没有s的X或O

var cols = rows [i] .getElementsByTagName(“ td”);

对于(c = 0; c <cols.length; c ++){

cols [c] .innerHTML =“ <img src ='blank.gif'>”;

cols [c] .setAttribute(“ xo”,“ 0”);

}

}

updateTurn();

}

</ script>

<EMBED NAME =“ write” id =“ write” SRC =“ write.wav” LOOP = FALSE AUTOSTART = FALSE HIDDEN = TRUE MASTERSOUND>

<EMBED NAME =“ buttons” id =“ buttons” SRC =“ buttons.wav” LOOP = FALSE AUTOSTART = FALSE HIDDEN = TRUE MASTERSOUND>

<EMBED NAME =“ start” id =“ start” SRC =“ start.wav” LOOP = FALSE AUTOSTART = true隐藏= TRUE MASTERSOUND>

<EMBED NAME =“ win” id =“ win” SRC =“ win.wav” LOOP = FALSE AUTOSTART = FALSE HIDDEN = TRUE MASTERSOUND>

<body bgcolor =“#000000”>

<center> <font color =“ white”>播放器1:<img src =“ x.gif”>&nbsp;&nbsp;&nbsp;&nbsp; <font color =“ white”>播放器2:<img src =“ o。 gif“>

<br>

<table style =“ border-top:1px solid orange;边框左:1px solid orange; border-bottom:1px solid orange; border-right:1px solid orange;”> <tr> <td style =“ color:white ;“ align =“ center”> <b>游戏选项<tr> <td> <输入type =“ checkbox” id =“ computer” name =“ computer” onclick =“ resetGame();”> <span style =“ color: white;“>对战计算机</ span> <tr> <td align =” center“> <img src =” reset.jpg“ onclick =” resetGame();“ style =“ cursor:pointer;”> </ table>

<table border = 0 align =“ center” width =“ 400” height =“ 400” style =“ background:url('board.jpg');”>

<tbody id =“ ttt” name =“ ttt”>

<tr> <td width =“ 100” height =“ 100” onclick =“ setXO(0,0);”> <img src =“ blank.gif”> </ td> <td width =“ 100” height = “ 100” onclick =“ setXO(0,1);”> <img src =“ blank.gif”> </ td> <td width =“ 100” height =“ 100” onclick =“ setXO(0,2) ;“> <img src =” blank.gif“> </ td> </ tr>

<tr> <td width =“ 100” height =“ 100” onclick =“ setXO(1,0);”> <img src =“ blank.gif”> </ td> <td width =“ 100” height = “ 100” onclick =“ setXO(1,1);”> <img src =“ blank.gif”> </ td> <td width =“ 100” height =“ 100” onclick =“ setXO(1,2) ;“> <img src =” blank.gif“> </ td> </ tr>

<tr> <td width =“ 100” height =“ 100” onclick =“ setXO(2,0);”> <img src =“ blank.gif”> </ td> <td width =“ 100” height = “ 100” onclick =“ setXO(2,1);”> <img src =“ blank.gif”> </ td> <td width =“ 100” height =“ 100” onclick =“ setXO(2,2) ;“> <img src =” blank.gif“> </ td> </ tr>

</ tbody>

</ table>

<span id =“ turn”> </ span>

这是我用电脑播放器制作的井字游戏的示例。 附件包含与此相关的所有图像和音频文件。

---没有代码标签,因为它们导致帖子在此特定帖子上不可见-

翻译自: https://bytes.com/topic/javascript/insights/730449-tic-tac-toe

判断玩家是否赢了井字游戏

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值