JSFiddle - React, Tailwind, and code Playground
by Kroid
HTML
<div class="container">
<div class="table">
<div class="cell" id="0" onclick="move(0, 'player')"></div>
<div class="cell" id="1" onclick="move(1, 'player')"></div>
<div class="cell" id="2" onclick="move(2, 'player')"></div>
<div class="cell" id="3" onclick="move(3, 'player')"></div>
<div class="cell" id="4" onclick="move(4, 'player')"></div>
<div class="cell" id="5" onclick="move(5, 'player')"></div>
<div class="cell" id="6" onclick="move(6, 'player')"></div>
<div class="cell" id="7" onclick="move(7, 'player')"></div>
<div class="cell" id="8" onclick="move(8, 'player')"></div>
</div>
</div>
<script src=""></script>
CSS
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{border:0;font-size:100%;font:inherit;vertical-align:baseline;margin:0;padding:0}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:none}table{border-collapse:collapse;border-spacing:0}
body {
background-color: black;
}
.actions {
text-align: center;
}
.ai {
background-image:...
JavaScript
var t = new Array(9);
function ai() {
var id = Math.floor(Math.random() * 9);
t[id] ? ai() : move(id, 'ai');
}
function checkEnd() {
if (t[0]=='ai' && t[1]=='ai' && t[2]=='ai' || t[0]=='player' && t[1]=='player' && t[2]=='player') return true;
if (t[3]=='ai' && t[4]=='ai' && t[5]=='ai' || t[3]=='player' && t[4]=='player' && t[5]=='player') return true;
if (t[6]=='ai' && t[7]=='ai' && t[8]=='ai' || t[6]=='player' && t[7]=='player' && t[8]=='player') return true;
if (t[0]=='ai' && t[3]=='ai' && t[6]=='ai' || t[0]=='player' && t[3]=='player' && t[6]=='player') return true;
if (t[1]=='ai' && t[4]=='ai' && t[7]=='ai' || t[1]=='player' && t[4]=='player' && t[7]=='player') return true;
if (t[2]=='ai' && t[5]=='ai' && t[8]=='ai' || t[2]=='player' && t[5]=='player' && t[8]=='player') return true;
if (t[0]=='ai' && t[4]=='ai' && t[8]=='ai' || t[0]=='player' && t[4]=='player' && t[8]=='player') return true;
if (t[2]=='ai' && t[4]=='ai' && t[6]=='ai' || t[2]=='player' && t[4]=='player' && t[6]=='player') return true;
if(t[0] && t[1] && t[2] && t[3] && t[4] && t[5] && t[6] && t[7] && t[8]) return true;
}
function move(id, role) {
if(t[id]) return false;
t[id] = role;
document.getElementById(id).className = 'cell ' + role;
!checkEnd() ? (role == 'player') ? ai() : null : reset()
}
function reset() {
alert("Игра окончена!");
location.reload();
}