Крестики-нолики на js — различия между версиями

Материал из Department of Theoretical and Applied Mechanics
Перейти к: навигация, поиск
(Новая страница: «==Описание== Реализация компьютерной игры "Крестики-Нолики" на языке программирования JavaS…»)
 
(Визуализация)
Строка 6: Строка 6:
 
Группа 3630103/4  Кафедра Теоретической механики
 
Группа 3630103/4  Кафедра Теоретической механики
 
==Визуализация==
 
==Визуализация==
{{#widget:Iframe |url=https://gigantmisli228.github.io/XOgame/index.html |width=1000 |height=600 |border=1  }}
+
{{#widget:Iframe |url=https://gigantmisli228.github.io/XOgame/ |width=1000 |height=600 |border=1  }}
 +
 
 
==Код программы==
 
==Код программы==
 
<div class="mw-collapsible mw-collapsed">
 
<div class="mw-collapsible mw-collapsed">

Версия 14:35, 13 июня 2021

Описание

Реализация компьютерной игры "Крестики-Нолики" на языке программирования 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;
}