.tictactoe
	- for (var x = 0; x < 9; x++)
		button.square
.choice 
	p.x X
	p or
	p.o O
View Compiled
html
	background #222
.tictactoe
	display none
	width 310px
	margin 50px auto 0 auto
	padding 10px 0
	.square
		&:focus
			outline none
		background none
		border none
		height 80px
		width 80px
		margin 10px
.choice,.square
		cursor pointer
		opacity 0.8
		font-size 3em
		color #ebffff
		font-weight 300
		text-shadow 2px 2px 1px rgba(0,0,0,0.3), 0 0px 5px #fff, 0 0 10px #38eeff, 0 0 50px #38eeff
.choice
	text-align center
	p
		display inline-block
		margin 100px 50px 0
	.x:hover, .o:hover
		opacity 0.7
		cursor pointer
		color #fff
		text-shadow 0 0 rgba(0,0,0,0.3), 0 0px 1px #fff, 0 0 1px #38eeff, 0 0 20px #38eeff
.tie
	color blue
	text-shadow 2px 2px 1px rgba(0,0,0,0.3), 0 0px 5px #fff, 0 0 10px blue, 0 0 50px blue
	
.win
	color red
	text-shadow 2px 2px 1px rgba(0,0,0,0.3), 0 0px 5px #fff, 0 0 10px red, 0 0 50px red
View Compiled
//Blue = Tie
//Red = Comp wins
//There is no way to win, just look at the code ^^

var tttArr=["-","-","-","-","-","-","-","-","-",];
var player = "X";
var comp = "O";
var playerIndex = 0;
var index = 0;

function updateBoard(){
	$('button').each(function(i,j){
 		$(this).text(tttArr[i]);
	});
};

function resetBoard() {
	tttArr=["-","-","-","-","-","-","-","-","-",];
	player = "X";
	comp = "O";
	$('.choice').show();
}

function computerTurn(){
	var compMove = 0;
	var mid = 4;
	var corner = { ul: 0, ur: 2, bl: 6, br: 8 };
	var side = { u: 1, l: 3, r: 5, b: 7 };
	
	function blockCheck(check){
			if((tttArr[corner.ul] === check )&& (tttArr[side.u] === check )&& (tttArr[corner.ur] == "-" )){
				compMove = corner.ur;
			}
		  else if((tttArr[corner.ul] === check )&& (tttArr[corner.ur] === check )&& (tttArr[side.u] == "-" )){
				compMove = side.u;
			}
			else if((tttArr[corner.ul] === check )&& (tttArr[side.l] === check )&& (tttArr[corner.bl] == "-" )){
				compMove = corner.bl;
			}
			else if((tttArr[corner.ul] === check )&& (tttArr[corner.bl] === check )&& (tttArr[side.l] == "-" )){
				compMove = side.l;
			}
			else if((tttArr[corner.br] === check )&& (tttArr[side.b] === check )&& (tttArr[corner.bl] == "-" )){
				compMove = corner.bl;
			}
			else if((tttArr[corner.br] === check )&& (tttArr[side.r] === check )&& (tttArr[corner.ur] == "-" )){
				compMove = corner.ur;
			}
			else if((tttArr[corner.br] === check )&& (tttArr[corner.bl] === check )&& (tttArr[side.b] == "-" )){
				compMove = side.b;
			}
			else if((tttArr[corner.br] === check )&& (tttArr[corner.ur] === check )&& (tttArr[side.r] == "-" )){
				compMove = side.r;
			}
			else if((tttArr[corner.bl] === check )&& (tttArr[side.l] === check )&& (tttArr[corner.ul] == "-" )){
				compMove = corner.ul;
			}
			else if((tttArr[corner.bl] === check )&& (tttArr[side.b] === check )&& (tttArr[corner.br] == "-" )){
				compMove = corner.br;
			}
			else if((tttArr[corner.ur] === check )&& (tttArr[side.r] === check )&& (tttArr[corner.br] == "-" )){
				compMove = corner.br;
			}
			else if((tttArr[corner.ur] === check )&& (tttArr[side.u] === check )&& (tttArr[corner.ul] == "-" )){
				compMove = corner.ul;
			}			
			else if((tttArr[corner.ur] === check )&& (tttArr[mid] === check )&& (tttArr[corner.bl] == "-" )){
				compMove = corner.bl;
			}
			else if((tttArr[corner.bl] === check )&& (tttArr[mid] === check )&& (tttArr[corner.ur] == "-" )){
				compMove = corner.ur;
			}
			else if((tttArr[corner.ul] === check )&& (tttArr[mid] === check )&& (tttArr[corner.br] == "-" )){
				compMove = corner.br;
			}
			else if((tttArr[corner.br] === check )&& (tttArr[mid] === check )&& (tttArr[corner.ul] == "-" )){
				compMove = corner.ul;
			}
			else if((tttArr[side.u] === check )&& (tttArr[mid] === check )&& (tttArr[side.b] == "-" )){
				compMove = side.b;
			}
			else if((tttArr[side.b] === check )&& (tttArr[mid] === check )&& (tttArr[side.u] == "-" )){
				compMove = side.u;
			}
			else if((tttArr[side.l] === check )&& (tttArr[mid] === check )&& (tttArr[side.r] == "-" )){
				compMove = side.r;
			}
			else if((tttArr[side.r] === check )&& (tttArr[mid] === check )&& (tttArr[side.l] == "-" )){
				compMove = side.l;
			}
			else{ 
				return null;
			}
		}
	
	if(playerIndex === 1) {
		switch(index){
		  case corner.ul: compMove = corner.br;
				break;
			case corner.ur: compMove = corner.bl;
				break;
			case corner.bl: compMove = corner.ur;
				break;
			case corner.br: compMove = corner.ul;
				break;
			 case side.u: compMove = corner.br;
				break;
			case side.l: compMove = corner.ur;
				break;
			case side.r: compMove = corner.bl;
				break;
			case side.b: compMove = corner.ul;
				break;
		}
	}
	else if(playerIndex > 1) {
		if(blockCheck(comp) === null){
			blockCheck(player);
			if(blockCheck(player) === null){
				var counter = 9;
				while(counter>=0){
					counter--;
					if(tttArr[counter] ==='-') {
						compMove = counter;
						break;
					}
				}
			}
		}
	}
	tttArr.splice(compMove, 1, comp);
	updateBoard();
	getResult();
};

function getResult() {
	var win = comp + comp + comp;
	var row1 = tttArr[0] + tttArr[1] + tttArr[2];
	var row2 = tttArr[3] + tttArr[4] + tttArr[5];
	var row3 = tttArr[6] + tttArr[7] + tttArr[8];
	var col1 = tttArr[0] + tttArr[3] + tttArr[6];
	var col2 = tttArr[1] + tttArr[4] + tttArr[7];
	var col3 = tttArr[2] + tttArr[5] + tttArr[8];
	var diag1 = tttArr[0] + tttArr[4] + tttArr[8];
	var diag2 = tttArr[2] + tttArr[4] + tttArr[6];
	
	if((row1 == win)||
	(row2 == win)||
	(row3 == win)||
	(col1 == win)||
	(col2 == win)||
	(col3 == win)||
	(diag1 == win)||
	(diag2 == win)) {
		$(".square").addClass("win");
		resetBoard();
	}
	else if(playerIndex >= 4){
		$(".square").addClass("tie");
		resetBoard();
	}
	else{
		return;
	}
};

$('.square').click(function(){
	index = $( "button" ).index(this);
	if((this.textContent === comp) || $(".square").hasClass('win')){
		return;
	}
	else{
		tttArr.splice(index, 1, player);
		updateBoard();
		playerIndex++;
		computerTurn();
	}
});

$('.x,.o').click(function(){
	if($(this).hasClass('o')){
		player = "O";
		comp = "X";
	}
	playerIndex = 0;
	$('.square').removeClass('win');
	$('.square').removeClass('tie');
	$('.choice').hide();
	tttArr.splice(4, 1, comp);
	updateBoard();
	$('.tictactoe').show();
});
Run Pen

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. //cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js