结束游戏Javascript的逻辑操作

时间:2016-02-16 03:58:46

标签: javascript jquery html function logic

我似乎遇到了某种类型的问题进入我的Javascript / J查询刽子手游戏的获胜逻辑操作,我不知道问题是什么(我的游戏的松动部分似乎工作正常,如果玩家失败,这只是胜利的一部分 - 如果你赢了,有时游戏会显示获胜的图像和css,但有时它什么都不做,不知道为什么 - 它似乎工作的时间越长,我玩的时间越长/我用的话越长我不确定为什么或者发生了什么/为什么它有时会起作用而不是所有的时间或逻辑上的滑动使它不起作用。

这是我的键盘控制和代码的代码。 endGame()函数:

$(".form-control").keypress(function(event) {
    var keycode = (event.keyCode ? event.keyCode : event.which);
    if (keycode == 13) {
      var space = $(this).val();
      play(space);
      $(this).val('');
      endGame();
      return false;
    }
  });
function endGame() {
    if (wrongGuesses.length >= 10) {
      $("body").css("background-color", "#ff4500");
      $(".form-control").prop('disabled', true);
      console.log(rightGuesses);
      console.log(word);
    } else if (rightGuesses.length == word.length && wrongGuesses.length < 10)         {
      $(images[i]).hide();
      $("#victory").show();
      $("body").css("background-color", "#8AFBFF" );
      $("body").animate( { backgroundColor: "#0C0D86" }, 2000 );
      $("body").animate( { backgroundColor: "transparent" }, 2000 );
    }
}

这是我的整个游戏代码:

var wordBank = ["modernism", "situationalist", "sartre", "camus", "hegel", "lacan", "barthes", "baudrillard", "foucault", "debord", "baudrillard"];
var word = [];
var wrongGuesses = [];
var rightGuesses = [];
var images = [gallows, head, body, armL, handL, armR, handR, legL, footL, legR, footR];
var y = 0;
var i = 1;
$(document).ready(function() {
  function randomWord() {
    var random = Math.floor(Math.random() * wordBank.length);
    var toString = wordBank[random];
    console.log(toString);
    word = toString.split("");
    console.log(word);
  }
  randomWord();

  function wordSpaces() {
    for (var i = 0; i < word.length; i++) {
      $(".word-spaces > tbody > tr").append('<td data-idx=i>' + word[i] + '</td>')
    }
  }
  wordSpaces();

  function play(space) {
    //indexOf()==inArray() 
    var lIndex = jQuery.inArray(space, word);
    console.log(lIndex);
    if (lIndex == -1) {
      wrongGuesses.push(space);
      var wrong = wrongGuesses.length;
      console.log('wrong ' + wrong);
      $('.wrongLetters tbody tr td:nth-of-type(' + wrong + ')').text(space);

//      $(this).css("background-color", "#ff4500").fadeIn(300).delay(800).fadeOut(300);
      $(images[i - 1]).hide();
      $(images[i]).show();
      i++;
      $("html").css("background-color", "#ff4500").fadeIn(300).delay(300).fadeOut(300).fadeIn(100);
      console.log(word);
    } else { 
      console.log(word + "word"); 
      console.log(space + "space");
        function getInstances(word,space) {
       //   var string = word[0]; 
      //    console.log(string);
      //    var splitArray=string.split("");
      //    console.log(splitArray);
          var indexes = [], w;
          for(w=0; w<word.length;w++ )
          if (word[w] === space)
          indexes.push(w);
          return indexes;
        }
      console.log(word + "word"); 
      console.log(space + "space");
      var indexes = getInstances(word, space);
      console.log(indexes);
  //    rightGuesses.push(space);
      console.log(rightGuesses); 
  //    var right = rightGuesses.length;
      indexes.forEach(function (index){
      $(".word-spaces tbody tr td:nth-of-type(" + (index + 1) + ")").css('color', 'black');
      });
      rightGuesses.push(space);
  //    rightGuesses.push(space);

    }
  }

  $(".form-control").keypress(function(event) {
    var keycode = (event.keyCode ? event.keyCode : event.which);
    if (keycode == 13) {
      var space = $(this).val();
      play(space);
      $(this).val('');
      endGame();
      return false;
    }
  });

/*
  function endGame() {
    if (wrongGuesses.length >= 10 || rightGuesses.length == word.length) {
      $("body").css("background-color", "#ff4500");
      $(".form-control").prop('disabled', true);
    }else{
    if (rightGuesses.length == word.length){

    }
    } }


*/
function endGame() {
    if (wrongGuesses.length >= 10) {
      $("body").css("background-color", "#ff4500");
      $(".form-control").prop('disabled', true);
      console.log(rightGuesses);
      console.log(word);
    } else if (rightGuesses.length == word.length && wrongGuesses.length < 10)     {
      $(images[i]).hide();
      $("#victory").show();
      $("body").css("background-color", "#8AFBFF" );
      $("body").animate( { backgroundColor: "#0C0D86" }, 2000 );
      $("body").animate( { backgroundColor: "transparent" }, 2000 );
    }
}


});

任何帮助都会非常感激 - 我觉得我已经在这个游戏上工作了很长时间,以至于我再也看不到东西了。谢谢!

2 个答案:

答案 0 :(得分:1)

我这样想出来:首先我创建了另一个空数组全局变量:var right = [];然后我设置另一个.forEach循环来计算正确的字母数(考虑多个字母的数量) - indexes.forEach(function(index){         //回答[index] = space;         rightCount ++       }) 然后我将这些值推入空数组:  right.push(rightCount); 然后我对这个数组进行了排序,以获得在后面的逻辑运算中使用的总和: function endGame(){     var sumRight = right.reduce(add,0);

function add(a, b) {
  return a + b;
}
if (sumRight == word.length) {
  $(images[i]).hide();
  $("#victory").show();
  $("body").css("background-color", "#8AFBFF");
  $(".form-control").prop('disabled', true);
  $("body").animate({
    backgroundColor: "#0C0D86"
  }, 2000);
  $("body").animate({
    backgroundColor: "transparent"
  }, 2000);
} else if (wrongGuesses.length >= 10) {
  $("body").css("background-color", "#ff4500");
  $(".form-control").prop('disabled', true);
  $("body").animate({
    backgroundColor: "#000000"
  }, 2000);
  $("body").animate({
    backgroundColor: "transparent"
  }, 2000);
}

}

答案 1 :(得分:0)

问题是您正在检查/usr/bin/java -Djava.awt.headless=true -jar /usr/share/jenkins/jenkins.war --webroot=/var/cache/jenkins/war --httpPort=8080 --ajp13Port=-1

如果一个单词有多个相同的字母,我可以用比word.length更少的猜测来完成单词。

我能够通过修改你的最终游戏并点击控制+ shift + i来查看控制台来解决这个问题。

rightGuesses.length == word.length

更新小提琴以捕捉答案并将其与原始单词进行比较: https://jsfiddle.net/8cgx2sfd/4/

function endGame() {
  console.log(wrongGuesses.length, rightGuesses.length, word.length);
    if (wrongGuesses.length >= 10 || rightGuesses.length == word.length) {
      $("body").css("background-color", "#ff4500");
      $(".form-control").prop('disabled', true);
    }
  }