Skip to content
Merged
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
252 changes: 178 additions & 74 deletions src/html/scripts/gamez/TTT/TTT.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ vars.hoverColor2 = 'powderblue';
vars.pieceColor = vars.color1;
vars.pieceHoverColor = vars.hoverColor1;
vars.count = 0;
vars.gameStart = 1;
vars.isWin = false;

//Sets array for Tic-Tac-Toe
vars.board = [
Expand All @@ -20,15 +22,9 @@ vars.board = [

//Sets array for Tic-Tac-Toe²
vars.board2 = [
['b','b','b','b','b','b','b','b','b'],
['b','b','b','b','b','b','b','b','b'],
['b','b','b','b','b','b','b','b','b'],
['b','b','b','b','b','b','b','b','b'],
['b','b','b','b','b','b','b','b','b'],
['b','b','b','b','b','b','b','b','b'],
['b','b','b','b','b','b','b','b','b'],
['b','b','b','b','b','b','b','b','b'],
['b','b','b','b','b','b','b','b','b']
['','',''],
['','',''],
['','','']
];

//Button functionality for selecting Tic-Tac-Toe
Expand All @@ -48,16 +44,28 @@ function selectTTT2() {
startScreen.style.display = 'none';

vars.gameType = 2;
initBoard2();
drawBoard();
}

//Sets vars.board2 as an array of vars.board objects
function initBoard2() {
for (let i = 0;i < 3;i++) {
for (let j = 0;j < 3;j++) {
window['vars.board' + i + j] = JSON.parse(JSON.stringify(vars.board));
vars.board2[i][j] = [...window['vars.board' + i + j]];
}
}
}

//Draws the game board
function drawBoard() {
let boardCode = '<line x1="0" y1="180" x2="540" y2="180" style="fill:none;stroke:black;stroke-width:5"/>'
+ '<line x1="0" y1="360" x2="540" y2="360" style="fill:none;stroke:black;stroke-width:5"/>'
+ '<line x1="180" y1="0" x2="180" y2="540" style="fill:none;stroke:black;stroke-width:5"/>'
+ '<line x1="360" y1="0" x2="360" y2="540" style="fill:none;stroke:black;stroke-width:5"/>'
+ '<text id="pieceHover"></text>';
+ '<text id="pieceHover"></text>'
+ '<g id="board2"> </g>';
if (vars.gameType == 2) {
boardCode += '<line x1="0" y1="60" x2="540" y2="60" style="fill:none;stroke:black;stroke-width:1"/>'
+ '<line x1="0" y1="120" x2="540" y2="120" style="fill:none;stroke:black;stroke-width:1"/>'
Expand Down Expand Up @@ -101,29 +109,32 @@ function coordinate(event) {
vars.pieceX = (vars.arrayX * 60) + 5;
vars.pieceY = (vars.arrayY * 60) + 55;

let arrayX2 = vars.arrayX / 3;
let arrayY2 = vars.arrayY / 3;
vars.arrayX2 = Math.floor(arrayX2);
vars.arrayY2 = Math.floor(arrayY2);

vars.pieceX2 = (vars.arrayX2 * 180) + 25;
vars.pieceY2 = (vars.arrayY2 * 180) + 160;

vars.arrayX = vars.arrayX - (3 * vars.arrayX2);
vars.arrayY = vars.arrayY - (3 * vars.arrayY2);

document.getElementById("board").setAttribute('font-size', '70');
}

win();
hoverPiece();
}

//Draws the piece when hovering over space
function hoverPiece() {
if (isLegal()) {
if (vars.gameType == 1) {
document.getElementById("pieceHover").setAttribute('x', vars.pieceX);
document.getElementById("pieceHover").setAttribute('y', vars.pieceY);
document.getElementById("pieceHover").setAttribute('fill', vars.pieceHoverColor);
document.getElementById("pieceHover").innerHTML = vars.pieceSVG;
} else {
document.getElementById("pieceHover").setAttribute('x', vars.pieceX);
document.getElementById("pieceHover").setAttribute('y', vars.pieceY);
document.getElementById("pieceHover").setAttribute('fill', vars.pieceHoverColor);
document.getElementById("pieceHover").innerHTML = vars.pieceSVG;
}
document.getElementById("pieceHover").setAttribute('x', vars.pieceX);
document.getElementById("pieceHover").setAttribute('y', vars.pieceY);
document.getElementById("pieceHover").setAttribute('fill', vars.pieceHoverColor);
document.getElementById("pieceHover").innerHTML = vars.pieceSVG;
}


}

//Draws the piece
Expand All @@ -134,16 +145,21 @@ function drawPiece() {

//Performs functions when clicking
function onClick() {
win();
if (isLegal()) {
drawPiece();
setArray();
if (!isWin()) {
pieceType();
if (vars.gameType == 1) {
isFull();
}
win();
vars.tempArrX = vars.arrayX;
vars.tempArrY = vars.arrayY;
pieceType();
if (vars.gameType == 1) {
isFull();
}
vars.gameStart = 0;
}

win();
}

//Determines if board if full
Expand All @@ -158,34 +174,45 @@ function isFull() {

//Swaps the piece type after turns
function pieceType() {
if (vars.pieceSVG == 'X') {
vars.pieceSVG = 'O';
vars.pieceColor = vars.color2;
vars.pieceHoverColor = vars.hoverColor2;
} else {
vars.pieceSVG = 'X';
vars.pieceColor = vars.color1;
vars.pieceHoverColor = vars.hoverColor1;
win();
if (!vars.isWin) {
if (vars.pieceSVG == 'X') {
vars.pieceSVG = 'O';
vars.pieceColor = vars.color2;
vars.pieceHoverColor = vars.hoverColor2;
} else {
vars.pieceSVG = 'X';
vars.pieceColor = vars.color1;
vars.pieceHoverColor = vars.hoverColor1;
}
}

}

//Changes array value
function setArray() {
if (vars.gameType == 1) {
vars.board[vars.arrayX][vars.arrayY] = vars.pieceSVG;
} else {
vars.board2[vars.arrayX][vars.arrayY] = vars.pieceSVG;
vars.board2[vars.arrayY2][vars.arrayX2][vars.arrayY][vars.arrayX] = vars.pieceSVG;
}
}

//Determines if move is legal
function isLegal() {
win();
if (vars.gameType == 1) {
return Boolean(vars.board[vars.arrayX][vars.arrayY] == 'b' && !isWin());
return Boolean(vars.board[vars.arrayX][vars.arrayY] == 'b' && vars.isWin != true);
} else {
return Boolean(vars.board2[vars.arrayX][vars.arrayY] == 'b' && !isWin());
isOpenSpace = Boolean(vars.board2[vars.arrayY2][vars.arrayX2][vars.arrayY][vars.arrayX] == 'b');
if (vars.gameStart != 0 || (vars.board2[vars.tempArrY][vars.tempArrX] != 'X' && vars.board2[vars.tempArrY][vars.tempArrX] != 'O')) {
isMatchingGame = Boolean(vars.arrayX2 == vars.tempArrX && vars.arrayY2 == vars.tempArrY);
legalMove = Boolean((isOpenSpace && isMatchingGame) || vars.gameStart != 0);
} else {
legalMove = Boolean(isOpenSpace);
}
return Boolean(legalMove && vars.isWin != true);
}

}

//Erases board and says winner
Expand All @@ -195,41 +222,118 @@ function drawWin() {
document.getElementById("board").innerHTML = winCode;
}

//Draws win of
function drawWin2() {
isFull();

overlayX = vars.pieceX2 - 23;
overlayY = vars.pieceY2 - 158;

let win2 = '<text x="' + vars.pieceX2 + '" y="' + vars.pieceY2 + '" fill="' + vars.pieceColor + '" font-size="180">' + vars.pieceSVG + '</text>';

document.getElementById("board2").insertAdjacentHTML("beforeend",win2);
}

//Determines if win
function isWin() {
if (vars.board[0][0] == vars.board[0][1] && vars.board[0][1] == vars.board[0][2] && vars.board[0][2] != 'b') {
vars.winPiece = vars.pieceSVG;
drawWin();
return true;
} else if (vars.board[1][0] == vars.board[1][1] && vars.board[1][1] == vars.board[1][2] && vars.board[1][2] != 'b') {
vars.winPiece = vars.pieceSVG;
drawWin();
return true;
} else if (vars.board[2][0] == vars.board[2][1] && vars.board[2][1] == vars.board[2][2] && vars.board[2][2] != 'b') {
vars.winPiece = vars.pieceSVG;
drawWin();
return true;
} else if (vars.board[0][0] == vars.board[1][0] && vars.board[1][0] == vars.board[2][0] && vars.board[2][0] != 'b') {
vars.winPiece = vars.pieceSVG;
drawWin();
return true;
} else if (vars.board[0][1] == vars.board[1][1] && vars.board[1][1] == vars.board[2][1] && vars.board[2][1] != 'b') {
vars.winPiece = vars.pieceSVG;
drawWin();
return true;
} else if (vars.board[0][2] == vars.board[1][2] && vars.board[1][2] == vars.board[2][2] && vars.board[2][2] != 'b') {
vars.winPiece = vars.pieceSVG;
drawWin();
return true;
} else if (vars.board[0][0] == vars.board[1][1] && vars.board[1][1] == vars.board[2][2] && vars.board[2][2] != 'b') {
vars.winPiece = vars.pieceSVG;
drawWin();
return true;
} else if (vars.board[2][0] == vars.board[1][1] && vars.board[1][1] == vars.board[0][2] && vars.board[0][2] != 'b') {
vars.winPiece = vars.pieceSVG;
drawWin();
return true;
function win() {
if (vars.gameType == 1) {
if (vars.board[0][0] == vars.board[0][1] && vars.board[0][1] == vars.board[0][2] && vars.board[0][2] == vars.pieceSVG) {
vars.winPiece = vars.pieceSVG;
drawWin();
vars.isWin = true;
} else if (vars.board[1][0] == vars.board[1][1] && vars.board[1][1] == vars.board[1][2] && vars.board[1][2] == vars.pieceSVG) {
vars.winPiece = vars.pieceSVG;
drawWin();
vars.isWin = true;
} else if (vars.board[2][0] == vars.board[2][1] && vars.board[2][1] == vars.board[2][2] && vars.board[2][2] == vars.pieceSVG) {
vars.winPiece = vars.pieceSVG;
drawWin();
vars.isWin = true;
} else if (vars.board[0][0] == vars.board[1][0] && vars.board[1][0] == vars.board[2][0] && vars.board[2][0] == vars.pieceSVG) {
vars.winPiece = vars.pieceSVG;
drawWin();
vars.isWin = true;
} else if (vars.board[0][1] == vars.board[1][1] && vars.board[1][1] == vars.board[2][1] && vars.board[2][1] ==vars.pieceSVG) {
vars.winPiece = vars.pieceSVG;
drawWin();
vars.isWin = true;
} else if (vars.board[0][2] == vars.board[1][2] && vars.board[1][2] == vars.board[2][2] && vars.board[2][2] == vars.pieceSVG) {
vars.winPiece = vars.pieceSVG;
drawWin();
vars.isWin = true;
} else if (vars.board[0][0] == vars.board[1][1] && vars.board[1][1] == vars.board[2][2] && vars.board[2][2] == vars.pieceSVG) {
vars.winPiece = vars.pieceSVG;
drawWin();
vars.isWin = true;
} else if (vars.board[2][0] == vars.board[1][1] && vars.board[1][1] == vars.board[0][2] && vars.board[0][2] == vars.pieceSVG) {
vars.winPiece = vars.pieceSVG;
drawWin();
vars.isWin = true;
}
} else {
return false;
if (vars.board2[0][0] == vars.board2[0][1] && vars.board2[0][1] == vars.board2[0][2] && vars.board2[0][2] == vars.pieceSVG) {
vars.winPiece = vars.pieceSVG;
drawWin();
vars.isWin = true;
return;
} else if (vars.board2[1][0] == vars.board2[1][1] && vars.board2[1][1] == vars.board2[1][2] && vars.board2[1][2] == vars.pieceSVG) {
vars.winPiece = vars.pieceSVG;
drawWin();
vars.isWin = true;
return;
} else if (vars.board2[2][0] == vars.board2[2][1] && vars.board2[2][1] == vars.board2[2][2] && vars.board2[2][2] == vars.pieceSVG) {
vars.winPiece = vars.pieceSVG;
vars.isWin = true;
return;
} else if (vars.board2[0][0] == vars.board2[1][0] && vars.board2[1][0] == vars.board2[2][0] && vars.board2[2][0] == vars.pieceSVG) {
vars.winPiece = vars.pieceSVG;
drawWin();
vars.isWin = true;
return;
} else if (vars.board2[0][1] == vars.board2[1][1] && vars.board2[1][1] == vars.board2[2][1] && vars.board2[2][1] == vars.pieceSVG) {
vars.winPiece = vars.pieceSVG;
drawWin();
vars.isWin = true;
return;
} else if (vars.board2[0][2] == vars.board2[1][2] && vars.board2[1][2] == vars.board2[2][2] && vars.board2[2][2] == vars.pieceSVG) {
vars.winPiece = vars.pieceSVG;
drawWin();
vars.isWin = true;
return;
} else if (vars.board2[0][0] == vars.board2[1][1] && vars.board2[1][1] == vars.board2[2][2] && vars.board2[2][2] == vars.pieceSVG) {
vars.winPiece = vars.pieceSVG;
drawWin();
vars.isWin = true;
return;
} else if (vars.board2[2][0] == vars.board2[1][1] && vars.board2[1][1] == vars.board2[0][2] && vars.board2[0][2] == vars.pieceSVG) {
vars.winPiece = vars.pieceSVG;
drawWin();
vars.isWin = true;
return;
} else if (vars.board2[vars.arrayY2][vars.arrayX2][0][0] == vars.board2[vars.arrayY2][vars.arrayX2][0][1] && vars.board2[vars.arrayY2][vars.arrayX2][0][1] == vars.board2[vars.arrayY2][vars.arrayX2][0][2] && vars.board2[vars.arrayY2][vars.arrayX2][0][2] != 'b' && vars.isWin != true) {
vars.board2[vars.arrayY2][vars.arrayX2] = vars.pieceSVG;
drawWin2();
} else if (vars.board2[vars.arrayY2][vars.arrayX2][1][0] == vars.board2[vars.arrayY2][vars.arrayX2][1][1] && vars.board2[vars.arrayY2][vars.arrayX2][1][1] == vars.board2[vars.arrayY2][vars.arrayX2][1][2] && vars.board2[vars.arrayY2][vars.arrayX2][1][2] != 'b' && vars.isWin != true) {
vars.board2[vars.arrayY2][vars.arrayX2] = vars.pieceSVG;
drawWin2();
} else if (vars.board2[vars.arrayY2][vars.arrayX2][2][0] == vars.board2[vars.arrayY2][vars.arrayX2][2][1] && vars.board2[vars.arrayY2][vars.arrayX2][2][1] == vars.board2[vars.arrayY2][vars.arrayX2][2][2] && vars.board2[vars.arrayY2][vars.arrayX2][2][2] != 'b' && vars.isWin != true) {
vars.board2[vars.arrayY2][vars.arrayX2] = vars.pieceSVG;
drawWin2();
} else if (vars.board2[vars.arrayY2][vars.arrayX2][0][0] == vars.board2[vars.arrayY2][vars.arrayX2][1][0] && vars.board2[vars.arrayY2][vars.arrayX2][1][0] == vars.board2[vars.arrayY2][vars.arrayX2][2][0] && vars.board2[vars.arrayY2][vars.arrayX2][2][0] != 'b' && vars.isWin != true) {
vars.board2[vars.arrayY2][vars.arrayX2] = vars.pieceSVG;
drawWin2();
} else if (vars.board2[vars.arrayY2][vars.arrayX2][0][1] == vars.board2[vars.arrayY2][vars.arrayX2][1][1] && vars.board2[vars.arrayY2][vars.arrayX2][1][1] == vars.board2[vars.arrayY2][vars.arrayX2][2][1] && vars.board2[vars.arrayY2][vars.arrayX2][2][1] != 'b' && vars.isWin != true) {
vars.board2[vars.arrayY2][vars.arrayX2] = vars.pieceSVG;
drawWin2();
} else if (vars.board2[vars.arrayY2][vars.arrayX2][0][2] == vars.board2[vars.arrayY2][vars.arrayX2][1][2] && vars.board2[vars.arrayY2][vars.arrayX2][1][2] == vars.board2[vars.arrayY2][vars.arrayX2][2][2] && vars.board2[vars.arrayY2][vars.arrayX2][2][2] != 'b' && vars.isWin != true) {
vars.board2[vars.arrayY2][vars.arrayX2] = vars.pieceSVG;
drawWin2();
} else if (vars.board2[vars.arrayY2][vars.arrayX2][0][0] == vars.board2[vars.arrayY2][vars.arrayX2][1][1] && vars.board2[vars.arrayY2][vars.arrayX2][1][1] == vars.board2[vars.arrayY2][vars.arrayX2][2][2] && vars.board2[vars.arrayY2][vars.arrayX2][2][2] != 'b' && vars.isWin != true) {
vars.board2[vars.arrayY2][vars.arrayX2] = vars.pieceSVG;
drawWin2();
} else if (vars.board2[vars.arrayY2][vars.arrayX2][2][0] == vars.board2[vars.arrayY2][vars.arrayX2][1][1] && vars.board2[vars.arrayY2][vars.arrayX2][1][1] == vars.board2[vars.arrayY2][vars.arrayX2][0][2] && vars.board2[vars.arrayY2][vars.arrayX2][0][2] != 'b' && vars.isWin != true) {
vars.board2[vars.arrayY2][vars.arrayX2] = vars.pieceSVG;
drawWin2();
}
}
}