Code edit (1 edits merged)
Please save this source code
User prompt
hide countdown the first time hextiles are initialized
User prompt
On game start, please hide coundown number
Code edit (1 edits merged)
Please save this source code
User prompt
show level text after first screen touch
User prompt
Please hide level text on game start until touch is done
User prompt
Hide level text on game start until first touch of the screen is done
User prompt
hide lifes on game start until any touch is done
User prompt
please hide level 1 countdown on game start until any touch is made
User prompt
Please make sure Countdown text is not displayed on game start, should be hidden until first touch
Code edit (7 edits merged)
Please save this source code
User prompt
countdowns shoudl be displayed after first touch of screen in game
User prompt
Hide countdown text until first touch of the screen happens
User prompt
Hide Level text on game start until first touch of the screen
User prompt
Hide level and lifes until the first touch of the screen in done when a game starts
User prompt
Countdown text should be hidden on game start until first touch of the screen
User prompt
Hide countdown on game start until first touch is done in the screen
User prompt
Hide numbers in tiles on game start until first touch of the screen is done
Code edit (1 edits merged)
Please save this source code
Code edit (10 edits merged)
Please save this source code
User prompt
Add bullet point to How to play
User prompt
add a bullet point in the text Memorize the numbers on countdown
Code edit (3 edits merged)
Please save this source code
User prompt
center align text for howtoplaytext
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 }); var numberText = new Text2('', { size: 100, fill: '#333333' // Slightly lighter black }); numberText.anchor.set(0.5, 0.5); self.addChild(numberText); self.setNumber = function (number) { self.number = number; numberText.setText(''); }; self.isSelected = false; self.toggleSelect = function () { self.isSelected = !self.isSelected; hexGraphics.alpha = self.isSelected ? 0.5 : 1; if (self.isSelected) { numberText.setText(self.number.toString()); } else { numberText.setText(''); } }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: [0xADD8E6, 0xFAD7A5, 0xFFB6C1, 0xFFA07A, 0xB39BDB, 0x90EE90][Math.floor(Math.random() * 6)] // Randomly choose from soft light blue, soft light orange, soft pink, soft light red, soft light yellow, soft light green }); /**** * Game Code ****/ // Hexagon tile for matching var howToPlayText = new Text2('How to Play: \n• Memorize the numbers on countdown \n• Wait for goal number to appear above hex tiles \n• Touch two hexes that add up to the number \n• Repeat until all combinations possible are found', { size: 60, fill: '#ffffff', alpha: 1 }); howToPlayText.anchor.set(0.5, 0.5); howToPlayText.x = 0; howToPlayText.y = 1500; LK.gui.top.addChild(howToPlayText); // Modify game's 'down' event listener to hide howToPlayText after first touch var originalGameDownHandler = game._events && game._events['down'] ? game._events['down'][0] : function () {}; function newGameDownHandler(obj) { howToPlayText.alpha = 0; originalGameDownHandler(obj); for (var i = 0; i < hexTiles.length; i++) { hexTiles[i].getChildAt(1).setText(hexTiles[i].number.toString()); } } game.off('down', originalGameDownHandler); game.on('down', newGameDownHandler); game.on('down', function (obj) { playerTouchedScreen = true; }); var playerTouchedScreen = false; function resetGameForNextLevel() { // Reset hexTiles numbers for (var i = 0; i < hexTiles.length; i++) { // Number generation and assignment removed from here to be handled inside initializeHexTiles function. } // 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(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(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(countdown, { size: 300, fill: '#ffffff' }); countdownText.anchor.set(0.5, 1); LK.gui.top.addChild(countdownText); var countdownInterval = LK.setInterval(function () { if (playerTouchedScreen) { 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(countdown); } } }, 1000); countdownText.y += 550; //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 = {}; var gridRows = []; function initializeHexTiles() { function initializeHexTiles() { // Define gridRows based on the current game level var gridRows; if (level <= 2) { 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 = [3, 4, 5, 4, 3]; } var tileSpacingX = 250; var tileSpacingY = 210; var startX = (2048 - Math.max.apply(Math, gridRows) * tileSpacingX) / 2 + tileSpacingX / 2; var startY = (2732 - gridRows.length * tileSpacingY) / 2 + tileSpacingY / 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); var numberRange; if (level <= 2) { numberRange = 3; } else if (level <= 5) { numberRange = 9; } else { numberRange = 12; } hexTile.setNumber(Math.floor(Math.random() * numberRange) + 1); hexTile.x = startX + j * tileSpacingX + (Math.max.apply(Math, gridRows) - gridRows[i]) * tileSpacingX / 2; hexTile.y = startY + i * tileSpacingY; 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); // Removed undefined reference to scoreText // scoreText.setText('Score: ' + LK.getScore()); guessedPairs[pairId] = true; correctGuess++; combinationsText.setText(correctGuess + '/' + correctCombinations); } LK.setTimeout(function () { if (selectedTiles.length > 0) { selectedTiles[0].toggleSelect(); } if (selectedTiles.length > 1) { selectedTiles[1].toggleSelect(); } selectedTiles = []; }, 300); if (correctGuess === correctCombinations) { level++; correctGuess = 0; guessedPairs = {}; combinationsText.setText(correctGuess + '/' + correctCombinations); levelText.setText('Level ' + level); countdown = 15; goalText.visible = false; combinationsText.visible = false; countdownText.alpha = 1; countdownText.setText(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(countdown); } }, 1000); LK.effects.flashScreen(0x90EE90, 500); // Remove previous hex tiles for (var i = 0; i < hexTiles.length; i++) { hexTiles[i].destroy(); } hexTiles = []; initializeHexTiles(); // Update goal and guesses with new numbers on the new grid // Ensure a different random background color is chosen when the level changes, different from the previous one. var previousBackgroundColor = game.backgroundColor; var newColors = [0xADD8E6, 0xFAD7A5, 0xFFB6C1, 0xFFA07A, 0xB39BDB, 0x90EE90].filter(function (color) { return color !== previousBackgroundColor; }); game.setBackgroundColor(newColors[Math.floor(Math.random() * newColors.length)]); 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(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(correctGuess + '/' + correctCombinations); } } else { lives--; lifeIcons[lives].destroy(); if (lives <= 0) { LK.showGameOver(); } else { LK.effects.flashScreen(0xFFA07A, 500); } LK.setTimeout(function () { if (selectedTiles.length > 0) { selectedTiles[0].toggleSelect(); } if (selectedTiles.length > 1) { selectedTiles[1].toggleSelect(); } selectedTiles = []; }, 300); } } } 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(goalNumber, { size: 300, fill: '#ffffff', alpha: 0 // Make invisible initially }); goalText.visible = false; goalText.anchor.set(0.5, 1); goalText.y += 550; 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(correctGuess + '/' + correctCombinations, { size: 200, 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
@@ -18,9 +18,9 @@
numberText.anchor.set(0.5, 0.5);
self.addChild(numberText);
self.setNumber = function (number) {
self.number = number;
- numberText.setText(number.toString());
+ numberText.setText('');
};
self.isSelected = false;
self.toggleSelect = function () {
self.isSelected = !self.isSelected;
@@ -57,8 +57,11 @@
var originalGameDownHandler = game._events && game._events['down'] ? game._events['down'][0] : function () {};
function newGameDownHandler(obj) {
howToPlayText.alpha = 0;
originalGameDownHandler(obj);
+ for (var i = 0; i < hexTiles.length; i++) {
+ hexTiles[i].getChildAt(1).setText(hexTiles[i].number.toString());
+ }
}
game.off('down', originalGameDownHandler);
game.on('down', newGameDownHandler);
game.on('down', function (obj) {