javascript井字游戏

tic tac toe with javascript

本文关键字:游戏 javascript      更新时间:2023-09-26

我正在使用html, css和JavaScript编写一个井字游戏。我已经创建了按钮来从markbox(cell)函数和名为winning_condition的函数中获取输入,该函数检查赢得游戏的条件。

在我的代码中,它没有正确检查winning_condition,它遇到问题了吗??

这是我的代码


<html>
<head>
    <title>TIC TAC TOE</title>
    <script type="text/javascript">
    var cell;
    var symbol = "X";
    function markbox(cell)
    {
        if (cell.value == "     ")
        {
        cell.value = symbol;
        if (symbol == "X")
        symbol = "O";
        else
        symbol = "X";
        }
        //else 
        //{
        //alert("This square is occupied");
        //}
        if (winning_condition())
        {
        alert ("You win!");
        return;
        }
        else  if(!winning_condition())
        {
        alert("You loose!");
        }
        else 
        {
        alert("Draw!")
        }
    }
    function winning_condition()
        {
        if(document.f1.b00.value==symbol && document.f1.b01.value==symbol && document.f1.b02.value==symbol)
        return true;
        else if(document.f1.b10.value==symbol && document.f1.b11.value==symbol && document.f1.b12.value==symbol)
        return true;
        else if(document.f1.b20.value==symbol && document.f1.b21.value==symbol && document.f1.b22.value==symbol)
        return true;
        else if(document.f1.b00.value==symbol && document.f1.b10.value==symbol && document.f1.b20.value==symbol)
        return true;
        else if(document.f1.b01.value==symbol && document.f1.b11.value==symbol && document.f1.b21.value==symbol)
        return true;
        else if(document.f1.b02.value==symbol && document.f1.b12.value==symbol && document.f1.b22.value==symbol)
        return true;
        else if(document.f1.b00.value==symbol && document.f1.b11.value==symbol && document.f1.b22.value==symbol)
        return true;
        else if(document.f1.b02.value==symbol && document.f1.b11.value==symbol && document.f1.b20.value==symbol)
        return true;
        }
    function clearBtn()
    {
        status = "X"
        document.f1.b00.value="   ";
        document.f1.b01.value="   ";
        document.f1.b02.value="   ";
        document.f1.b10.value="   ";
        document.f1.b11.value="   ";
        document.f1.b12.value="   ";
        document.f1.b20.value="   ";
        document.f1.b21.value="   ";
        document.f1.b22.value="   ";
    }
    </script>
</head>
<body>
    <div align="center">
    <h1>Tic Tac Toe</h1>
    <form name="f1">
        <input type="button" name="b00" value="     " onclick="markbox(this)"/>
        <input type="button" name="b01" value="     " onclick="markbox(this)"/>
        <input type="button" name="b02" value="     " onclick="markbox(this)/></br>
        <input type="button" name="b10" value="     " onclick="markbox(this)"/>
        <input type="button" name="b11" value="     " onclick="markbox(this)"/>
        <input type="button" name="b12" value="     " onclick="markbox(this)"/></br>
        <input type="button" name="b20" value="     " onclick="markbox(this)"/>
        <input type="button" name="b21" value="     " onclick="markbox(this)"/>
        <input type="button" name="b22" value="     " onclick="markbox(this)"/>
        </br></br></br>
        <input type="reset" value="RESET GAME" onclick="clearBtn()">
    </form>     
    </div>
</body>

第一件事是你没有正确关闭你的HTML:

onclick="markbox(this)/>

必须是:

onclick="markbox(this)" />

(注意末尾的")。

问题似乎是,你正在重置符号var在你点击其中一个按钮的那一刻。你总是会选中错误的符号来获胜。创建一个变量last_clicked,并在winning_condition中使用它。

试试下面的代码:

http://jsfiddle.net/wG9G5/1/