Крестики-нолики на js

Материал из Department of Theoretical and Applied Mechanics
Версия от 14:47, 10 июня 2021; 178.69.49.4 (обсуждение) (Новая страница: «==Описание== Реализация компьютерной игры "Крестики-Нолики" на языке программирования JavaS…»)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Описание

Реализация компьютерной игры "Крестики-Нолики" на языке программирования JavaScript.

Исполнители: Гаврилов Виталий , Иванов Тимофей , Ионин Александр

Группа 3630103/4 Кафедра Теоретической механики

Визуализация

Код программы

Код программы на языке JavaScript:

<syntaxhighlight lang="javascript" line start="1" enclose="div">

var area = document.getElementById('area'); var cell = document.getElementsByClassName('cell'); var currentPlayer = document.getElementById('curPlyr');

var player = "x"; var stat = {

   'x': 0,
   'o': 0,
   'd': 0

} var winIndex = [

   [1,2,3],
   [4,5,6],
   [7,8,9],
   [1,4,7],
   [2,5,8],
   [3,6,9],
   [1,5,9],
   [3,5,7]

];

for(var i = 1; i <= 9; i++) {

area.innerHTML += "
";

}

for (var i = 0; i< cell.length; i++) {

   cell[i].addEventListener('click', cellClick, false);

}

function cellClick() {

   var data = [];
   
   if(!this.innerHTML) {
       this.innerHTML = player;
   }else {
       alert("Ячейка занята");
       return;
   }
   for(var i in cell){
       if(cell[i].innerHTML == player){
           data.push(parseInt(cell[i].getAttribute('pos')));
       }
   }
   if(checkWin(data)) {
       stat[player] += 1;
       restart("Выграл: " + player);
   }else {
       var draw = true;
       for(var i in cell) {
           if(cell[i].innerHTML == ) draw = false;
       }
       if(draw) {
           stat.d += 1;
           restart("Ничья");
       }
   }
   player = player == "x" ? "o" : "x";
   currentPlayer.innerHTML = player.toUpperCase();

}

function checkWin(data) {

   for(var i in winIndex) {
       var win = true;
       for(var j in winIndex[i]) {
           var id = winIndex[i][j];
           var ind = data.indexOf(id);
           if(ind == -1) {
               win = false
           }
       }
       if(win) return true;
   }
   return false;

}

function restart(text) {

   alert(text);
   for(var i = 0; i < cell.length; i++) {
       cell[i].innerHTML = ;
   }
   updateStat();

}

function updateStat() {

   document.getElementById('sX').innerHTML = stat.x;
   document.getElementById('sO').innerHTML = stat.o;
   document.getElementById('sD').innerHTML = stat.d;
}