User prompt
In the initializehexTiles() function, on the if statement that defines the gridRows for each level, also add a new variable to define the hextiles.number for each level too.
Code edit (7 edits merged)
Please save this source code
User prompt
replace switch (level) in initializehexTiles() for an if statement
Code edit (2 edits merged)
Please save this source code
User prompt
on level up, remove previous hex tile before initializehextiles function
User prompt
after every level up, execute initializeHexTiles();
User prompt
Make sure hex tiles are updated depening on the level and the switch statement for gridrows
User prompt
please add initialize hex tiles into a function.
User prompt
Please fix the bug: 'ReferenceError: initializeHexTiles is not defined' in or related to this line: 'initializeHexTiles();' Line Number: 233
User prompt
Please re initialize hex tiles every time the level is increased
User prompt
update hex tiles with grid rows value every time after the level is updated
Code edit (1 edits merged)
Please save this source code
User prompt
Please fix the bug: 'Uncaught ReferenceError: gridRows is not defined' in or related to this line: 'var startX = (2048 - Math.max.apply(Math, gridRows) * tileSpacing) / 2 + tileSpacing / 2;' Line Number: 138
User prompt
when level is changed, make sure to check gridrows switch statement
User prompt
allow to define gridrows depending on the game level.
Code edit (1 edits merged)
Please save this source code
User prompt
on level start, make sure all numbers in hexes are visible
Code edit (1 edits merged)
Please save this source code
User prompt
when unselected, hide number again
User prompt
When a hex is selected, show the number in it.
Code edit (4 edits merged)
Please save this source code
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'number')' in or related to this line: 'sumOfNeighbours = hexTiles[hexTiles.length - 2].number + hexTiles[hexTiles.length - 1].number;' Line Number: 144
Code edit (2 edits merged)
Please save this source code
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'number')' in or related to this line: 'sumOfNeighbours = hexTiles[hexTiles.length - 2].number + hexTiles[hexTiles.length - 1].number;' Line Number: 144
Code edit (1 edits merged)
Please save this source code
/**** * Classes ****/ // HexTile class for the hexagon tiles var HexTile = Container.expand(function (id, colorIndex) { var self = Container.call(this); self.id = id; var hexGraphics = self.attachAsset('hexTile', { anchorX: 0.5, anchorY: 0.5, scaleX: 2, scaleY: 2 }); self.number = Math.floor(Math.random() * 7) + 1; var numberText = new Text2(self.number.toString(), { size: 100, fill: '#000000' }); numberText.anchor.set(0.5, 0.5); self.addChild(numberText); self.isSelected = false; self.toggleSelect = function () { self.isSelected = !self.isSelected; hexGraphics.alpha = self.isSelected ? 0.5 : 1; }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 // Init game with electric green background }); /**** * Game Code ****/ // Hexagon tile for matching function resetGameForNextLevel() { // Reset hexTiles numbers for (var i = 0; i < hexTiles.length; i++) { hexTiles[i].number = Math.floor(Math.random() * 7) + 1; hexTiles[i].getChildAt(1).setText(hexTiles[i].number.toString()); } // Reset goal var randomTile1 = hexTiles[Math.floor(Math.random() * hexTiles.length)]; var randomTile2 = hexTiles[Math.floor(Math.random() * hexTiles.length)]; while (randomTile1 === randomTile2) { randomTile2 = hexTiles[Math.floor(Math.random() * hexTiles.length)]; } goalNumber = randomTile1.number + randomTile2.number; goalText.setText('Sum: ' + goalNumber); // Reset combinations correctCombinations = 0; for (var i = 0; i < hexTiles.length; i++) { for (var j = i + 1; j < hexTiles.length; j++) { if (hexTiles[i].number + hexTiles[j].number === goalNumber) { correctCombinations++; } } } combinationsText.setText('Answers: ' + correctGuess + '/' + correctCombinations); } var level = 1; var levelText = new Text2('Level: ' + level, { size: 75, fill: '#ffffff' }); levelText.anchor.set(1, 0); LK.gui.topRight.addChild(levelText); correctGuess = 0; var correctGuess = 0; var lives = 3; var lifeIcons = []; for (var i = 0; i < lives; i++) { var lifeIcon = LK.getAsset('lifeIcon', { anchorX: 1, anchorY: 0, x: -i * 90, y: 100 }); LK.gui.topRight.addChild(lifeIcon); lifeIcons.push(lifeIcon); } var countdown = 15; if (hexTiles) { for (var i = 0; i < hexTiles.length; i++) { hexTiles[i].interactive = false; } } var countdownText = new Text2('Memorize: ' + countdown, { size: 100, fill: '#ffffff' }); countdownText.anchor.set(0.5, 1); LK.gui.top.addChild(countdownText); var countdownInterval = LK.setInterval(function () { countdown--; if (countdown <= 0) { for (var i = 0; i < hexTiles.length; i++) { hexTiles[i].interactive = true; } countdownText.alpha = 0; goalText.visible = true; combinationsText.visible = true; LK.clearInterval(countdownInterval); for (var i = 0; i < hexTiles.length; i++) { hexTiles[i].getChildAt(1).setText(''); } } else { countdownText.setText('Memorize: ' + countdown); } }, 1000); countdownText.y += 400; var scoreText = new Text2('Score: 0', { size: 75, fill: '#ffffff' }); scoreText.anchor.set(0.5, 0); LK.gui.top.addChild(scoreText); // Create goal number and display it below the score if (hexTiles && hexTiles.length > 1) { sumOfNeighbours = hexTiles[hexTiles.length - 2].number + hexTiles[hexTiles.length - 1].number; } // sumText initialization moved to after hexTiles initialization var sumOfNeighbours = 0; var hexTiles = []; var selectedTiles = []; var guessedPairs = {}; // Define gridRows based on the current game level var gridRows = [2, 3, 2]; var tileSpacing = 240; var startX = (2048 - Math.max.apply(Math, gridRows) * tileSpacing) / 2 + tileSpacing / 2; var startY = (2732 - gridRows.length * tileSpacing) / 2 + tileSpacing / 2; function initializeHexTiles() { function initializeHexTiles() { // Define gridRows based on the current game level var gridRows; if (level === 1) { gridRows = [2, 3, 2]; } else if (level === 3) { gridRows = [3, 4, 3]; } else if (level === 4) { gridRows = [4, 5, 4]; } else { // Default to the highest defined grid for levels beyond those explicitly defined gridRows = [4, 5, 4]; } var tileSpacing = 240; var startX = (2048 - Math.max.apply(Math, gridRows) * tileSpacing) / 2 + tileSpacing / 2; var startY = (2732 - gridRows.length * tileSpacing) / 2 + tileSpacing / 2; // Initialize hex tiles for (var i = 0; i < gridRows.length; i++) { for (var j = 0; j < gridRows[i]; j++) { var hexTile = new HexTile(i * gridRows.length + j); hexTile.x = startX + j * tileSpacing + (Math.max.apply(Math, gridRows) - gridRows[i]) * tileSpacing / 2; hexTile.y = startY + i * tileSpacing; game.addChild(hexTile); hexTiles.push(hexTile); (function (hexTile) { hexTile.on('down', function (obj) { if (countdown > 0) { return; } if (selectedTiles.length < 2) { hexTile.toggleSelect(); if (hexTile.isSelected) { selectedTiles.push(hexTile); if (selectedTiles.length == 2) { if (selectedTiles[0].number + selectedTiles[1].number === goalNumber) { var pairId = [selectedTiles[0].id, selectedTiles[1].id].sort().join('-'); if (!guessedPairs[pairId]) { LK.setScore(LK.getScore() + 1); scoreText.setText('Score: ' + LK.getScore()); guessedPairs[pairId] = true; correctGuess++; combinationsText.setText('Answers: ' + correctGuess + '/' + correctCombinations); } LK.setTimeout(function () { if (selectedTiles.length > 0) { selectedTiles[0].toggleSelect(); } if (selectedTiles.length > 1) { selectedTiles[1].toggleSelect(); } selectedTiles = []; }, 200); if (correctGuess === correctCombinations) { level++; correctGuess = 0; guessedPairs = {}; combinationsText.setText('Answers: ' + correctGuess + '/' + correctCombinations); levelText.setText('Level: ' + level); countdown = 15; goalText.visible = false; combinationsText.visible = false; countdownText.alpha = 1; countdownText.setText('Memorize: ' + countdown); LK.clearInterval(countdownInterval); countdownInterval = LK.setInterval(function () { countdown--; if (countdown <= 0) { countdownText.alpha = 0; goalText.visible = true; combinationsText.visible = true; LK.clearInterval(countdownInterval); for (var i = 0; i < hexTiles.length; i++) { hexTiles[i].getChildAt(1).setText(''); } } else { countdownText.setText('Memorize: ' + countdown); } }, 1000); LK.effects.flashScreen(0x00FF00, 500); // Remove previous hex tiles for (var i = 0; i < hexTiles.length; i++) { hexTiles[i].destroy(); } hexTiles = []; initializeHexTiles(); } } else { lives--; lifeIcons[lives].destroy(); if (lives <= 0) { LK.showGameOver(); } else { LK.effects.flashScreen(0xFF0000, 500); } LK.setTimeout(function () { if (selectedTiles.length > 0) { selectedTiles[0].toggleSelect(); } if (selectedTiles.length > 1) { selectedTiles[1].toggleSelect(); } selectedTiles = []; }, 200); } } } else { var index = selectedTiles.indexOf(hexTile); if (index > -1) { selectedTiles.splice(index, 1); } } } }); })(hexTile); } } } initializeHexTiles(); } initializeHexTiles(); var randomTile1 = hexTiles[Math.floor(Math.random() * hexTiles.length)]; var randomTile2 = hexTiles[Math.floor(Math.random() * hexTiles.length)]; while (randomTile1 === randomTile2) { randomTile2 = hexTiles[Math.floor(Math.random() * hexTiles.length)]; } var goalNumber = randomTile1.number + randomTile2.number; var goalText = new Text2('Sum: ' + goalNumber, { size: 100, fill: '#ffffff', alpha: 0 // Make invisible initially }); goalText.visible = false; goalText.anchor.set(0.5, 1); goalText.y += 400; LK.gui.top.addChild(goalText); // Calculate the number of unique correct combinations var correctCombinations = 0; for (var i = 0; i < hexTiles.length; i++) { for (var j = i + 1; j < hexTiles.length; j++) { if (hexTiles[i].number + hexTiles[j].number === goalNumber) { correctCombinations++; } } } // Display the number of unique correct combinations below the goal var combinationsText = new Text2('Answers: ' + correctGuess + '/' + correctCombinations, { size: 100, fill: '#ffffff', alpha: 1 // Make visible }); combinationsText.visible = false; combinationsText.anchor.set(0.5, 0); combinationsText.y += 1400; LK.gui.top.addChild(combinationsText); // Game tick function LK.on('tick', function () { // Game logic that needs to be executed every frame });
===================================================================
--- original.js
+++ change.js
@@ -127,47 +127,25 @@
var hexTiles = [];
var selectedTiles = [];
var guessedPairs = {};
// Define gridRows based on the current game level
-var gridRows;
-switch (level) {
- case 1:
- gridRows = [2, 3, 2];
- break;
- case 2:
- gridRows = [3, 4, 3];
- break;
- case 3:
- gridRows = [4, 5, 4];
- break;
- // Add more cases as needed for higher levels
- default:
- // Default to the highest defined grid for levels beyond those explicitly defined
- gridRows = [4, 5, 4];
- break;
-}
+var gridRows = [2, 3, 2];
var tileSpacing = 240;
var startX = (2048 - Math.max.apply(Math, gridRows) * tileSpacing) / 2 + tileSpacing / 2;
var startY = (2732 - gridRows.length * tileSpacing) / 2 + tileSpacing / 2;
function initializeHexTiles() {
function initializeHexTiles() {
// Define gridRows based on the current game level
var gridRows;
- switch (level) {
- case 1:
- gridRows = [2, 3, 2];
- break;
- case 2:
- gridRows = [2, 3, 2];
- break;
- case 3:
- gridRows = [4, 5, 4];
- break;
- // Add more cases as needed for higher levels
- default:
- // Default to the highest defined grid for levels beyond those explicitly defined
- gridRows = [4, 5, 4];
- break;
+ if (level === 1) {
+ gridRows = [2, 3, 2];
+ } else if (level === 3) {
+ gridRows = [3, 4, 3];
+ } else if (level === 4) {
+ gridRows = [4, 5, 4];
+ } else {
+ // Default to the highest defined grid for levels beyond those explicitly defined
+ gridRows = [4, 5, 4];
}
var tileSpacing = 240;
var startX = (2048 - Math.max.apply(Math, gridRows) * tileSpacing) / 2 + tileSpacing / 2;
var startY = (2732 - gridRows.length * tileSpacing) / 2 + tileSpacing / 2;