Крестики-нолики на 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;}