

Программирование
+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" в вашем коде и проверьте, решит ли это проблему.