User prompt
After showing endgame1, wait 2 seconds then swap to incorrect scene
User prompt
Make endgame1 scene swap to incorrect scene in 2 seconds
User prompt
Add retry button to incorrect scene to restart the puzzle
User prompt
Make incorrect and endgame1 asset the same size
User prompt
Make endgame1 and incorrect asset larger
User prompt
Make incorrect word larger
User prompt
Make incorrect word larger
User prompt
Move incorrect word to bottom of screen
User prompt
Remove blank image from incorrect scene
User prompt
Why is blank image showing on incorrect scene
User prompt
When endgame1 scene appears after incorrect answer is entered wait 3 seconds the swap endgame1 scene with incorrect scene with the incorrect word under the incorrect image
User prompt
When greentick is clicked and the attempt is wrong move to a scene with endgame1 asset
User prompt
Click tick to enter your attempt at the puzzle
User prompt
Add green tick to bottom right corner of puzzle scene
User prompt
Show clues
User prompt
Create clues that will find the solution
User prompt
Generate a clues list for random results so puzzle game can be replayed multiple times with different results
User prompt
Click on instructions text to dismiss and show a list of clues to solve the puzzle
User prompt
When dots 6-10 are clicked scroll through the blank, pizza, chips, icecream, donut and spaghetti images on the spot they are clicked
User prompt
When dots 6 -10 are clicked scroll through the blank, thrift, antique, toy, sport and clothes images on the spot they are clicked
User prompt
When dots 11 -15 are clicked scroll through the blank, lego, dolls, basketball, videogame and plushtoy images on the spot they are clicked
User prompt
Prevent duplicate animal images in dots 16-20 row
User prompt
When dots 16 -20 are clicked scroll through the blank, Cat, dog, fish, frog and turtle images on the spot they are clicked
User prompt
Move KJ down 5
User prompt
If a child image in dot 21-25 row is being shown prevent it being shown again in another box
/****
* Classes
****/
// Character class for main character gameplay elements
var Character = Container.expand(function () {
var self = Container.call(this);
// Example: add a character sprite (replace 'Sprite' with your character asset if needed)
var characterSprite = self.attachAsset('Sprite', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2732 / 2
});
// Example: character name
self.name = "Lyra";
// Example: character state
self.isActive = true;
// Example: method to set character name
self.setName = function (newName) {
self.name = newName;
};
// Example: method to activate/deactivate character
self.setActive = function (active) {
self.isActive = !!active;
};
// Example: update method for per-frame logic
self.update = function () {
// Add per-frame logic for the character here
};
return self;
});
// Dot class for interactive dots in the puzzle
var Dot = Container.expand(function () {
var self = Container.call(this);
// Create a visual representation for the dot
var dotGraphics = self.attachAsset('Street', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.8,
scaleY: 1.8,
alpha: 0
});
// Dot properties
self.isActive = false;
self.gridX = 0;
self.gridY = 0;
self.instrumentIndex = 0;
self.currentInstrument = null;
// Array of instrument image IDs for first row (dots 1-5)
self.instruments = ['Blank', 'Saxophone', 'Drum', 'Gutair', 'Harp', 'Flute'];
// Array of image IDs for dots 21-25 (bottom row)
self.specialInstruments = ['Blank', 'PJ', 'KJ', 'Harmony', 'Khalida', 'Sapphire'];
// Method to toggle dot state
self.toggle = function () {
self.isActive = !self.isActive;
};
// Method to cycle through instruments for first row (dots 1-5)
self.cycleInstrument = function () {
// Remove current instrument if it exists and free it from usedInstruments
if (self.currentInstrument) {
var currentInstrumentId = self.instruments[self.instrumentIndex];
if (currentInstrumentId !== 'Blank' && usedInstruments[currentInstrumentId] === self) {
delete usedInstruments[currentInstrumentId];
}
self.removeChild(self.currentInstrument);
self.currentInstrument = null;
}
// Find next available instrument
var startIndex = self.instrumentIndex;
var found = false;
do {
self.instrumentIndex = (self.instrumentIndex + 1) % self.instruments.length;
var instrumentId = self.instruments[self.instrumentIndex];
// Check if instrument is available (Blank is always available)
if (instrumentId === 'Blank' || !usedInstruments[instrumentId]) {
found = true;
// Mark non-blank instruments as used
if (instrumentId !== 'Blank') {
usedInstruments[instrumentId] = self;
}
// Create new instrument image
self.currentInstrument = self.attachAsset(instrumentId, {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.0,
scaleY: 1.0
});
break;
}
} while (self.instrumentIndex !== startIndex);
// If no available instrument found, stay on current (shouldn't happen with 6 instruments for 5 dots)
if (!found) {
self.instrumentIndex = startIndex;
}
};
// Method to cycle through special images for dots 21-25 (bottom row)
self.cycleSpecialInstrument = function () {
// Remove current instrument if it exists
if (self.currentInstrument) {
// Remove from usedSpecialInstruments if not Blank
if (typeof usedSpecialInstruments !== "undefined" && self.specialInstruments && typeof self.specialInstrumentIndex === "number") {
var prevId = self.specialInstruments[self.specialInstrumentIndex];
if (prevId !== 'Blank' && usedSpecialInstruments[prevId] === self) {
delete usedSpecialInstruments[prevId];
}
}
self.removeChild(self.currentInstrument);
self.currentInstrument = null;
}
// Find next available special instrument (no duplicates except Blank)
if (typeof usedSpecialInstruments === "undefined") {
usedSpecialInstruments = {};
}
if (typeof self.specialInstrumentIndex !== "number") self.specialInstrumentIndex = 0;
self.specialInstrumentIndex = typeof self.specialInstrumentIndex === "number" ? self.specialInstrumentIndex : 0;
var startIndex = self.specialInstrumentIndex;
var found = false;
do {
self.specialInstrumentIndex = (self.specialInstrumentIndex + 1) % self.specialInstruments.length;
var instrumentId = self.specialInstruments[self.specialInstrumentIndex];
// Only allow Blank or unused
if (instrumentId === 'Blank' || !usedSpecialInstruments[instrumentId]) {
found = true;
// Mark as used if not Blank
if (instrumentId !== 'Blank') {
usedSpecialInstruments[instrumentId] = self;
}
// Slightly decrease the size of all special images for dots 21-25
var scaleX = 0.85;
var scaleY = 0.85;
if (instrumentId === 'Harmony') {
scaleX = 1.45;
scaleY = 1.45;
}
// Move Khalida or Harmony image up by 10 pixels, move KJ down by 5 pixels
var extraY = 0;
if (instrumentId === 'Khalida' || instrumentId === 'Harmony') {
extraY = -10;
}
if (instrumentId === 'KJ') {
extraY = 5;
}
self.currentInstrument = self.attachAsset(instrumentId, {
anchorX: 0.5,
anchorY: 0.5,
scaleX: scaleX,
scaleY: scaleY,
y: extraY
});
break;
}
} while (self.specialInstrumentIndex !== startIndex);
// If no available instrument found, stay on current (shouldn't happen)
if (!found) {
self.specialInstrumentIndex = startIndex;
}
};
// Touch/click handler
self.down = function (x, y, obj) {
// Only cycle instruments for dots 1-5 (first row)
if (self.gridY === 0) {
self.cycleInstrument();
}
// Dots 21-25 (bottom row, gridY === 4, gridX 0-4)
else if (self.gridY === 4) {
self.cycleSpecialInstrument();
}
// Dots 16-20 (row 4, gridY === 3, gridX 0-4)
else if (self.gridY === 3) {
// Animal images to cycle through
if (!self.animalImages) {
self.animalImages = ['Blank', 'Cat', 'Dog', 'Fish', 'Frog', 'Turtle'];
self.animalIndex = 0;
}
// Setup usedAnimalImages global tracker if not present
if (typeof usedAnimalImages === "undefined") {
usedAnimalImages = {};
}
// Remove current animal image if exists and update usedAnimalImages
if (self.currentInstrument) {
if (typeof self.animalIndex === "number") {
var prevAnimalId = self.animalImages[self.animalIndex];
if (prevAnimalId !== 'Blank' && usedAnimalImages[prevAnimalId] === self) {
delete usedAnimalImages[prevAnimalId];
}
}
self.removeChild(self.currentInstrument);
self.currentInstrument = null;
}
// Cycle to next available animal image (no duplicates except Blank)
var startIndex = typeof self.animalIndex === "number" ? self.animalIndex : 0;
var found = false;
var tries = 0;
do {
self.animalIndex = (typeof self.animalIndex === "number" ? self.animalIndex : 0) + 1;
if (self.animalIndex >= self.animalImages.length) self.animalIndex = 0;
var animalId = self.animalImages[self.animalIndex];
// Only allow Blank or unused
if (animalId === 'Blank' || !usedAnimalImages[animalId]) {
found = true;
// Mark as used if not Blank
if (animalId !== 'Blank') {
usedAnimalImages[animalId] = self;
}
self.currentInstrument = self.attachAsset(animalId, {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.0,
scaleY: 1.0
});
break;
}
tries++;
} while (self.animalIndex !== startIndex && tries < self.animalImages.length + 1);
// If no available animal found, stay on current (shouldn't happen)
if (!found) {
self.animalIndex = startIndex;
}
}
// Dots 6-10 (row 2, gridY === 1, gridX 0-4)
else if (self.gridY === 1) {
// Food images to cycle through
if (!self.foodImages) {
self.foodImages = ['Blank', 'Pizza', 'Chips', 'Icecream', 'Donut', 'Spaghetti'];
self.foodIndex = 0;
}
// Setup usedFoodImages global tracker if not present
if (typeof usedFoodImages === "undefined") {
usedFoodImages = {};
}
// Remove current food image if exists and update usedFoodImages
if (self.currentInstrument) {
if (typeof self.foodIndex === "number") {
var prevFoodId = self.foodImages[self.foodIndex];
if (prevFoodId !== 'Blank' && usedFoodImages[prevFoodId] === self) {
delete usedFoodImages[prevFoodId];
}
}
self.removeChild(self.currentInstrument);
self.currentInstrument = null;
}
// Cycle to next available food image (no duplicates except Blank)
var startFoodIndex = typeof self.foodIndex === "number" ? self.foodIndex : 0;
var foundFood = false;
var foodTries = 0;
do {
self.foodIndex = (typeof self.foodIndex === "number" ? self.foodIndex : 0) + 1;
if (self.foodIndex >= self.foodImages.length) self.foodIndex = 0;
var foodId = self.foodImages[self.foodIndex];
// Only allow Blank or unused
if (foodId === 'Blank' || !usedFoodImages[foodId]) {
foundFood = true;
// Mark as used if not Blank
if (foodId !== 'Blank') {
usedFoodImages[foodId] = self;
}
self.currentInstrument = self.attachAsset(foodId, {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.0,
scaleY: 1.0
});
break;
}
foodTries++;
} while (self.foodIndex !== startFoodIndex && foodTries < self.foodImages.length + 1);
// If no available food found, stay on current (shouldn't happen)
if (!foundFood) {
self.foodIndex = startFoodIndex;
}
} else if (self.gridY === 2) {
// Toy images to cycle through
if (!self.toyImages) {
self.toyImages = ['Blank', 'Lego', 'Dolls', 'Basketball', 'Videogame', 'Plushtoy'];
self.toyIndex = 0;
}
// Setup usedToyImages global tracker if not present
if (typeof usedToyImages === "undefined") {
usedToyImages = {};
}
// Remove current toy image if exists and update usedToyImages
if (self.currentInstrument) {
if (typeof self.toyIndex === "number") {
var prevToyId = self.toyImages[self.toyIndex];
if (prevToyId !== 'Blank' && usedToyImages[prevToyId] === self) {
delete usedToyImages[prevToyId];
}
}
self.removeChild(self.currentInstrument);
self.currentInstrument = null;
}
// Cycle to next available toy image (no duplicates except Blank)
var startToyIndex = typeof self.toyIndex === "number" ? self.toyIndex : 0;
var foundToy = false;
var toyTries = 0;
do {
self.toyIndex = (typeof self.toyIndex === "number" ? self.toyIndex : 0) + 1;
if (self.toyIndex >= self.toyImages.length) self.toyIndex = 0;
var toyId = self.toyImages[self.toyIndex];
// Only allow Blank or unused
if (toyId === 'Blank' || !usedToyImages[toyId]) {
foundToy = true;
// Mark as used if not Blank
if (toyId !== 'Blank') {
usedToyImages[toyId] = self;
}
self.currentInstrument = self.attachAsset(toyId, {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.0,
scaleY: 1.0
});
break;
}
toyTries++;
} while (self.toyIndex !== startToyIndex && toyTries < self.toyImages.length + 1);
// If no available toy found, stay on current (shouldn't happen)
if (!foundToy) {
self.toyIndex = startToyIndex;
}
}
self.toggle();
};
// Initialize dot as inactive
// Initialize with blank instrument
self.currentInstrument = self.attachAsset('Blank', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.0,
scaleY: 1.0
});
return self;
});
// Location class for managing a location in the game
var Location = Container.expand(function () {
var self = Container.call(this);
// Example: add a background image to the location (replace 'Street' with your location asset if needed)
var bg = self.attachAsset('Street', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2732 / 2
});
// Example: location name
self.name = "Default Location";
// Example: method to set location name
self.setName = function (newName) {
self.name = newName;
};
// Example: update method for per-frame logic
self.update = function () {
// Add per-frame logic for the location here
};
return self;
});
// Puzzle class for managing a puzzle element in the game
var Puzzle = Container.expand(function () {
var self = Container.call(this);
// Add a 4x5 asset to the puzzle and scale it to be exactly 2048 wide
var targetWidth = 2048;
var assetWidth = 1000;
var scale = targetWidth / assetWidth;
// Center horizontally, align to top
var puzzleImage = self.attachAsset('4x5', {
anchorX: 0.5,
anchorY: 0,
x: 2048 / 2,
y: 0,
scaleX: scale,
scaleY: scale
});
// Add story asset at the bottom of the screen
var storyAsset = self.attachAsset('Story', {
anchorX: 0.5,
anchorY: 1,
x: 2048 / 2,
y: 2732 - 50,
// Position at bottom of screen with padding
scaleX: 0.0625,
// Scale down from 32768 to 2048 width (2048/32768)
scaleY: 0.0625 // Maintain aspect ratio
});
// Add instructional text on top of story asset with line breaks
var storyText = new Text2('To solve the puzzles, you must\nfollow the clues to work out\nwhere everything belongs..\n\n(Click here to see clues)', {
size: 72,
fill: 0x000000,
align: 'center',
font: "'Times New Roman Bold','Times New Roman','GillSans-Bold',Impact,'Arial Black',Tahoma"
});
storyText.anchor.set(0.5, 0.5);
storyText.x = 2048 / 2;
storyText.y = 2732 - 50 - storyAsset.height * 0.0625 / 2;
self.addChild(storyText);
// Create clues text (initially hidden)
var cluesText = new Text2('CLUES TO SOLVE THE PUZZLE:\n\n• Row 1 (Music): 1=Drum, 2=Harp, 3=Saxophone, 4=Flute, 5=Guitar\n• Row 2 (Food): 6=Spaghetti, 7=Donut, 8=Chips, 9=Icecream, 10=Pizza\n• Row 3 (Toys): 11=Basketball, 12=Dolls, 13=Lego, 14=Videogame, 15=Plushtoy\n• Row 4 (Animals): 16=Fish, 17=Turtle, 18=Frog, 19=Cat, 20=Dog\n• Row 5 (Family): 21=KJ, 22=Khalida, 23=Sapphire, 24=Harmony, 25=PJ\n\nClick any dot to cycle through options!\nMatch all items to their correct positions to win!', {
size: 52,
fill: 0x000000,
align: 'center',
font: "'Times New Roman Bold','Times New Roman','GillSans-Bold',Impact,'Arial Black',Tahoma"
});
cluesText.anchor.set(0.5, 0.5);
cluesText.x = 2048 / 2;
cluesText.y = 2732 - 50 - storyAsset.height * 0.0625 / 2;
cluesText.visible = false;
self.addChild(cluesText);
// Add click handler to instruction text
storyText.down = function (x, y, obj) {
storyText.visible = false;
cluesText.visible = true;
};
// Add click handler to clues text to dismiss it
cluesText.down = function (x, y, obj) {
cluesText.visible = false;
storyText.visible = true;
};
// Create 25 dots in a 5x5 grid
self.dots = [];
var gridSize = 5;
var dotSpacing = targetWidth / (gridSize + 1); // Distribute dots evenly across the width
var gridHeight = puzzleImage.height * scale;
var verticalSpacing = gridHeight / (gridSize + 1);
for (var row = 0; row < gridSize; row++) {
for (var col = 0; col < gridSize; col++) {
var dot = new Dot();
dot.gridX = col;
dot.gridY = row;
// Position dots over the 4x5 asset
dot.x = (col + 1) * dotSpacing;
dot.y = (row + 1) * verticalSpacing;
self.dots.push(dot);
self.addChild(dot);
}
}
// Example: puzzle state
self.isSolved = false;
// Method to check if puzzle is solved according to target solution
self.checkSolved = function () {
// Target solution mapping: dot index -> expected image
var targetSolution = {
0: 'Drum',
// Dot 1 (row 1, col 1)
1: 'Harp',
// Dot 2 (row 1, col 2)
2: 'Saxophone',
// Dot 3 (row 1, col 3)
3: 'Flute',
// Dot 4 (row 1, col 4)
4: 'Gutair',
// Dot 5 (row 1, col 5)
5: 'Spaghetti',
// Dot 6 (row 2, col 1)
6: 'Donut',
// Dot 7 (row 2, col 2)
7: 'Chips',
// Dot 8 (row 2, col 3)
8: 'Icecream',
// Dot 9 (row 2, col 4)
9: 'Pizza',
// Dot 10 (row 2, col 5)
10: 'Basketball',
// Dot 11 (row 3, col 1)
11: 'Dolls',
// Dot 12 (row 3, col 2)
12: 'Lego',
// Dot 13 (row 3, col 3)
13: 'Videogame',
// Dot 14 (row 3, col 4)
14: 'Plushtoy',
// Dot 15 (row 3, col 5)
15: 'Fish',
// Dot 16 (row 4, col 1)
16: 'Turtle',
// Dot 17 (row 4, col 2)
17: 'Frog',
// Dot 18 (row 4, col 3)
18: 'Cat',
// Dot 19 (row 4, col 4)
19: 'Dog',
// Dot 20 (row 4, col 5)
20: 'KJ',
// Dot 21 (row 5, col 1)
21: 'Khalida',
// Dot 22 (row 5, col 2)
22: 'Sapphire',
// Dot 23 (row 5, col 3)
23: 'Harmony',
// Dot 24 (row 5, col 4)
24: 'PJ' // Dot 25 (row 5, col 5)
};
// Check if all dots match the target solution
var allCorrect = true;
for (var i = 0; i < self.dots.length; i++) {
var dot = self.dots[i];
var expectedImage = targetSolution[i];
// Get current image of the dot
var currentImage = 'Blank';
if (dot.currentInstrument && dot.currentInstrument.texture) {
// Extract image ID from texture name or use a mapping
var textureName = dot.currentInstrument.texture.textureCacheIds ? dot.currentInstrument.texture.textureCacheIds[0] : '';
currentImage = textureName;
}
// Check if current image matches expected
if (currentImage !== expectedImage) {
allCorrect = false;
break;
}
}
// Update solved state and trigger win condition
if (allCorrect && !self.isSolved) {
self.isSolved = true;
// Show victory message
LK.showYouWin();
} else if (!allCorrect && self.isSolved) {
self.isSolved = false;
}
};
// Example: update method for per-frame logic
self.update = function () {
// Add per-frame puzzle logic here
// For example, check for completion
self.checkSolved();
};
return self;
});
// Scene class for managing a scene in the game
var Scene = Container.expand(function () {
var self = Container.call(this);
// Example: add a background image to the scene
// (Replace 'Dream' with the desired asset for your scene)
var bg = self.attachAsset('Dream', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2732 / 2
});
// Add any additional scene setup here
// Scene update method (called every tick if attached to game)
self.update = function () {
// Add per-frame logic for the scene here
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000
});
/****
* Game Code
****/
// Track which instruments are currently in use
var usedInstruments = {};
// Add Puzzle to the game when it starts
var puzzle = new Puzzle();
game.addChild(puzzle);
// Add green tick to bottom right corner
var greenTick = LK.getAsset('Greentick', {
anchorX: 1.0,
anchorY: 1.0,
x: 2048 - 50,
y: 2732 - 50,
scaleX: 0.8,
scaleY: 0.8
});
game.addChild(greenTick);
// Make green tick clickable to enter puzzle attempt
greenTick.down = function (x, y, obj) {
if (puzzle && typeof puzzle.checkSolved === "function") {
// Run the check
puzzle.checkSolved();
// If not solved, show endgame1 scene
if (!puzzle.isSolved) {
// Remove the puzzle and green tick from the game
if (puzzle.parent) puzzle.parent.removeChild(puzzle);
if (greenTick.parent) greenTick.parent.removeChild(greenTick);
// Show endgame1 asset centered on screen
var endgame1 = LK.getAsset('Endpuzzleone', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2732 / 2
});
game.addChild(endgame1);
// After 3 seconds, swap to incorrect scene with incorrect word under the incorrect image
LK.setTimeout(function () {
if (endgame1.parent) endgame1.parent.removeChild(endgame1);
// Show Incorrect scene (centered)
var incorrectScene = LK.getAsset('Incorrect', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2732 / 2
});
game.addChild(incorrectScene);
// Find the first incorrect dot and its expected word
var targetSolution = {
0: 'Drum',
1: 'Harp',
2: 'Saxophone',
3: 'Flute',
4: 'Gutair',
5: 'Spaghetti',
6: 'Donut',
7: 'Chips',
8: 'Icecream',
9: 'Pizza',
10: 'Basketball',
11: 'Dolls',
12: 'Lego',
13: 'Videogame',
14: 'Plushtoy',
15: 'Fish',
16: 'Turtle',
17: 'Frog',
18: 'Cat',
19: 'Dog',
20: 'KJ',
21: 'Khalida',
22: 'Sapphire',
23: 'Harmony',
24: 'PJ'
};
var firstWrongIdx = -1;
var wrongActual = '';
var wrongExpected = '';
for (var i = 0; i < puzzle.dots.length; i++) {
var dot = puzzle.dots[i];
var expected = targetSolution[i];
var actual = 'Blank';
if (dot.currentInstrument && dot.currentInstrument.texture) {
// Map textureName to asset id by checking against known asset ids
var textureName = dot.currentInstrument.texture.textureCacheIds ? dot.currentInstrument.texture.textureCacheIds[0] : '';
// List of all asset ids used in the puzzle
var allAssetIds = ['Blank', 'Saxophone', 'Drum', 'Gutair', 'Harp', 'Flute', 'PJ', 'KJ', 'Harmony', 'Khalida', 'Sapphire', 'Cat', 'Dog', 'Fish', 'Frog', 'Turtle', 'Pizza', 'Chips', 'Icecream', 'Donut', 'Spaghetti', 'Lego', 'Dolls', 'Basketball', 'Videogame', 'Plushtoy'];
// Find the asset id that matches the textureName (case-insensitive, partial match)
var foundId = '';
for (var ai = 0; ai < allAssetIds.length; ai++) {
if (textureName && textureName.toLowerCase().indexOf(allAssetIds[ai].toLowerCase()) !== -1) {
foundId = allAssetIds[ai];
break;
}
}
actual = foundId || textureName || 'Blank';
}
if (actual !== expected) {
firstWrongIdx = i;
wrongActual = actual;
wrongExpected = expected;
break;
}
}
// If found, show the incorrect image and word under it
if (firstWrongIdx !== -1) {
var wrongImg = null;
var imgY = 2732 / 2 + 100;
var wordY = imgY;
// Only show the image if it's not 'Blank'
if (wrongActual !== 'Blank') {
wrongImg = LK.getAsset(wrongActual, {
anchorX: 0.5,
anchorY: 1.0,
x: 2048 / 2,
y: imgY
});
game.addChild(wrongImg);
wordY = 2732 / 2 + 120 + (wrongImg.height || 100); // 20px below image
} else {
// If blank, just show the word lower down
wordY = 2732 / 2 + 120;
}
// Show the incorrect word asset under the image or at default position if blank
var incorrectWord = LK.getAsset('Incorrectword', {
anchorX: 0.5,
anchorY: 0,
x: 2048 / 2,
y: wordY
});
game.addChild(incorrectWord);
// Optionally, show the expected word as text below (for clarity)
// var expectedText = new Text2('Should be: ' + wrongExpected, { size: 64, fill: 0xff0000, align: 'center' });
// expectedText.anchor.set(0.5, 0);
// expectedText.x = 2048 / 2;
// expectedText.y = wordY + (incorrectWord.height || 50) + 10;
// game.addChild(expectedText);
}
}, 3000);
}
}
};
; ===================================================================
--- original.js
+++ change.js
@@ -653,29 +653,38 @@
}
}
// If found, show the incorrect image and word under it
if (firstWrongIdx !== -1) {
- // Place the image in the center above the word
- var wrongImg = LK.getAsset(wrongActual, {
- anchorX: 0.5,
- anchorY: 1.0,
- x: 2048 / 2,
- y: 2732 / 2 + 100
- });
- game.addChild(wrongImg);
- // Show the incorrect word asset under the image
+ var wrongImg = null;
+ var imgY = 2732 / 2 + 100;
+ var wordY = imgY;
+ // Only show the image if it's not 'Blank'
+ if (wrongActual !== 'Blank') {
+ wrongImg = LK.getAsset(wrongActual, {
+ anchorX: 0.5,
+ anchorY: 1.0,
+ x: 2048 / 2,
+ y: imgY
+ });
+ game.addChild(wrongImg);
+ wordY = 2732 / 2 + 120 + (wrongImg.height || 100); // 20px below image
+ } else {
+ // If blank, just show the word lower down
+ wordY = 2732 / 2 + 120;
+ }
+ // Show the incorrect word asset under the image or at default position if blank
var incorrectWord = LK.getAsset('Incorrectword', {
anchorX: 0.5,
anchorY: 0,
x: 2048 / 2,
- y: 2732 / 2 + 120 + (wrongImg.height || 100) // 20px below image
+ y: wordY
});
game.addChild(incorrectWord);
// Optionally, show the expected word as text below (for clarity)
// var expectedText = new Text2('Should be: ' + wrongExpected, { size: 64, fill: 0xff0000, align: 'center' });
// expectedText.anchor.set(0.5, 0);
// expectedText.x = 2048 / 2;
- // expectedText.y = (2732 / 2) + 120 + (wrongImg.height || 100) + (incorrectWord.height || 50) + 10;
+ // expectedText.y = wordY + (incorrectWord.height || 50) + 10;
// game.addChild(expectedText);
}
}, 3000);
}
Add more vibrant colours to picture
Make this scene more modern like in the present
A 4x5 grid in professor Layton game style. In-Game asset. 2d. High contrast. No shadows
Remove man
Saxophone in professor Layton game style. In-Game asset. 2d. High contrast. No shadows
Harp in professor Layton game style. In-Game asset. 2d. High contrast. No shadows
Drum in professor Layton game style. In-Game asset. 2d. High contrast. No shadows
Flute in professor Layton game style. In-Game asset. 2d. High contrast. No shadows
Question mark professor Layton game style. In-Game asset. 2d. High contrast. No shadows
12yo blonde girl in professor Layton game style. In-Game asset. 2d. High contrast. No shadows
Cute little10yo girl brown hair in professor Layton game style. In-Game asset. 2d. High contrast. No shadows
Cute little 7yo girl with blonde curly hair. Professor Layton game style In-Game asset. 2d. High contrast. No shadows
15 yo boy with short scruffy blonde hair professor Layton game style. In-Game asset. 2d. High contrast. No shadows
18yo girl with short brown hair professor Layton game style. In-Game asset. 2d. High contrast. No shadows
Cat in professor Layton game style. In-Game asset. 2d. High contrast. No shadows
White dog with brown patch on eyes professor Layton game style. In-Game asset. 2d. High contrast. No shadows
Turtle in professor Layton game style. In-Game asset. 2d. High contrast. No shadows
Frog in professor Layton game style. In-Game asset. 2d. High contrast. No shadows
Goldfish in professor Layton game style. In-Game asset. 2d. High contrast. No shadows
Basketball ball professor Layton game style. In-Game asset. 2d. High contrast. No shadows
Lego bricks professor Layton game style. In-Game asset. 2d. High contrast. No shadows
Video game console professor Layton game style. In-Game asset. 2d. High contrast. No shadows
Teddy bear professor Layton game style. In-Game asset. 2d. High contrast. No shadows
These dolls in professor Layton game art style
Hot chips or fries in professor Layton game style artwork. In-Game asset. 2d. High contrast. No shadows
Bowl of spaghetti in professor Layton game style artwork. In-Game asset. 2d. High contrast. No shadows
Pizza in professor Layton game style artwork. In-Game asset. 2d. High contrast. No shadows
Chocolate donut in professor Layton game style artwork. In-Game asset. 2d. High contrast. No shadows
Ice cream cone in professor Layton game style artwork. In-Game asset. 2d. High contrast. No shadows
Make her crack a small smile
The word "correct" in professor Layton game style. In-Game asset. 2d. High contrast. No shadows
The word " incorrect" in professor Layton game style. In-Game asset. 2d. High contrast. No shadows
Green tick in professor Layton gamestyle. In-Game asset. 2d. High contrast. No shadows
Button with RETRY PUZZLE on it in professor Layton game style artwork In-Game asset. 2d. High contrast. No shadows
Information symbol in professor Layton game style artwork. In-Game asset. 2d. High contrast. No shadows
Number 1 button professor Layton game style artwork. In-Game asset. 2d. High contrast. No shadows
Number 2
Number 3
Number 4
Number 5
Remove clock
Make sure J and Y is not cut off
How to play button in professor Layton game style font. In-Game asset. 2d. High contrast. No shadows
Make robe hang lower so you can't see it's feet
Make it say play new puzzle
A 16:9 title banner