Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+1

Почему когда я хожу моих ходов не видно игра крестики нолики

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
 let items = document.getElementsByClassName('appBlock')
let movePlayer = true;
let game = true;


for(let i = 0; i<items.length; i++){
    items[i].addEventListener("click", function(){
        let collection = document.querySelectorAll(".appBlock:not(.active)")
        if(collection.length == 1){
            exit({win: "other"})
        }
     if(!this.classList.contains("active")){
        if(movePlayer){
            if(this.innerHtml == ""){
                this.classList.add("active")
                this.classList.add("active_x")
                this.innerHtml = "x"
            }
            let result = checkmap()
            if(result.val){
                game = false;
                setTimeout(function(){
                    exit(result)
                }, 10)
            }
            movePlayer = !movePlayer
         }
         if(game){
            setTimeout(function(){
                botmove()
            }, 200)
         }
      }
   })
}


function botmove(){
    let blocks = document.querySelectorAll(".appBlock:not(.active)")
    let step = getRandomint(blocks.length)
    blocks[step].innerHTML = "0"
    blocks[step].classList.add("active")
    blocks[step].classList.add("active_o")

    let result = checkmap()
    if(result.val){
        setTimeout(function(){
            exit(result)
        }, 1)
    }
    movePlayer =!movePlayer
}

function getRandomint(max){
    return Math.floor(Math.random() * Math.floor(max))
}

function checkmap(){
 let block = document.querySelectorAll(".appBlock")
 let items = []

 for(let i = 0; i<block.length; i++){
 items.push(block[i].innerHTML)
}

if(items[0] == "x" && items[1] == "x" && items[2] == "x" ||
items[3] == "x" && items[4] == "x" && items[5] == "x" ||
items[6] == "x" && items[7] == "x" && items[8] == "x" ||
items[0] == "x" && items[3] == "x" && items[6] == "x" ||
items[1] == "x" && items[4] == "x" && items[7] == "x" ||
items[2] == "x" && items[5] == "x" && items[8] == "x" ||
items[0] == "x" && items[4] == "x" && items[8] == "x" ||
items[2] == "x" && items[4] == "x" && items[6] == "x" )
{
    return {val: true, win: "player"}
}

if(items[0] == "0" && items[1] == "0" && items[2] == "0" ||
items[3] == "0" && items[4] == "0" && items[5] == "0" ||
items[6] == "0" && items[7] == "0" && items[8] == "0" ||
items[0] == "0" && items[3] == "0" && items[6] == "0" ||
items[1] == "0" && items[4] == "0" && items[7] == "0" ||
items[2] == "0" && items[5] == "0" && items[8] == "0" ||
items[0] == "0" && items[4] == "0" && items[8] == "0" ||
items[2] == "0" && items[4] == "0" && items[6] == "0" )
{
    return {val: true, win: "bot"}
}

return {val : false}
}

function exit(obj){
    alert(obj.win + "-game over")
}
 
По дате
По рейтингу
Аватар пользователя
Искусственный Интеллект

Когда будешь следующий раз задавать вопрос, будь добр приложить код HTML... или создавай шаблон страницы через JS. Или, еще лучше, залей его в рабочем состоянии на codepen/codesandbox.

Аватар пользователя
Мыслитель

Проблема может быть в том, что вы используете свойство "innerHtml" вместо "innerHTML" для установки значения хода (крестика или нолика) в блоке. Вместо этого нужно использовать "innerHTML", чтобы установить значение внутри блока. Попробуйте заменить все вхождения "innerHtml" на "innerHTML" в вашем коде и проверьте, решит ли это проблему.