我想在用javascript编写的游戏中通过return关键字执行System.exit[0]

我想在用javascript编写的游戏中通过return关键字执行System.exit[0],javascript,jquery,Javascript,Jquery,我做了一个tic tac toe游戏,我做了9个按钮,然后依次标记按钮x或o,并更改标记的颜色 我还有一个checkIsWinner函数,用于检查获胜的组合。如果组合是赢家,那么我使用一个变量并检查它是否为真。如果有组合,我使用这个变量以便执行System.exit0,退出程序。但这种可变的技巧似乎不起作用 请帮忙。当有赢家时,我想停止这个节目 var表=[]; var块=9; 变量player1,player2,boardId; var-elem,Id; var机会=1; var=10; v

我做了一个tic tac toe游戏,我做了9个按钮,然后依次标记按钮x或o,并更改标记的颜色

我还有一个checkIsWinner函数,用于检查获胜的组合。如果组合是赢家,那么我使用一个变量并检查它是否为真。如果有组合,我使用这个变量以便执行System.exit0,退出程序。但这种可变的技巧似乎不起作用

请帮忙。当有赢家时,我想停止这个节目

var表=[]; var块=9; 变量player1,player2,boardId; var-elem,Id; var机会=1; var=10; var=false; var-checkTie=false; 臀围; 变量输出阵列=[]; var array1,array2,array3,array4,array5,array6,array7,array8, 阵列9、阵列10、阵列11、阵列12; var array13、array14、array15、array16、array17、array0; 获胜组合=[ [1, 2, 3], [4, 5, 6], [7, 8, 9], [1, 4, 7], [2, 5, 8], [3, 6, 9], [1, 5, 9], [3, 5, 7] ]; $document.readyfunction{ buttonId=1; 对于var指数=0;指数<块;指数++{ buttonKey=document.createElementbutton; 如果索引=3 | |索引=6{ lineBreak=document.createElement'br'; document.body.appendChildlineBreak; } buttonKey.innerHTML=+; buttonKey.id=buttonId; buttonKey.setAttributevalue,buttonId; buttonKey.setAttributetext,buttonId; //按钮。设置属性单击,选择颜色; buttonKey.style.fontFamily=新罗马时代; buttonKey.style.backgroundSize=50px; buttonKey.style.backgroundColor=C0; buttonKey.style.fontSize=25px; buttonKey.style.marginBottom=10px; buttonKey.style.marginLeft=5px; buttonKey.style.marginRight=5px; document.body.appendChildbuttonKey; buttonId++; buttonKey.addEventListenerclick,functionevent{ 选择MarkEvent,event.src元素; 支票赢家; 如果isWinner==true | |勾选==true{ 返回false; } }; } }; 函数选择MarkCurrentObject,currentType{ 如果机会%2!=0{ player1='x'; outputArray.push[currentType.id,player1]; document.getElementByIdcurrentType.id.innerHTML=player1; document.getElementByIdcurrentType.id.style.backgroundColor='238EE1'; }否则{ player2='o'; outputArray.push[currentType.id,player2]; document.getElementByIdcurrentType.id.innerHTML=player2; document.getElementByIdcurrentType.id.style.backgroundColor='FF1010'; } 机会++; } 函数检查WinnerCurrentObject,currentType{ 获胜组合=[ [1, 2, 3], [4, 5, 6], [7, 8, 9], [1, 4, 7], [2, 5, 8], [3, 6, 9], [1, 5, 9], [3, 5, 7] ]; 如果机会==2{ 阵列1=输出阵列[0][0]; array2=输出阵列[0][1]; console.logarray1=+array1+array2=+array2 } 如果机会==3{ 阵列3=输出阵列[1][0]; 阵列4=输出阵列[1][1]; console.logarray3=+array3+array4=+array4; } 如果机会==4{ 阵列5=输出阵列[2][0]; 阵列6=输出阵列[2][1]; console.logarray5=+array5+array6=+array6; } 如果机会==5{ 阵列7=输出阵列[3][0]; 阵列8=输出阵列[3][1]; console.logarray7=+array7+array8=+array8; } 如果机会==6{ 阵列9=输出阵列[4][0]; 阵列10=输出阵列[4][1]; console.logarray9=+array9+array10=+array10; } 如果机会==7{ 阵列11=输出阵列[5][0]; 阵列12=输出阵列[5][1]; console.logarray11=+array11+array12=+array12; } 如果机会==8{ 阵列13=输出阵列[6][0]; 阵列14=输出阵列[6][1]; console.logarray13=+array13+array14=+array14; } 如果机会==9{ 阵列15=输出阵列[7][0]; 阵列16=输出阵列[7][1]; console.logarray15=+array15+array16=+array16; } 如果机会==10{ 阵列17=输出阵列[8][0]; 阵列18=输出阵列[8][1]; console.logarray17=+array17+array18=+array18; } 对于var行=0;行<8;行++{ //console.logarray[row]=+outputArray[row]; 回答1=赢选组合[行][0]; 回答2=赢选组合[行][1]; 回答3=赢选组合[行][2]; 如果array1==answer1 | | array1==answer2 | | array1==answer3&&array5==answer1|| 数组5==answer2 | |数组5==answer3和&数组9==answer1 | |数组9==answer2|| 数组9==答案3{ console.logplayer 1是赢家; isWinner=true; 打破 } 如果array1==answer1 | | array1==answer2 | | array1==answer3&&array5==answ er1|| 数组5==answer2 | |数组5==answer3&array13==answer1 | |数组13==answer2 | |数组13==answer3{ isWinner=true; console.logplayer 1是赢家; 打破 } 如果array1==answer1 | | array1==answer2 | | array1==answer3&&array5==answer1|| 数组5==answer2 | |数组5==answer3&&array17==answer1|| 数组17==回答2 | |数组17==回答3{ console.logplayer 1是赢家; isWinner=true; 打破 } 如果array1==answer1 | | array1==answer2 | | array1==answer3&&array9==answer1|| array9==answer2 | | array9==answer3&array13==answer1 | | array13==answer2 | | array13==answer3{ console.logplayer 1是赢家; isWinner=true; 打破 } 如果array1==answer1 | | array1==answer2 | | array1==answer3&&array9==answer1|| array9==回答2 | | array9==回答3&&array17==回答1 | | array17==回答2|| 数组17==答案3{ console.logplayer 1是赢家; isWinner=true; 打破 } 如果array9==answer1 | | array9==answer2 | | array9==answer3&&array5==answer1|| 数组5==answer2 | |数组5==answer3&array13==answer1 | |数组13==answer2 | |数组13==answer3{ console.logplayer 1是赢家; isWinner=true; 打破 } 如果array9==answer1 | | array9==answer2 | | array9==answer3&&array5==answer1|| 数组5==answer2 | |数组5==answer3和&数组17==answer1 | |数组17==answer2 | |数组17==answer3{ console.logplayer 1是赢家; isWinner=true; 打破 } 如果array9==answer1 | | array9==answer2 | | array9==answer3&&array13==answer1|| 数组13==回答2 | |数组13==回答3&& 数组17==回答1 | |数组17==回答2 | |数组17==回答3{ console.logplayer 1是赢家; isWinner=true; 打破 } 如果array1==answer1 | | array1==answer2 | | array1==answer3&&array13==answer1|| array13==回答2 | | array13==回答3&&array17==回答1 | | array17==回答2|| 数组17==答案3{ console.logplayer 1是赢家; 胜利者=真; 打破 } 如果array13==answer1 | | array13==answer2 | | array13==answer3&&array5==answer1|| 数组5==answer2 | |数组5==answer3&&array17==answer1 | |数组17==answer2|| 数组17==答案3{ console.logplayer 1是赢家; isWinner=true; 打破 } 如果array3==answer1 | | array3==answer2 | | array3==answer3&&array7==answer1|| 数组7==answer2 | |数组7==answer3和&数组11==answer1 | |数组11==answer2 | |数组11==answer3{ console.logplayer 2是赢家; isWinner=true; 打破 } 如果array3==answer1 | | array3==answer2 | | array3==answer3&&array7==answer1|| 数组7==回答2 | |数组7==回答3和数组15==回答1 | |数组15==回答2 | |数组15==回答3{ console.logplayer 2是赢家; isWinner=true; 打破 } 如果array3==answer1 | | array3==answer2 | | array3==answer3&&array15==answer1|| array15==answer2 | | array15==answer3和&array11==answer1 | | array11==answer2 | | array11==answer3{ console.logplayer 2是赢家; isWinner=true; 打破 } 如果array15==answer1 | | array15==answer2 | | array15==answer3&&array7==answer1|| 数组7==answer2 | |数组7==answer3和&数组11==answer1 | |数组11==answer2 | |数组11==answer3{ console.logplayer 2是赢家; isWinner=true; 打破 } } 领带;
如果浏览器Javascript中没有退出程序的功能,除了关闭浏览器窗口或导航到新页面。你不能在Javascript中调用Java函数,因为这两种语言彼此之间没有任何关系,只是当时一个非常不幸的品牌决策

您已经有了一个isWinner布尔值来跟踪游戏是否应该结束,但目前您没有对它做任何事情:

buttonKey.addEventListener("click", function(event) {
  selectMark(event, event.srcElement);
  checkIsWinner();
  if (isWinner == true || checkTie == true) {
    return false;
  }
});
从事件处理程序返回false可防止事件冒泡到父元素,而这根本不是您希望在此处执行的操作

一个相当简单的解决方案是让该函数在执行任何操作之前检查游戏是否结束:

buttonKey.addEventListener("click", function(event) {
  if (isWinner == true || checkTie == true) {
    console.log("The game is already over, no more moves.")
  } else {
    selectMark(event, event.srcElement); // you might also want to check whether the button is already marked here, before letting the user re-set it; or remove the click handler from each button as it's used
    checkIsWinner();
  }
});

如果要在web浏览器中执行脚本,可以尝试使用window.close,它将关闭当前浏览器窗口或当前选项卡(如果窗口有两个以上的选项卡)

但要小心:

仅允许对已打开的窗口调用此方法 通过使用window.open方法的脚本。如果窗户没有关上 由脚本打开时,在 控制台:脚本不能关闭未由脚本打开的窗口

请参阅上的MDN web文档


相反,如果你想重新运行游戏或者显示一个最终的屏幕,说明游戏已经结束,考虑修改页面中的DOM元素,因为关闭窗口/Tab不是本例中最好的解决方案。如果此脚本在浏览器中执行(例如Chrome),是否要关闭浏览器窗口或选项卡?System.exit[0]是什么意思?据我所知,浏览器中的javascript中没有类似的东西。javascript是“按需”执行的,因此浏览器中没有退出或关闭javascript代码。如果用户想再次玩游戏,您需要重置变量以重新运行游戏,或者从页面中删除DOM元素。@Mosh Feu。。System.exit[0]是java中的一段代码,用于退出/停止运行program@java_jazz但是JavaScript,不管名称如何,与Java无关,并且System.exit[0]在JavaScript中不存在。顺便问一下,你是在网络浏览器中运行游戏吗?