Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 宣布在线游戏获胜者后结束互动_Javascript_Jquery_Html_Javascript Events - Fatal编程技术网

Javascript 宣布在线游戏获胜者后结束互动

Javascript 宣布在线游戏获胜者后结束互动,javascript,jquery,html,javascript-events,Javascript,Jquery,Html,Javascript Events,我有一个非常简单的JavaScript tic-tac-toe游戏,目前运行良好。它由一个包含X和O的数组组成,不允许两次选择同一个点,并且计算机将基于生成的随机数进行切换,该随机数在数组中仍然打开 我唯一剩下的问题是当宣布胜利者时该怎么办(计算机或人工) 此时,我需要结束运行游戏的JavaScript,直到用户选择重置棋盘并重新开始 这涉及到两个我正在努力解决的细节: 我需要tic tac趾板的扇区变得“不可点击”,或者在宣布获胜者后不再注册点击。目前,即使在游戏决定胜负之后,如果还有剩余的空

我有一个非常简单的JavaScript tic-tac-toe游戏,目前运行良好。它由一个包含X和O的数组组成,不允许两次选择同一个点,并且计算机将基于生成的随机数进行切换,该随机数在数组中仍然打开

我唯一剩下的问题是当宣布胜利者时该怎么办(计算机或人工)

此时,我需要结束运行游戏的JavaScript,直到用户选择重置棋盘并重新开始

这涉及到两个我正在努力解决的细节:

  • 我需要tic tac趾板的扇区变得“不可点击”,或者在宣布获胜者后不再注册点击。目前,即使在游戏决定胜负之后,如果还有剩余的空格,用户也可以继续在棋盘上标记这些空格

  • 解决上述问题在一定程度上有助于解决这个问题,但一旦宣布游戏的赢家,完全停止游戏也可能是件好事。目前,同样由于用户可以继续单击开放空间(如果存在),计数器(为用户计算赢数)将继续增加,只要板上存在赢数。同样,通过解决问题1,也可以过渡地解决这个问题,因为点击不起作用,因此计数器不会增加


  • 如果结束游戏仅仅是让方块不响应点击,那么您可以创建一个绑定到方块点击事件的函数

    例如,如果每个框都是一个带有“box”类的链接,则可以执行以下操作:

    var boxes = document.getElementsByClassName('box');
    for(var key in boxes) { 
      boxes[key].onclick = function(e) {
      e.preventDefault();
    }
    
    或者,使用jQuery

    $(document).on("click", ".boxes", function(e) {
       e.preventDefault();
    }
    
    在找到获胜者后,您可以这样做:

    var endGame = function() {
       $(document).on("click", ".boxes", function(e) {
          e.preventDefault();
       }
    }
    
    if ( there is a winner ) {
        endGame();
    }
    

    一个简单的想法是添加一个标志,表明游戏已经结束。然后在棋盘空格的点击事件处理程序中,检查游戏结束标志是否为true->停止处理;false->标记空格。@TactMayers这似乎很简单。我是javascript新手,无法在线找到使用事件处理程序的语句停止处理部分的示例。您能否提供一个简短的代码示例?顺便说一句,我正在使用jquery作为点击处理程序,但如果您只知道如何在常规javascript中实现它,我会找到答案!我喜欢你的方法。然而,我担心的是,一旦我使用我的重置按钮,它简单地将棋盘(所有空格都是空白的)和数组重置为空白,我将如何再次更新javascript以告诉游戏它应该可以再次单击?希望您能理解我的意思如果您使用jQuery,您可以执行$(document).off(“单击“,”.box”)将方框设置回正常状态。当按下重置按钮时,可以执行此操作。