使用javascript进行tic tac toe

时间:2013-03-01 07:13:03

标签: javascript

我正在使用html,css和JavaScript编写一个tic tac toe游戏。我创建了从markbox(cell)函数获取输入的按钮和称为wins_condition的deres函数,该函数用于赢得游戏的条件。

在我的代码中,它没有正确地检查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>

1 个答案:

答案 0 :(得分:0)

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

onclick="markbox(this)/>

需要:

onclick="markbox(this)" />

(注意“最后”。

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

尝试使用此代码:

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