1

我正在使用 html、css 和 JavaScript 编写一个井字游戏。我创建了按钮来从markbox(cell)函数和 deres 函数中获取输入,称为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>

4

1 回答 1

0

首先是您没有正确关闭 HTML:

onclick="markbox(this)/>

需要是:

onclick="markbox(this)" />

(注意最后的“)。

问题似乎是您在单击其中一个按钮时正在重置符号 var。您将始终检查错误的符号以获胜。制作一个 var last_clicked 并在您的winning_condition 中使用它。

试试这个代码来处理:

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

于 2013-03-01T07:25:21.237 回答