===================================================================
--- original.js
+++ change.js
@@ -1,44 +1,44 @@
-/****
+/****
* Classes
-****/
+****/
//<Assets used in the game will automatically appear here>
// Class for a Tic Tac Toe cell
var Cell = Container.expand(function () {
- var self = Container.call(this);
- self.value = null; // 'X' or 'O'
- self.graphics = self.attachAsset('cell', {
- anchorX: 0.5,
- anchorY: 0.5
- });
- self.setValue = function (value) {
- self.value = value;
- if (value === 'X') {
- self.graphics.tint = 0xff0000; // Red for X
- } else if (value === 'O') {
- self.graphics.tint = 0x0000ff; // Blue for O
- }
- };
- self.reset = function () {
- self.value = null;
- self.graphics.tint = 0xffffff; // Reset to white
- };
- self.isEmpty = function () {
- return self.value === null;
- };
- return self;
+ var self = Container.call(this);
+ self.value = null; // 'X' or 'O'
+ self.graphics = self.attachAsset('cell', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.setValue = function (value) {
+ self.value = value;
+ if (value === 'X') {
+ self.graphics.tint = 0xff0000; // Red for X
+ } else if (value === 'O') {
+ self.graphics.tint = 0x0000ff; // Blue for O
+ }
+ };
+ self.reset = function () {
+ self.value = null;
+ self.graphics.tint = 0xffffff; // Reset to white
+ };
+ self.isEmpty = function () {
+ return self.value === null;
+ };
+ return self;
});
-/****
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000 //Init game with black background
+ backgroundColor: 0x000000 //Init game with black background
});
-/****
+/****
* Game Code
-****/
+****/
// Initialize game variables
var board = [];
var currentPlayer = 'X';
var gameOver = false;
@@ -47,89 +47,92 @@
var boardOffsetX = (2048 - boardSize * cellSize) / 2;
var boardOffsetY = (2732 - boardSize * cellSize) / 2;
// Create the board
for (var i = 0; i < boardSize; i++) {
- board[i] = [];
- for (var j = 0; j < boardSize; j++) {
- var cell = new Cell();
- cell.x = boardOffsetX + j * cellSize + cellSize / 2;
- cell.y = boardOffsetY + i * cellSize + cellSize / 2;
- game.addChild(cell);
- board[i][j] = cell;
- }
+ board[i] = [];
+ for (var j = 0; j < boardSize; j++) {
+ var cell = new Cell();
+ cell.x = boardOffsetX + j * cellSize + cellSize / 2;
+ cell.y = boardOffsetY + i * cellSize + cellSize / 2;
+ game.addChild(cell);
+ board[i][j] = cell;
+ }
}
// Check for a win or draw
function checkGameOver() {
- // Check rows and columns
- for (var i = 0; i < boardSize; i++) {
- if (board[i][0].value && board[i][0].value === board[i][1].value && board[i][1].value === board[i][2].value) {
- return board[i][0].value;
- }
- if (board[0][i].value && board[0][i].value === board[1][i].value && board[1][i].value === board[2][i].value) {
- return board[0][i].value;
- }
- }
- // Check diagonals
- if (board[0][0].value && board[0][0].value === board[1][1].value && board[1][1].value === board[2][2].value) {
- return board[0][0].value;
- }
- if (board[0][2].value && board[0][2].value === board[1][1].value && board[1][1].value === board[2][0].value) {
- return board[0][2].value;
- }
- // Check for draw
- var draw = true;
- for (var i = 0; i < boardSize; i++) {
- for (var j = 0; j < boardSize; j++) {
- if (board[i][j].isEmpty()) {
- draw = false;
- break;
- }
- }
- }
- if (draw) {
- return 'draw';
- }
- return null;
+ // Check if a player has cleared three boxes
+ var xCount = 0;
+ var oCount = 0;
+ for (var i = 0; i < boardSize; i++) {
+ for (var j = 0; j < boardSize; j++) {
+ if (board[i][j].value === 'X') {
+ xCount++;
+ } else if (board[i][j].value === 'O') {
+ oCount++;
+ }
+ }
+ }
+ if (xCount >= 3) {
+ return 'X';
+ } else if (oCount >= 3) {
+ return 'O';
+ }
+ // Check for draw
+ var draw = true;
+ for (var i = 0; i < boardSize; i++) {
+ for (var j = 0; j < boardSize; j++) {
+ if (board[i][j].isEmpty()) {
+ draw = false;
+ break;
+ }
+ }
+ }
+ if (draw) {
+ return 'draw';
+ }
+ return null;
}
// Handle cell click
function handleCellClick(x, y, obj) {
- if (gameOver) return;
- var cell = obj.target;
- if (cell.isEmpty()) {
- cell.setValue(currentPlayer);
- var result = checkGameOver();
- if (result) {
- gameOver = true;
- if (result === 'draw') {
- console.log("It's a draw!");
- } else {
- console.log(result + " wins!");
- }
- } else {
- currentPlayer = currentPlayer === 'X' ? 'O' : 'X';
- }
- }
+ if (gameOver) {
+ return;
+ }
+ var cell = obj.target;
+ if (cell.isEmpty()) {
+ cell.setValue(currentPlayer);
+ var result = checkGameOver();
+ if (result) {
+ gameOver = true;
+ if (result === 'draw') {
+ console.log("It's a draw!");
+ } else {
+ console.log(result + " wins!");
+ }
+ } else {
+ currentPlayer = currentPlayer === 'X' ? 'O' : 'X';
+ }
+ }
}
// Attach event listeners to cells
for (var i = 0; i < boardSize; i++) {
- for (var j = 0; j < boardSize; j++) {
- board[i][j].down = handleCellClick;
- }
+ for (var j = 0; j < boardSize; j++) {
+ board[i][j].down = handleCellClick;
+ }
}
// Reset the game
function resetGame() {
- for (var i = 0; i < boardSize; i++) {
- for (var j = 0; j < boardSize; j++) {
- board[i][j].reset();
- }
- }
- currentPlayer = 'X';
- gameOver = false;
+ for (var i = 0; i < boardSize; i++) {
+ for (var j = 0; j < boardSize; j++) {
+ board[i][j].reset();
+ }
+ }
+ currentPlayer = 'X';
+ gameOver = false;
}
// Add a reset button
var resetButton = new Text2('Reset', {
- size: 100,
- fill: "#ffffff"
+ size: 100,
+ fill: "#ffffff"
});
resetButton.anchor.set(0.5, 0.5);
resetButton.x = 2048 / 2;
resetButton.y = 2732 - 200;