javascript tic tac toe

时间:2016-04-26 14:55:40

标签: javascript jquery tic-tac-toe

我正在尝试构建一个tic tac toe游戏,但它不起作用,我的意思是当我点击游戏板时,我希望游戏开始并相应地拥有我的功能。现在问题是我希望这个游戏是人类与机器和机器部分(功能AI())不能正常工作。

这是链接codepen

我在“游戏”功能(游戏())中拥有所有功能,当用户点击位于js文件末尾的游戏板时,该功能应该运行。

试着玩游戏,你会明白我在说什么 - 奇怪的行为,我正在睁开眼睛,但我仍然被卡住了。

如果有人能帮助我,我会非常感激。感谢。

function game(){
    symbDisp();
    winCheck();
    turns += 1;
    if (gameEnd == false && turns % 2 == 0) {
        AI();
        winCheck();
        turns += 1;
    }
}

2 个答案:

答案 0 :(得分:1)

AI()函数有效(或多或少)。它实际上只是玩游戏的人工智能。玩家移动不起作用,因为你没有告诉symbDisp()函数点击了哪个方格('this'指的是文档,而不是方块)

您可以将事件处理程序更改为

$('.square').on('click', function() {
    game($(this));
});

在这个匿名函数中,这指的是方形,因为它是事件处理程序绑定的元素。

现在你还需要通过改变你的game()和symbDisp()函数来传递这个方形元素,以将元素作为它们的参数,并在symbDisp()中使用它。

例如:

function game(elem){
    symbDisp(elem);
    //more stuff

function symbDisp(elem) {
    if(elem.text()==='') {
    //more stuff

你的游戏中还有其他错误,但我会留下那些让你解决。

答案 1 :(得分:0)

第一个symbDisp正在接收window this而不是正确的td

将第10行更改为

$('.square').on('click', function() { game(this) } );

因为您必须将this传递给子功能。因此,请进行以下更改:

124:  function game(ths){
125:    
126:   symbDisp(ths);

然后将symbDisp更改为:

function symbDisp (ths) {
  if($(ths).text()==='') {
     $(ths).text(pTurn);
      if(pTurn == player){
        pTurn =comp;
      }else{
        pTurn=player;
      }
    }
}

还有另一个错误:pTurn在第一次到达symbDisp函数时未定义。所以将userIcon更改为:

  function userIcon() {
    if($(this).attr("id")=="x"){
      player = pTurn ="X";
      comp ="O";
    } else if($(this).attr("id")=="o"){
      player = pTurn ="O";
      comp ="X";
    }
    $('#user').fadeOut(1000);
  }

看到我在设置播放器时设置了pTurn。

就是这样。它现在应该工作。我在这里分发了一个工作版本:

http://codepen.io/anon/pen/oxPyej

希望有所帮助