Skip to content
Merged

Lint #64

Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
174 changes: 90 additions & 84 deletions TicTacToe/script.js
Original file line number Diff line number Diff line change
@@ -1,26 +1,26 @@
var isX = true;
var isValid = false;
var cells = [];
var player = 1;
var computer = 0;
var currentPlayer = 1;
var result = "";
var intervalId;
let isX = true;
let isValid = false;
let cells = [];
let player = 1;
let computer = 0;
let currentPlayer = 1;
let result = '';
let intervalId;

$(document).ready(function () {
$("#dialog").dialog({
$(document).ready(() => {
$('#dialog').dialog({
resizable: false,
height: 160,
modal: true,
buttons: {
"X": function () {
X() {
isX = true;
$(this).dialog("close");
$(this).dialog('close');
startGame();
},
"O": function () {
O() {
isX = false;
$(this).dialog("close");
$(this).dialog('close');
startGame();
}
}
Expand All @@ -37,7 +37,7 @@ function startGame() {
computer = 1;
}

var rnd = Math.round(Math.random());
const rnd = Math.round(Math.random());
if (rnd === 1) {
currentPlayer = player;
} else {
Expand All @@ -54,12 +54,12 @@ function loop() {
currentPlayer = player;
}

$(".cell").on("click", function () {
$('.cell').on('click', function() {
if (isValid) {
var sign = player === 0 ? "O" : "X";
const sign = player === 0 ? 'O' : 'X';

var i = $(this).attr("id")[1] - 1;
var j = $(this).attr("id")[2] - 1;
const i = $(this).attr('id')[1] - 1;
const j = $(this).attr('id')[2] - 1;
if (cells[i][j] === -1) {
cells[i][j] = player;
$(this).html(sign);
Expand All @@ -71,32 +71,30 @@ function loop() {
}
});

var winner = whoWon(cells);
const winner = whoWon(cells);
if (winner) {
if (winner === "computer") {
alert("You Lost, Better Luck Next Time.");
if (winner === 'computer') {
alert('You Lost, Better Luck Next Time.');
} else {
alert("Congratulations! You Won.");
alert('Congratulations! You Won.');
}
result = winner;
} else if (isTableFull(cells)) {
result = 'Tie';
alert('Its a tie');
}
else if (isTableFull(cells)) {
result = "Tie";
alert("Its a tie");
}
if (result !== "") {
if (result !== '') {
clearInterval(intervalId);
result = "";
result = '';
cells = [];
clearTable();
startGame();
}
}


function isTableFull(cells) {
for (var i in cells) {
for (var j in cells[i]) {
for (const i in cells) {
for (const j in cells[i]) {
if (cells[i][j] === -1) {
return false;
}
Expand All @@ -108,58 +106,65 @@ function isTableFull(cells) {
function whoWon(cells) {
//horizontal match
for (var i in cells) {
if (cells[i][0] !== -1 &&
if (
cells[i][0] !== -1 &&
cells[i][1] !== -1 &&
cells[i][2] !== -1 &&
cells[i][0] === cells[i][1] && cells[i][0] === cells[i][2]) {
cells[i][0] === cells[i][1] &&
cells[i][0] === cells[i][2]
) {
if (cells[i][0] === player) {
return "player";
}
else {
return "computer";
return 'player';
} else {
return 'computer';
}
}
}
//vertical match
for (var i in cells) {
if (cells[0][i] !== -1 &&
if (
cells[0][i] !== -1 &&
cells[1][i] !== -1 &&
cells[2][i] !== -1 &&
cells[0][i] === cells[1][i] && cells[0][i] === cells[2][i]) {
cells[0][i] === cells[1][i] &&
cells[0][i] === cells[2][i]
) {
if (cells[0][i] === player) {
return "player";
}
else {
return "computer";
return 'player';
} else {
return 'computer';
}
}
}

//diagonal match
if ((cells[0][0] !== -1 &&
cells[1][1] !== -1 &&
cells[2][2] !== -1 &&
cells[0][0] === cells[1][1] && cells[0][0] === cells[2][2]) ||
(cells[0][2] !== -1 &&
if (
(cells[0][0] !== -1 &&
cells[1][1] !== -1 &&
cells[2][2] !== -1 &&
cells[0][0] === cells[1][1] &&
cells[0][0] === cells[2][2]) ||
(cells[0][2] !== -1 &&
cells[1][1] !== -1 &&
cells[2][0] !== -1 &&
cells[0][2] === cells[1][1] && cells[0][2] === cells[2][0])) {
cells[0][2] === cells[1][1] &&
cells[0][2] === cells[2][0])
) {
if (cells[1][1] === player) {
return "player";
}
else {
return "computer";
return 'player';
} else {
return 'computer';
}
}

return false;
}

function computerMove() {
var arr = freeCells();
var arr2 = bestMove();
var sign = computer === 0 ? "O" : "X";
var x = Math.round(Math.random() * arr.length);
const arr = freeCells();
const arr2 = bestMove();
const sign = computer === 0 ? 'O' : 'X';
const x = Math.round(Math.random() * arr.length);

if (arr2.length >= 1) {
var i = arr2[0];
Expand All @@ -169,22 +174,22 @@ function computerMove() {
var j = arr[x][1];
}
if ((arr.length >= 1 || arr2.length >= 1) && cells[i][j] === -1) {
var a = parseInt(i) + 1;
var b = parseInt(j) + 1;
new Promise(function (resolve, reject) {
$("#c" + a + b).html(sign);
const a = parseInt(i) + 1;
const b = parseInt(j) + 1;
new Promise((resolve, reject) => {
$('#c' + a + b).html(sign);
resolve();
}).then(function () {
}).then(() => {
cells[i++][j++] = computer;
})
});
return 0;
}
}

function freeCells() {
var arr = [];
for (var i in cells) {
for (var j in cells[i]) {
const arr = [];
for (const i in cells) {
for (const j in cells[i]) {
if (cells[i][j] === -1) {
arr.push([i, j]);
}
Expand All @@ -193,14 +198,15 @@ function freeCells() {
return arr;
}

// eslint-disable-next-line complexity
function bestMove() {
var computerInLine = 0;
var playerInLine = 0;
var a = 0;
var maybe = null;
let computerInLine = 0;
let playerInLine = 0;
let a = 0;
let maybe = null;
//check rows
for (var i in cells) {
for (var j in cells[i]) {
for (let i in cells) {
for (let j in cells[i]) {
if (cells[i][j] !== -1) {
if (cells[i][j] === computer) {
computerInLine++;
Expand All @@ -222,8 +228,8 @@ function bestMove() {
}

//check columns
for (var j in cells) {
for (var i in cells[i]) {
for (let j in cells) {
for (let i in cells[i]) {
if (cells[i][j] !== -1) {
if (cells[i][j] === computer) {
computerInLine++;
Expand All @@ -245,12 +251,12 @@ function bestMove() {
}

//check diagonals
var h = 0;
let h = 0;
a = -1;
var b = -1;
let b = -1;
playerInLine = 0;
computerInLine = 0;
for (var k = 0; k < 3; k++) {
for (let k = 0; k < 3; k++) {
if (cells[k][h] !== -1) {
if (cells[k][h] === computer) {
computerInLine++;
Expand All @@ -277,7 +283,7 @@ function bestMove() {
playerInLine = 0;
computerInLine = 0;

for (var k = 2; k >= 0; k--) {
for (let k = 2; k >= 0; k--) {
if (cells[k][h] !== -1) {
if (cells[k][h] === computer) {
computerInLine++;
Expand All @@ -303,15 +309,15 @@ function bestMove() {
}

function clearTable() {
for (var a = 1; a <= 3; a++) {
for (var b = 1; b <= 3; b++) {
$("#c" + a + b).html("");
for (let a = 1; a <= 3; a++) {
for (let b = 1; b <= 3; b++) {
$('#c' + a + b).html('');
}
}
}

function emptyCells() {
for (var a = 0; a < 3; a++) {
for (let a = 0; a < 3; a++) {
cells.push([-1, -1, -1]);
}
}
}