Javascript 在Tic-Tac-Toe中声明Draw的正确语法

Javascript 在Tic-Tac-Toe中声明Draw的正确语法,javascript,jquery,Javascript,Jquery,我正在做一个井字游戏。有人已经教过我如何宣布获胜者并停止进一步比赛 有两个长期存在的问题。第一种情况是,当wins直接通过时,计数器将1添加到x wins,2添加到o wins。第二个问题是我不能让比赛打成平局。如果没有结果,我尝试过其他方法 这是整个js,游戏可以在以下位置看到: 一旦你发现一个赢家,你就不会打破你的“每个”循环。我认为这会奏效: $('.square').each(function () { if (winner) { return; }

我正在做一个井字游戏。有人已经教过我如何宣布获胜者并停止进一步比赛

有两个长期存在的问题。第一种情况是,当wins直接通过时,计数器将1添加到x wins,2添加到o wins。第二个问题是我不能让比赛打成平局。如果没有结果,我尝试过其他方法

这是整个js,游戏可以在以下位置看到:


一旦你发现一个赢家,你就不会打破你的“每个”循环。我认为这会奏效:

$('.square').each(function () {  
    if (winner) {
       return;
    }   
    values.push( $(this).html());
    ....
或者,这只是更干净:

function check_squares () {
complete = true;
var values = []; // better way to declare an empty array
var winner = '';

// build the values array first
$('.square').each(function () {     
    values.push( $(this).html());
}

// then just check for a winner once... 
if ( !winner && values[0] == values[1] && values[1] == values[2] ) winner = values[0];
....
代码没有检测到抽奖的原因是,抽奖检查发生在“if(winner)”块中


您可以参考我的javascript版本的tic-tac-toe,它可能会有所帮助。好的,谢谢。获胜者返回对保持分数正确起到了很好的作用。而且,虽然您描述的抽签错误非常合理,因此我将条件移动到与继续播放条件相同的区域,但仍然没有抽签结果:好的,谢谢。获胜者返回对保持分数正确起到了很好的作用。而且,虽然您描述的绘制错误非常合理,因此我将条件移动到与继续播放条件相同的区域,但仍然没有绘制结果出现。您知道如何调试javascript吗?在IE上,只需按F12。在Firefox上,只需安装Firebug插件。Chrome也有类似的功能。我敢肯定,如果您开始在代码中设置断点,您会发现问题。此外,检查完整标志(对于树或false,如果“winner”仍然为“”。则检查该标志是没有意义的。因此,我根据需要调整了上面的答案。
function check_squares () {
complete = true;
var values = []; // better way to declare an empty array
var winner = '';

// build the values array first
$('.square').each(function () {     
    values.push( $(this).html());
}

// then just check for a winner once... 
if ( !winner && values[0] == values[1] && values[1] == values[2] ) winner = values[0];
....
   if (winner) {           
        complete = true;
        ....

        // the clause will never get executed, because winner must have already been set to have made it this far
        // so winner == '' will aways be false
        if (winner == '') { 
            $('#output').html('no winner');