From 5f314ae8ab3ebfa1fd5eba211d5ad628d9dbfc23 Mon Sep 17 00:00:00 2001 From: Ethan Sears Date: Fri, 3 May 2024 13:52:39 -0400 Subject: [PATCH 1/4] Added base legality to Tic-Tac-Toe^2 Added base legality to Tic-Tac-Toe^2, set vars.board2 as a 2D array of vars.board making it a 4D array, added some temporary debugging code --- src/html/scripts/gamez/TTT/TTT.js | 67 ++++++++++++++++++++----------- src/html/tictactoe.html | 8 ++++ 2 files changed, 51 insertions(+), 24 deletions(-) diff --git a/src/html/scripts/gamez/TTT/TTT.js b/src/html/scripts/gamez/TTT/TTT.js index ff5dbe9..a86a14e 100644 --- a/src/html/scripts/gamez/TTT/TTT.js +++ b/src/html/scripts/gamez/TTT/TTT.js @@ -20,15 +20,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 @@ -48,9 +42,23 @@ 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]]; + console.log(window['vars.board' + i + j]); + //vars.board2[i][j][0][0] = 'O'; + } + } + console.log(vars.board2[0][0][0][0]); +} + //Draws the game board function drawBoard() { let boardCode = '' @@ -101,29 +109,36 @@ 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.arrayX = vars.arrayX - (3 * vars.arrayX2); + vars.arrayY = vars.arrayY - (3 * vars.arrayY2); + document.getElementById("board").setAttribute('font-size', '70'); } + document.getElementById("gameType").value = vars.gameType; + document.getElementById("X").value = vars.arrayX; + document.getElementById("Y").value = vars.arrayY; + document.getElementById("gameX").value = vars.arrayX2; + document.getElementById("gameY").value = vars.arrayY2; + document.getElementById("arrayValue").value = vars.board2[vars.arrayX2][vars.arrayY2][vars.arrayX][vars.arrayY]; + document.getElementById("arrayTrue").value = isLegal(); + 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 @@ -137,6 +152,7 @@ function onClick() { if (isLegal()) { drawPiece(); setArray(); + //pieceType(); if (!isWin()) { pieceType(); if (vars.gameType == 1) { @@ -144,6 +160,8 @@ function onClick() { } } } + console.log(vars.board2[vars.arrayX2][vars.arrayY2][vars.arrayX][vars.arrayY]); + console.log(vars.board2); } //Determines if board if full @@ -174,7 +192,8 @@ 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[0][0][vars.arrayX][vars.arrayY] = 'O'; + vars.board2[vars.arrayX2][vars.arrayY2][vars.arrayY][vars.arrayX] = vars.pieceSVG; } } @@ -183,7 +202,7 @@ function isLegal() { if (vars.gameType == 1) { return Boolean(vars.board[vars.arrayX][vars.arrayY] == 'b' && !isWin()); } else { - return Boolean(vars.board2[vars.arrayX][vars.arrayY] == 'b' && !isWin()); + return Boolean(vars.board2[vars.arrayX2][vars.arrayY2][vars.arrayY][vars.arrayX] == 'b'); } } diff --git a/src/html/tictactoe.html b/src/html/tictactoe.html index 8c46672..fe54655 100644 --- a/src/html/tictactoe.html +++ b/src/html/tictactoe.html @@ -89,6 +89,14 @@

Welcome to Tic-Tac-Toe

+ + + +
+ + + + From 32c338d36fb7aa300d9c8273ccb3ccd00e97bc5c Mon Sep 17 00:00:00 2001 From: Ethan Sears Date: Fri, 3 May 2024 21:26:17 -0400 Subject: [PATCH 2/4] Tic-Tac-Toe^2 isLegal and isWin function Added functionality and logic to both the isLegal and isWin function for Tic-Tac-Toe^2 --- src/html/scripts/gamez/TTT/TTT.js | 110 ++++++++++++++++++++---------- 1 file changed, 75 insertions(+), 35 deletions(-) diff --git a/src/html/scripts/gamez/TTT/TTT.js b/src/html/scripts/gamez/TTT/TTT.js index a86a14e..c9adccc 100644 --- a/src/html/scripts/gamez/TTT/TTT.js +++ b/src/html/scripts/gamez/TTT/TTT.js @@ -10,6 +10,7 @@ vars.hoverColor2 = 'powderblue'; vars.pieceColor = vars.color1; vars.pieceHoverColor = vars.hoverColor1; vars.count = 0; +vars.gameStart = 1; //Sets array for Tic-Tac-Toe vars.board = [ @@ -118,6 +119,8 @@ function coordinate(event) { vars.arrayY = vars.arrayY - (3 * vars.arrayY2); document.getElementById("board").setAttribute('font-size', '70'); + + } document.getElementById("gameType").value = vars.gameType; @@ -152,13 +155,15 @@ function onClick() { if (isLegal()) { drawPiece(); setArray(); - //pieceType(); + vars.tempArrX = vars.arrayX; + vars.tempArrY = vars.arrayY; if (!isWin()) { pieceType(); if (vars.gameType == 1) { isFull(); } } + vars.gameStart = 0; } console.log(vars.board2[vars.arrayX2][vars.arrayY2][vars.arrayX][vars.arrayY]); console.log(vars.board2); @@ -202,7 +207,14 @@ function isLegal() { if (vars.gameType == 1) { return Boolean(vars.board[vars.arrayX][vars.arrayY] == 'b' && !isWin()); } else { - return Boolean(vars.board2[vars.arrayX2][vars.arrayY2][vars.arrayY][vars.arrayX] == 'b'); + isOpenSpace = Boolean(vars.board2[vars.arrayX2][vars.arrayY2][vars.arrayY][vars.arrayX] == 'b'); + if (vars.gameStart != 0 || (vars.board2[vars.tempArrX][vars.tempArrY] != 'X' && vars.board2[vars.tempArrX][vars.tempArrY] != '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); } } @@ -216,39 +228,67 @@ function drawWin() { //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; + 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] != '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; + } } else { - return false; + if (vars.board2[vars.arrayX2][vars.arrayY2][0][0] == vars.board2[vars.arrayX2][vars.arrayY2][0][1] && vars.board2[vars.arrayX2][vars.arrayY2][0][1] == vars.board2[vars.arrayX2][vars.arrayY2][0][2] && vars.board2[vars.arrayX2][vars.arrayY2][0][2] != 'b') { + vars.board2[vars.arrayX2][vars.arrayY2] = vars.pieceSVG; + return true; + } else if (vars.board2[vars.arrayX2][vars.arrayY2][1][0] == vars.board2[vars.arrayX2][vars.arrayY2][1][1] && vars.board2[vars.arrayX2][vars.arrayY2][1][1] == vars.board2[vars.arrayX2][vars.arrayY2][1][2] && vars.board2[vars.arrayX2][vars.arrayY2][1][2] != 'b') { + vars.board2[vars.arrayX2][vars.arrayY2] = vars.pieceSVG; + return true; + } else if (vars.board2[vars.arrayX2][vars.arrayY2][2][0] == vars.board2[vars.arrayX2][vars.arrayY2][2][1] && vars.board2[vars.arrayX2][vars.arrayY2][2][1] == vars.board2[vars.arrayX2][vars.arrayY2][2][2] && vars.board2[vars.arrayX2][vars.arrayY2][2][2] != 'b') { + vars.board2[vars.arrayX2][vars.arrayY2] = vars.pieceSVG; + return true; + } else if (vars.board2[vars.arrayX2][vars.arrayY2][0][0] == vars.board2[vars.arrayX2][vars.arrayY2][1][0] && vars.board2[vars.arrayX2][vars.arrayY2][1][0] == vars.board2[vars.arrayX2][vars.arrayY2][2][0] && vars.board2[vars.arrayX2][vars.arrayY2][2][0] != 'b') { + vars.board2[vars.arrayX2][vars.arrayY2] = vars.pieceSVG; + return true; + } else if (vars.board2[vars.arrayX2][vars.arrayY2][0][1] == vars.board2[vars.arrayX2][vars.arrayY2][1][1] && vars.board2[vars.arrayX2][vars.arrayY2][1][1] == vars.board2[vars.arrayX2][vars.arrayY2][2][1] && vars.board2[vars.arrayX2][vars.arrayY2][2][1] != 'b') { + vars.board2[vars.arrayX2][vars.arrayY2] = vars.pieceSVG; + return true; + } else if (vars.board2[vars.arrayX2][vars.arrayY2][0][2] == vars.board2[vars.arrayX2][vars.arrayY2][1][2] && vars.board2[vars.arrayX2][vars.arrayY2][1][2] == vars.board2[vars.arrayX2][vars.arrayY2][2][2] && vars.board2[vars.arrayX2][vars.arrayY2][2][2] != 'b') { + vars.board2[vars.arrayX2][vars.arrayY2] = vars.pieceSVG; + return true; + } else if (vars.board2[vars.arrayX2][vars.arrayY2][0][0] == vars.board2[vars.arrayX2][vars.arrayY2][1][1] && vars.board2[vars.arrayX2][vars.arrayY2][1][1] == vars.board2[vars.arrayX2][vars.arrayY2][2][2] && vars.board2[vars.arrayX2][vars.arrayY2][2][2] != 'b') { + vars.board2[vars.arrayX2][vars.arrayY2] = vars.pieceSVG; + return true; + } else if (vars.board2[vars.arrayX2][vars.arrayY2][2][0] == vars.board2[vars.arrayX2][vars.arrayY2][1][1] && vars.board2[vars.arrayX2][vars.arrayY2][1][1] == vars.board2[vars.arrayX2][vars.arrayY2][0][2] && vars.board2[vars.arrayX2][vars.arrayY2][0][2] != 'b') { + vars.board2[vars.arrayX2][vars.arrayY2] = vars.pieceSVG; + return true; + } } + + return false; } \ No newline at end of file From f90cfe422100a5fa17c99690450df3753372003b Mon Sep 17 00:00:00 2001 From: Ethan Sears Date: Sun, 5 May 2024 23:02:42 -0400 Subject: [PATCH 3/4] Tic-Tac-Toe^2 mostly implemented Tic-Tac-Toe^2 fully implemented except for one bug when game ending in draw, the last sub-game won will still display on draw screen --- src/html/scripts/gamez/TTT/TTT.js | 201 ++++++++++++++++++------------ src/html/tictactoe.html | 8 -- 2 files changed, 123 insertions(+), 86 deletions(-) diff --git a/src/html/scripts/gamez/TTT/TTT.js b/src/html/scripts/gamez/TTT/TTT.js index c9adccc..a7878ff 100644 --- a/src/html/scripts/gamez/TTT/TTT.js +++ b/src/html/scripts/gamez/TTT/TTT.js @@ -11,6 +11,7 @@ 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 = [ @@ -53,11 +54,8 @@ function initBoard2() { 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]]; - console.log(window['vars.board' + i + j]); - //vars.board2[i][j][0][0] = 'O'; } } - console.log(vars.board2[0][0][0][0]); } //Draws the game board @@ -114,23 +112,17 @@ function coordinate(event) { 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'); - - } - document.getElementById("gameType").value = vars.gameType; - document.getElementById("X").value = vars.arrayX; - document.getElementById("Y").value = vars.arrayY; - document.getElementById("gameX").value = vars.arrayX2; - document.getElementById("gameY").value = vars.arrayY2; - document.getElementById("arrayValue").value = vars.board2[vars.arrayX2][vars.arrayY2][vars.arrayX][vars.arrayY]; - document.getElementById("arrayTrue").value = isLegal(); - + win(); hoverPiece(); } @@ -152,21 +144,21 @@ function drawPiece() { //Performs functions when clicking function onClick() { + win(); if (isLegal()) { drawPiece(); setArray(); + win(); vars.tempArrX = vars.arrayX; vars.tempArrY = vars.arrayY; - if (!isWin()) { - pieceType(); - if (vars.gameType == 1) { - isFull(); - } + pieceType(); + if (vars.gameType == 1) { + isFull(); } vars.gameStart = 0; } - console.log(vars.board2[vars.arrayX2][vars.arrayY2][vars.arrayX][vars.arrayY]); - console.log(vars.board2); + + win(); } //Determines if board if full @@ -181,15 +173,19 @@ 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 @@ -197,26 +193,25 @@ function setArray() { if (vars.gameType == 1) { vars.board[vars.arrayX][vars.arrayY] = vars.pieceSVG; } else { - //vars.board2[0][0][vars.arrayX][vars.arrayY] = 'O'; - vars.board2[vars.arrayX2][vars.arrayY2][vars.arrayY][vars.arrayX] = 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); } else { - isOpenSpace = Boolean(vars.board2[vars.arrayX2][vars.arrayY2][vars.arrayY][vars.arrayX] == 'b'); - if (vars.gameStart != 0 || (vars.board2[vars.tempArrX][vars.tempArrY] != 'X' && vars.board2[vars.tempArrX][vars.tempArrY] != 'O')) { + 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); + return Boolean(legalMove && !vars.isWin); } - } //Erases board and says winner @@ -226,69 +221,119 @@ function drawWin() { document.getElementById("board").innerHTML = winCode; } +//Draws win of +function drawWin2() { + isFull(); + + overlayX = vars.pieceX2 - 23; + overlayY = vars.pieceY2 - 158; + + let win2 = '' + '
' + + '' + vars.pieceSVG + ''; + + document.getElementById("board").insertAdjacentHTML("beforeend",win2); +} + //Determines if win -function isWin() { +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] != 'b') { + 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(); - 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.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(); - 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.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(); - 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.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(); - 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.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(); - 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.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(); - 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.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(); - 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.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(); - return true; + vars.isWin = true; } } else { - if (vars.board2[vars.arrayX2][vars.arrayY2][0][0] == vars.board2[vars.arrayX2][vars.arrayY2][0][1] && vars.board2[vars.arrayX2][vars.arrayY2][0][1] == vars.board2[vars.arrayX2][vars.arrayY2][0][2] && vars.board2[vars.arrayX2][vars.arrayY2][0][2] != 'b') { - vars.board2[vars.arrayX2][vars.arrayY2] = vars.pieceSVG; - return true; - } else if (vars.board2[vars.arrayX2][vars.arrayY2][1][0] == vars.board2[vars.arrayX2][vars.arrayY2][1][1] && vars.board2[vars.arrayX2][vars.arrayY2][1][1] == vars.board2[vars.arrayX2][vars.arrayY2][1][2] && vars.board2[vars.arrayX2][vars.arrayY2][1][2] != 'b') { - vars.board2[vars.arrayX2][vars.arrayY2] = vars.pieceSVG; - return true; - } else if (vars.board2[vars.arrayX2][vars.arrayY2][2][0] == vars.board2[vars.arrayX2][vars.arrayY2][2][1] && vars.board2[vars.arrayX2][vars.arrayY2][2][1] == vars.board2[vars.arrayX2][vars.arrayY2][2][2] && vars.board2[vars.arrayX2][vars.arrayY2][2][2] != 'b') { - vars.board2[vars.arrayX2][vars.arrayY2] = vars.pieceSVG; - return true; - } else if (vars.board2[vars.arrayX2][vars.arrayY2][0][0] == vars.board2[vars.arrayX2][vars.arrayY2][1][0] && vars.board2[vars.arrayX2][vars.arrayY2][1][0] == vars.board2[vars.arrayX2][vars.arrayY2][2][0] && vars.board2[vars.arrayX2][vars.arrayY2][2][0] != 'b') { - vars.board2[vars.arrayX2][vars.arrayY2] = vars.pieceSVG; - return true; - } else if (vars.board2[vars.arrayX2][vars.arrayY2][0][1] == vars.board2[vars.arrayX2][vars.arrayY2][1][1] && vars.board2[vars.arrayX2][vars.arrayY2][1][1] == vars.board2[vars.arrayX2][vars.arrayY2][2][1] && vars.board2[vars.arrayX2][vars.arrayY2][2][1] != 'b') { - vars.board2[vars.arrayX2][vars.arrayY2] = vars.pieceSVG; - return true; - } else if (vars.board2[vars.arrayX2][vars.arrayY2][0][2] == vars.board2[vars.arrayX2][vars.arrayY2][1][2] && vars.board2[vars.arrayX2][vars.arrayY2][1][2] == vars.board2[vars.arrayX2][vars.arrayY2][2][2] && vars.board2[vars.arrayX2][vars.arrayY2][2][2] != 'b') { - vars.board2[vars.arrayX2][vars.arrayY2] = vars.pieceSVG; - return true; - } else if (vars.board2[vars.arrayX2][vars.arrayY2][0][0] == vars.board2[vars.arrayX2][vars.arrayY2][1][1] && vars.board2[vars.arrayX2][vars.arrayY2][1][1] == vars.board2[vars.arrayX2][vars.arrayY2][2][2] && vars.board2[vars.arrayX2][vars.arrayY2][2][2] != 'b') { - vars.board2[vars.arrayX2][vars.arrayY2] = vars.pieceSVG; - return true; - } else if (vars.board2[vars.arrayX2][vars.arrayY2][2][0] == vars.board2[vars.arrayX2][vars.arrayY2][1][1] && vars.board2[vars.arrayX2][vars.arrayY2][1][1] == vars.board2[vars.arrayX2][vars.arrayY2][0][2] && vars.board2[vars.arrayX2][vars.arrayY2][0][2] != 'b') { - vars.board2[vars.arrayX2][vars.arrayY2] = vars.pieceSVG; - return true; + 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.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.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.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.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.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.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.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.board2[vars.arrayY2][vars.arrayX2] = vars.pieceSVG; + drawWin2(); } } - - return false; } \ No newline at end of file diff --git a/src/html/tictactoe.html b/src/html/tictactoe.html index fe54655..8c46672 100644 --- a/src/html/tictactoe.html +++ b/src/html/tictactoe.html @@ -89,14 +89,6 @@

Welcome to Tic-Tac-Toe

- - - -
- - - - From 0ea7e76a86f7f1cc4851ef5f0ce9a717b23daa0d Mon Sep 17 00:00:00 2001 From: Ethan Sears Date: Mon, 6 May 2024 09:13:23 -0400 Subject: [PATCH 4/4] Finished Tic-Tac-Toe^2 Full implementation of Tic-Tac-Toe^2, previous bug fixed --- src/html/scripts/gamez/TTT/TTT.js | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/html/scripts/gamez/TTT/TTT.js b/src/html/scripts/gamez/TTT/TTT.js index a7878ff..e9343fa 100644 --- a/src/html/scripts/gamez/TTT/TTT.js +++ b/src/html/scripts/gamez/TTT/TTT.js @@ -64,7 +64,8 @@ function drawBoard() { + '' + '' + '' - + ''; + + '' + + ' '; if (vars.gameType == 2) { boardCode += '' + '' @@ -201,7 +202,7 @@ function setArray() { function isLegal() { win(); if (vars.gameType == 1) { - return Boolean(vars.board[vars.arrayX][vars.arrayY] == 'b' && !vars.isWin); + return Boolean(vars.board[vars.arrayX][vars.arrayY] == 'b' && vars.isWin != true); } else { 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')) { @@ -210,7 +211,7 @@ function isLegal() { } else { legalMove = Boolean(isOpenSpace); } - return Boolean(legalMove && !vars.isWin); + return Boolean(legalMove && vars.isWin != true); } } @@ -228,10 +229,9 @@ function drawWin2() { overlayX = vars.pieceX2 - 23; overlayY = vars.pieceY2 - 158; - let win2 = '' + '
' + - '' + vars.pieceSVG + ''; + let win2 = '' + vars.pieceSVG + ''; - document.getElementById("board").insertAdjacentHTML("beforeend",win2); + document.getElementById("board2").insertAdjacentHTML("beforeend",win2); } //Determines if win @@ -310,28 +310,28 @@ function win() { 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') { + } 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') { + } 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') { + } 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') { + } 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') { + } 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') { + } 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') { + } 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') { + } 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(); }