Крестики-нолики на js — различия между версиями
Материал из Department of Theoretical and Applied Mechanics
(Новая страница: «==Описание== Реализация компьютерной игры "Крестики-Нолики" на языке программирования JavaS…») |
(→Визуализация) |
||
Строка 6: | Строка 6: | ||
Группа 3630103/4 Кафедра Теоретической механики | Группа 3630103/4 Кафедра Теоретической механики | ||
==Визуализация== | ==Визуализация== | ||
− | {{#widget:Iframe |url=https://gigantmisli228.github.io/XOgame/ | + | {{#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;}