User prompt
Okay, just make them fly down slowly. ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
make the stars on the background animated, gently falling down ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Make a beautiful pleasant night background with animated stars ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Make a dark background instead of a white one.
User prompt
make it so that if you don't guess the word, then it should be shown when you lose. let the word appear along with the "game over" "play again" window
User prompt
make it so that if you don't guess the word, then it should be shown when you lose.
User prompt
the submit button and the delete button are letters superimposed on each other, place them next to each other
User prompt
move the letter removal button below, and add the letter M to the keyboard.
User prompt
The letter M is still missing
User prompt
The letter m is missing from the keyboard. It should be to the right of N, and there's a letter deletion button. There is no letter M. Add the letter M to the keyboard.
User prompt
The letter "m" is missing from the keyboard.
User prompt
The letter m is missing from the keyboard.
User prompt
Please fix the bug: 'Timeout.tick error: Cannot read properties of undefined (reading '0')' in or related to this line: 'letterGrid[currentRow][index].setState(state);' Line Number: 329
User prompt
Please fix the bug: 'Timeout.tick error: Cannot read properties of undefined (reading 'setState')' in or related to this line: 'keyboardKeys[letter].setState(newState);' Line Number: 364
User prompt
Please fix the bug: 'Timeout.tick error: Cannot set properties of undefined (setting 'fill')' in or related to this line: 'letterText.style.fill = "#ffffff";' Line Number: 134
User prompt
Add 500 words to the game that have 5 letters
User prompt
Add these ten words to the game: PIANO TIGER WORLD LAUGH STORM LIGHT DREAM HAPPY MUSIC
User prompt
put the delete button at the bottom
User prompt
make sure that the letters can be deleted
Code edit (1 edits merged)
Please save this source code
User prompt
Word Quest
Initial prompt
creating a wordle game
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var BackspaceKey = Container.expand(function () { var self = Container.call(this); var keyGraphic = self.attachAsset('backspaceKey', { anchorX: 0.5, anchorY: 0.5 }); var keyText = new Text2('⌫', { size: 40, fill: 0x000000 }); keyText.anchor.set(0.5, 0.5); self.addChild(keyText); self.down = function (x, y, obj) { if (gameState === 'playing') { removeLetter(); LK.getSound('keyPress').play(); } }; return self; }); var KeyboardKey = Container.expand(function (letter) { var self = Container.call(this); var keyGraphic = self.attachAsset('keyboardKey', { anchorX: 0.5, anchorY: 0.5 }); var keyText = new Text2(letter, { size: 40, fill: 0x000000 }); keyText.anchor.set(0.5, 0.5); self.addChild(keyText); self.letter = letter; self.state = 'normal'; self.setState = function (state) { self.state = state; self.removeChild(keyGraphic); switch (state) { case 'correct': keyGraphic = self.attachAsset('correctKey', { anchorX: 0.5, anchorY: 0.5 }); if (keyText && keyText.style) { keyText.style.fill = "#ffffff"; } break; case 'wrongPosition': keyGraphic = self.attachAsset('wrongPositionKey', { anchorX: 0.5, anchorY: 0.5 }); if (keyText && keyText.style) { keyText.style.fill = "#ffffff"; } break; case 'wrong': keyGraphic = self.attachAsset('wrongKey', { anchorX: 0.5, anchorY: 0.5 }); if (keyText && keyText.style) { keyText.style.fill = "#ffffff"; } break; default: keyGraphic = self.attachAsset('keyboardKey', { anchorX: 0.5, anchorY: 0.5 }); if (keyText && keyText.style) { keyText.style.fill = "#000000"; } } self.addChildAt(keyGraphic, 0); }; self.down = function (x, y, obj) { if (gameState === 'playing') { addLetterToCurrentGuess(self.letter); LK.getSound('keyPress').play(); } }; return self; }); var LetterTile = Container.expand(function () { var self = Container.call(this); var tileGraphic = self.attachAsset('letterTile', { anchorX: 0.5, anchorY: 0.5 }); var letterText = new Text2('', { size: 60, fill: 0x000000 }); letterText.anchor.set(0.5, 0.5); self.addChild(letterText); self.letter = ''; self.state = 'empty'; // empty, filled, correct, wrongPosition, wrong self.setLetter = function (letter) { self.letter = letter; letterText.setText(letter); if (letter === '') { self.state = 'empty'; } else { self.state = 'filled'; } }; self.setState = function (state) { self.state = state; self.removeChild(tileGraphic); switch (state) { case 'correct': tileGraphic = self.attachAsset('correctTile', { anchorX: 0.5, anchorY: 0.5 }); if (letterText && letterText.style) { letterText.style.fill = "#ffffff"; } break; case 'wrongPosition': tileGraphic = self.attachAsset('wrongPositionTile', { anchorX: 0.5, anchorY: 0.5 }); if (letterText && letterText.style) { letterText.style.fill = "#ffffff"; } break; case 'wrong': tileGraphic = self.attachAsset('wrongTile', { anchorX: 0.5, anchorY: 0.5 }); if (letterText && letterText.style) { letterText.style.fill = "#ffffff"; } break; default: tileGraphic = self.attachAsset('letterTile', { anchorX: 0.5, anchorY: 0.5 }); if (letterText && letterText.style) { letterText.style.fill = "#000000"; } } self.addChildAt(tileGraphic, 0); }; return self; }); var SubmitButton = Container.expand(function () { var self = Container.call(this); var buttonGraphic = self.attachAsset('submitButton', { anchorX: 0.5, anchorY: 0.5 }); var buttonText = new Text2('SUBMIT', { size: 30, fill: 0xFFFFFF }); buttonText.anchor.set(0.5, 0.5); self.addChild(buttonText); self.down = function (x, y, obj) { if (gameState === 'playing' && currentGuess.length === 5) { submitGuess(); } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x121213 }); /**** * Game Code ****/ // Game state variables var gameState = 'playing'; // playing, won, lost var currentRow = 0; var currentGuess = ''; var wordList = ['PIANO', 'TIGER', 'WORLD', 'LAUGH', 'STORM', 'LIGHT', 'DREAM', 'HAPPY', 'MUSIC', 'GAMES', 'ABOUT', 'ABOVE', 'ABUSE', 'ACTOR', 'ACUTE', 'ADMIT', 'ADOPT', 'ADULT', 'AFTER', 'AGAIN', 'AGENT', 'AGREE', 'AHEAD', 'ALARM', 'ALBUM', 'ALERT', 'ALIEN', 'ALIGN', 'ALIKE', 'ALIVE', 'ALLOW', 'ALONE', 'ALONG', 'ALTER', 'ANGEL', 'ANGER', 'ANGLE', 'ANGRY', 'APART', 'APPLE', 'APPLY', 'ARENA', 'ARGUE', 'ARISE', 'ARRAY', 'ARROW', 'ASIDE', 'ASSET', 'AVOID', 'AWAKE', 'AWARD', 'AWARE', 'BADLY', 'BAKER', 'BASIC', 'BEACH', 'BEGAN', 'BEGIN', 'BEING', 'BELOW', 'BENCH', 'BILLY', 'BIRTH', 'BLACK', 'BLAME', 'BLANK', 'BLIND', 'BLOCK', 'BLOOD', 'BOARD', 'BOAST', 'BOOST', 'BOOTH', 'BOUND', 'BRAIN', 'BRAND', 'BRAVE', 'BREAD', 'BREAK', 'BREED', 'BRIEF', 'BRING', 'BROAD', 'BROKE', 'BROWN', 'BUILD', 'BUILT', 'BUYER', 'CABLE', 'CALIF', 'CARRY', 'CATCH', 'CAUSE', 'CHAIN', 'CHAIR', 'CHAOS', 'CHARM', 'CHART', 'CHASE', 'CHEAP', 'CHECK', 'CHEST', 'CHIEF', 'CHILD', 'CHINA', 'CHOSE', 'CIVIL', 'CLAIM', 'CLASS', 'CLEAN', 'CLEAR', 'CLICK', 'CLIMB', 'CLOCK', 'CLOSE', 'CLOUD', 'COACH', 'COAST', 'COULD', 'COUNT', 'COURT', 'COVER', 'CRAFT', 'CRASH', 'CRAZY', 'CREAM', 'CRIME', 'CROSS', 'CROWD', 'CROWN', 'CRUDE', 'CURVE', 'CYCLE', 'DAILY', 'DANCE', 'DATED', 'DEALT', 'DEATH', 'DEBUT', 'DELAY', 'DEPTH', 'DOING', 'DOUBT', 'DOZEN', 'DRAFT', 'DRAMA', 'DRANK', 'DRAWN', 'DRESS', 'DRILL', 'DRINK', 'DRIVE', 'DROVE', 'DYING', 'EAGER', 'EARLY', 'EARTH', 'EIGHT', 'ELITE', 'EMPTY', 'ENEMY', 'ENJOY', 'ENTER', 'ENTRY', 'EQUAL', 'ERROR', 'EVENT', 'EVERY', 'EXACT', 'EXIST', 'EXTRA', 'FAITH', 'FALSE', 'FAULT', 'FIBER', 'FIELD', 'FIFTH', 'FIFTY', 'FIGHT', 'FINAL', 'FIRST', 'FIXED', 'FLASH', 'FLEET', 'FLOOR', 'FLUID', 'FOCUS', 'FORCE', 'FORTH', 'FORTY', 'FORUM', 'FOUND', 'FRAME', 'FRANK', 'FRAUD', 'FRESH', 'FRONT', 'FRUIT', 'FULLY', 'FUNNY', 'GIANT', 'GIVEN', 'GLASS', 'GLOBE', 'GOING', 'GRACE', 'GRADE', 'GRAND', 'GRANT', 'GRASS', 'GRAVE', 'GREAT', 'GREEN', 'GROSS', 'GROUP', 'GROWN', 'GUARD', 'GUESS', 'GUEST', 'GUIDE', 'HAPPY', 'HARRY', 'HEART', 'HEAVY', 'HENCE', 'HENRY', 'HORSE', 'HOTEL', 'HOUSE', 'HUMAN', 'HURRY', 'IMAGE', 'INDEX', 'INNER', 'INPUT', 'ISSUE', 'JAPAN', 'JIMMY', 'JOINT', 'JONES', 'JUDGE', 'KNOWN', 'LABEL', 'LARGE', 'LASER', 'LATER', 'LAUGH', 'LAYER', 'LEARN', 'LEASE', 'LEAST', 'LEAVE', 'LEGAL', 'LEVEL', 'LEWIS', 'LIGHT', 'LIMIT', 'LINKS', 'LIVES', 'LOCAL', 'LOOSE', 'LOWER', 'LUCKY', 'LUNCH', 'LYING', 'MAGIC', 'MAJOR', 'MAKER', 'MARCH', 'MARIA', 'MATCH', 'MAYBE', 'MAYOR', 'MEANT', 'MEDIA', 'METAL', 'MIGHT', 'MINOR', 'MINUS', 'MIXED', 'MODEL', 'MONEY', 'MONTH', 'MORAL', 'MOTOR', 'MOUNT', 'MOUSE', 'MOUTH', 'MOVED', 'MOVIE', 'MUSIC', 'NEEDS', 'NEVER', 'NEWLY', 'NIGHT', 'NOISE', 'NORTH', 'NOTED', 'NOVEL', 'NURSE', 'OCCUR', 'OCEAN', 'OFFER', 'OFTEN', 'ORDER', 'OTHER', 'OUGHT', 'PAINT', 'PANEL', 'PAPER', 'PARTY', 'PEACE', 'PETER', 'PHASE', 'PHONE', 'PHOTO', 'PIANO', 'PIECE', 'PILOT', 'PITCH', 'PLACE', 'PLAIN', 'PLANE', 'PLANT', 'PLATE', 'POINT', 'POUND', 'POWER', 'PRESS', 'PRICE', 'PRIDE', 'PRIME', 'PRINT', 'PRIOR', 'PRIZE', 'PROOF', 'PROUD', 'PROVE', 'QUEEN', 'QUICK', 'QUIET', 'QUITE', 'RADIO', 'RAISE', 'RANGE', 'RAPID', 'RATIO', 'REACH', 'READY', 'REALM', 'REBEL', 'REFER', 'RELAX', 'REPLY', 'RIGHT', 'RIGID', 'RIVAL', 'RIVER', 'ROBIN', 'ROGER', 'ROMAN', 'ROUGH', 'ROUND', 'ROUTE', 'ROYAL', 'RURAL', 'SCALE', 'SCENE', 'SCOPE', 'SCORE', 'SENSE', 'SERVE', 'SEVEN', 'SHALL', 'SHAPE', 'SHARE', 'SHARP', 'SHEET', 'SHELF', 'SHELL', 'SHIFT', 'SHINE', 'SHIRT', 'SHOCK', 'SHOOT', 'SHORT', 'SHOWN', 'SIDED', 'SIGHT', 'SILLY', 'SINCE', 'SIXTH', 'SIXTY', 'SIZED', 'SKILL', 'SLEEP', 'SLIDE', 'SMALL', 'SMART', 'SMILE', 'SMITH', 'SMOKE', 'SNAKE', 'SNOW', 'SOLAR', 'SOLID', 'SOLVE', 'SORRY', 'SOUND', 'SOUTH', 'SPACE', 'SPARE', 'SPEAK', 'SPEED', 'SPEND', 'SPENT', 'SPLIT', 'SPOKE', 'SPORT', 'STAFF', 'STAGE', 'STAKE', 'STAND', 'START', 'STATE', 'STEAM', 'STEEL', 'STICK', 'STILL', 'STOCK', 'STONE', 'STOOD', 'STORE', 'STORM', 'STORY', 'STRIP', 'STUCK', 'STUDY', 'STUFF', 'STYLE', 'SUGAR', 'SUITE', 'SUPER', 'SWEET', 'TABLE', 'TAKEN', 'TASTE', 'TAXES', 'TEACH', 'TEAMS', 'TEETH', 'TERRY', 'TEXAS', 'THANK', 'THEFT', 'THEIR', 'THEME', 'THERE', 'THESE', 'THICK', 'THING', 'THINK', 'THIRD', 'THOSE', 'THREE', 'THREW', 'THROW', 'THUMB', 'TIGER', 'TIGHT', 'TIMER', 'TIRED', 'TITLE', 'TODAY', 'TOPIC', 'TOTAL', 'TOUGH', 'TOWER', 'TRACK', 'TRADE', 'TRAIL', 'TRAIN', 'TREAT', 'TREND', 'TRIAL', 'TRIBE', 'TRICK', 'TRIED', 'TRIES', 'TRUCK', 'TRULY', 'TRUNK', 'TRUST', 'TRUTH', 'TRYING', 'TWICE', 'UNCLE', 'UNDUE', 'UNION', 'UNITY', 'UNTIL', 'UPPER', 'UPSET', 'URBAN', 'USAGE', 'USUAL', 'VALID', 'VALUE', 'VIDEO', 'VIRUS', 'VISIT', 'VITAL', 'VOCAL', 'VOICE', 'WASTE', 'WATCH', 'WATER', 'WHEEL', 'WHERE', 'WHICH', 'WHILE', 'WHITE', 'WHOLE', 'WHOSE', 'WOMAN', 'WOMEN', 'WORLD', 'WORRY', 'WORSE', 'WORST', 'WORTH', 'WOULD', 'WRITE', 'WRONG', 'WROTE', 'YOUNG', 'YOUTH']; var targetWord = wordList[Math.floor(Math.random() * wordList.length)]; var letterGrid = []; var keyboardKeys = {}; var keyStates = {}; // Word list for validation (simplified) var validWords = ['PIANO', 'TIGER', 'WORLD', 'LAUGH', 'STORM', 'LIGHT', 'DREAM', 'HAPPY', 'MUSIC', 'GAMES', 'ABOUT', 'ABOVE', 'ABUSE', 'ACTOR', 'ACUTE', 'ADMIT', 'ADOPT', 'ADULT', 'AFTER', 'AGAIN', 'AGENT', 'AGREE', 'AHEAD', 'ALARM', 'ALBUM', 'ALERT', 'ALIEN', 'ALIGN', 'ALIKE', 'ALIVE', 'ALLOW', 'ALONE', 'ALONG', 'ALTER', 'ANGEL', 'ANGER', 'ANGLE', 'ANGRY', 'APART', 'APPLE', 'APPLY', 'ARENA', 'ARGUE', 'ARISE', 'ARRAY', 'ARROW', 'ASIDE', 'ASSET', 'AVOID', 'AWAKE', 'AWARD', 'AWARE', 'BADLY', 'BAKER', 'BASIC', 'BEACH', 'BEGAN', 'BEGIN', 'BEING', 'BELOW', 'BENCH', 'BILLY', 'BIRTH', 'BLACK', 'BLAME', 'BLANK', 'BLIND', 'BLOCK', 'BLOOD', 'BOARD', 'BOAST', 'BOOST', 'BOOTH', 'BOUND', 'BRAIN', 'BRAND', 'BRAVE', 'BREAD', 'BREAK', 'BREED', 'BRIEF', 'BRING', 'BROAD', 'BROKE', 'BROWN', 'BUILD', 'BUILT', 'BUYER', 'CABLE', 'CALIF', 'CARRY', 'CATCH', 'CAUSE', 'CHAIN', 'CHAIR', 'CHAOS', 'CHARM', 'CHART', 'CHASE', 'CHEAP', 'CHECK', 'CHEST', 'CHIEF', 'CHILD', 'CHINA', 'CHOSE', 'CIVIL', 'CLAIM', 'CLASS', 'CLEAN', 'CLEAR', 'CLICK', 'CLIMB', 'CLOCK', 'CLOSE', 'CLOUD', 'COACH', 'COAST', 'COULD', 'COUNT', 'COURT', 'COVER', 'CRAFT', 'CRASH', 'CRAZY', 'CREAM', 'CRIME', 'CROSS', 'CROWD', 'CROWN', 'CRUDE', 'CURVE', 'CYCLE', 'DAILY', 'DANCE', 'DATED', 'DEALT', 'DEATH', 'DEBUT', 'DELAY', 'DEPTH', 'DOING', 'DOUBT', 'DOZEN', 'DRAFT', 'DRAMA', 'DRANK', 'DRAWN', 'DRESS', 'DRILL', 'DRINK', 'DRIVE', 'DROVE', 'DYING', 'EAGER', 'EARLY', 'EARTH', 'EIGHT', 'ELITE', 'EMPTY', 'ENEMY', 'ENJOY', 'ENTER', 'ENTRY', 'EQUAL', 'ERROR', 'EVENT', 'EVERY', 'EXACT', 'EXIST', 'EXTRA', 'FAITH', 'FALSE', 'FAULT', 'FIBER', 'FIELD', 'FIFTH', 'FIFTY', 'FIGHT', 'FINAL', 'FIRST', 'FIXED', 'FLASH', 'FLEET', 'FLOOR', 'FLUID', 'FOCUS', 'FORCE', 'FORTH', 'FORTY', 'FORUM', 'FOUND', 'FRAME', 'FRANK', 'FRAUD', 'FRESH', 'FRONT', 'FRUIT', 'FULLY', 'FUNNY', 'GIANT', 'GIVEN', 'GLASS', 'GLOBE', 'GOING', 'GRACE', 'GRADE', 'GRAND', 'GRANT', 'GRASS', 'GRAVE', 'GREAT', 'GREEN', 'GROSS', 'GROUP', 'GROWN', 'GUARD', 'GUESS', 'GUEST', 'GUIDE', 'HAPPY', 'HARRY', 'HEART', 'HEAVY', 'HENCE', 'HENRY', 'HORSE', 'HOTEL', 'HOUSE', 'HUMAN', 'HURRY', 'IMAGE', 'INDEX', 'INNER', 'INPUT', 'ISSUE', 'JAPAN', 'JIMMY', 'JOINT', 'JONES', 'JUDGE', 'KNOWN', 'LABEL', 'LARGE', 'LASER', 'LATER', 'LAUGH', 'LAYER', 'LEARN', 'LEASE', 'LEAST', 'LEAVE', 'LEGAL', 'LEVEL', 'LEWIS', 'LIGHT', 'LIMIT', 'LINKS', 'LIVES', 'LOCAL', 'LOOSE', 'LOWER', 'LUCKY', 'LUNCH', 'LYING', 'MAGIC', 'MAJOR', 'MAKER', 'MARCH', 'MARIA', 'MATCH', 'MAYBE', 'MAYOR', 'MEANT', 'MEDIA', 'METAL', 'MIGHT', 'MINOR', 'MINUS', 'MIXED', 'MODEL', 'MONEY', 'MONTH', 'MORAL', 'MOTOR', 'MOUNT', 'MOUSE', 'MOUTH', 'MOVED', 'MOVIE', 'MUSIC', 'NEEDS', 'NEVER', 'NEWLY', 'NIGHT', 'NOISE', 'NORTH', 'NOTED', 'NOVEL', 'NURSE', 'OCCUR', 'OCEAN', 'OFFER', 'OFTEN', 'ORDER', 'OTHER', 'OUGHT', 'PAINT', 'PANEL', 'PAPER', 'PARTY', 'PEACE', 'PETER', 'PHASE', 'PHONE', 'PHOTO', 'PIANO', 'PIECE', 'PILOT', 'PITCH', 'PLACE', 'PLAIN', 'PLANE', 'PLANT', 'PLATE', 'POINT', 'POUND', 'POWER', 'PRESS', 'PRICE', 'PRIDE', 'PRIME', 'PRINT', 'PRIOR', 'PRIZE', 'PROOF', 'PROUD', 'PROVE', 'QUEEN', 'QUICK', 'QUIET', 'QUITE', 'RADIO', 'RAISE', 'RANGE', 'RAPID', 'RATIO', 'REACH', 'READY', 'REALM', 'REBEL', 'REFER', 'RELAX', 'REPLY', 'RIGHT', 'RIGID', 'RIVAL', 'RIVER', 'ROBIN', 'ROGER', 'ROMAN', 'ROUGH', 'ROUND', 'ROUTE', 'ROYAL', 'RURAL', 'SCALE', 'SCENE', 'SCOPE', 'SCORE', 'SENSE', 'SERVE', 'SEVEN', 'SHALL', 'SHAPE', 'SHARE', 'SHARP', 'SHEET', 'SHELF', 'SHELL', 'SHIFT', 'SHINE', 'SHIRT', 'SHOCK', 'SHOOT', 'SHORT', 'SHOWN', 'SIDED', 'SIGHT', 'SILLY', 'SINCE', 'SIXTH', 'SIXTY', 'SIZED', 'SKILL', 'SLEEP', 'SLIDE', 'SMALL', 'SMART', 'SMILE', 'SMITH', 'SMOKE', 'SNAKE', 'SNOW', 'SOLAR', 'SOLID', 'SOLVE', 'SORRY', 'SOUND', 'SOUTH', 'SPACE', 'SPARE', 'SPEAK', 'SPEED', 'SPEND', 'SPENT', 'SPLIT', 'SPOKE', 'SPORT', 'STAFF', 'STAGE', 'STAKE', 'STAND', 'START', 'STATE', 'STEAM', 'STEEL', 'STICK', 'STILL', 'STOCK', 'STONE', 'STOOD', 'STORE', 'STORM', 'STORY', 'STRIP', 'STUCK', 'STUDY', 'STUFF', 'STYLE', 'SUGAR', 'SUITE', 'SUPER', 'SWEET', 'TABLE', 'TAKEN', 'TASTE', 'TAXES', 'TEACH', 'TEAMS', 'TEETH', 'TERRY', 'TEXAS', 'THANK', 'THEFT', 'THEIR', 'THEME', 'THERE', 'THESE', 'THICK', 'THING', 'THINK', 'THIRD', 'THOSE', 'THREE', 'THREW', 'THROW', 'THUMB', 'TIGER', 'TIGHT', 'TIMER', 'TIRED', 'TITLE', 'TODAY', 'TOPIC', 'TOTAL', 'TOUGH', 'TOWER', 'TRACK', 'TRADE', 'TRAIL', 'TRAIN', 'TREAT', 'TREND', 'TRIAL', 'TRIBE', 'TRICK', 'TRIED', 'TRIES', 'TRUCK', 'TRULY', 'TRUNK', 'TRUST', 'TRUTH', 'TRYING', 'TWICE', 'UNCLE', 'UNDUE', 'UNION', 'UNITY', 'UNTIL', 'UPPER', 'UPSET', 'URBAN', 'USAGE', 'USUAL', 'VALID', 'VALUE', 'VIDEO', 'VIRUS', 'VISIT', 'VITAL', 'VOCAL', 'VOICE', 'WASTE', 'WATCH', 'WATER', 'WHEEL', 'WHERE', 'WHICH', 'WHILE', 'WHITE', 'WHOLE', 'WHOSE', 'WOMAN', 'WOMEN', 'WORLD', 'WORRY', 'WORSE', 'WORST', 'WORTH', 'WOULD', 'WRITE', 'WRONG', 'WROTE', 'YOUNG', 'YOUTH', 'WORDS', 'QUEST', 'SMALL']; // Create the game grid (6 rows x 5 columns) var gridStartX = 1024; var gridStartY = 400; var tileSpacing = 140; for (var row = 0; row < 6; row++) { letterGrid[row] = []; for (var col = 0; col < 5; col++) { var tile = new LetterTile(); tile.x = gridStartX + (col - 2) * tileSpacing; tile.y = gridStartY + row * tileSpacing; letterGrid[row][col] = tile; game.addChild(tile); } } // Create keyboard layout var keyboardLayout = ['QWERTYUIOP', 'ASDFGHJKL', 'ZXCVBNM']; var keyboardStartY = 1800; var keySpacing = 110; for (var rowIdx = 0; rowIdx < keyboardLayout.length; rowIdx++) { var keyRow = keyboardLayout[rowIdx]; var rowWidth = keyRow.length * keySpacing; var startX = 1024 - rowWidth / 2 + keySpacing / 2; for (var keyIdx = 0; keyIdx < keyRow.length; keyIdx++) { var letter = keyRow[keyIdx]; var key = new KeyboardKey(letter); key.x = startX + keyIdx * keySpacing; key.y = keyboardStartY + rowIdx * 160; keyboardKeys[letter] = key; keyStates[letter] = 'normal'; game.addChild(key); } } // Create submit button var submitButton = new SubmitButton(); submitButton.x = 924; submitButton.y = keyboardStartY + 480; game.addChild(submitButton); // Create backspace button (moved below keyboard) var backspaceButton = new BackspaceKey(); backspaceButton.x = 1124; backspaceButton.y = keyboardStartY + 480; game.addChild(backspaceButton); // Create title var titleText = new Text2('WORD QUEST', { size: 80, fill: 0x333333 }); titleText.anchor.set(0.5, 0.5); titleText.x = 1024; titleText.y = 200; game.addChild(titleText); // Create score display var scoreText = new Text2('Attempts: 0/6', { size: 40, fill: 0x666666 }); scoreText.anchor.set(0.5, 0); LK.gui.top.addChild(scoreText); function addLetterToCurrentGuess(letter) { if (currentGuess.length < 5) { currentGuess += letter; letterGrid[currentRow][currentGuess.length - 1].setLetter(letter); updateDisplay(); } } function removeLetter() { if (currentGuess.length > 0) { letterGrid[currentRow][currentGuess.length - 1].setLetter(''); currentGuess = currentGuess.slice(0, -1); updateDisplay(); } } function submitGuess() { if (currentGuess.length !== 5) return; // Check if word is valid (simplified check) var isValidWord = validWords.indexOf(currentGuess) !== -1; if (!isValidWord) { // Flash invalid word for (var i = 0; i < 5; i++) { LK.effects.flashObject(letterGrid[currentRow][i], 0xff0000, 500); } return; } LK.getSound('wordSubmit').play(); // Check letters and update colors var letterCounts = {}; for (var i = 0; i < targetWord.length; i++) { var letter = targetWord[i]; letterCounts[letter] = (letterCounts[letter] || 0) + 1; } var results = ['wrong', 'wrong', 'wrong', 'wrong', 'wrong']; // First pass: mark correct positions for (var i = 0; i < 5; i++) { if (currentGuess[i] === targetWord[i]) { results[i] = 'correct'; letterCounts[currentGuess[i]]--; } } // Second pass: mark wrong positions for (var i = 0; i < 5; i++) { if (results[i] !== 'correct' && letterCounts[currentGuess[i]] > 0) { results[i] = 'wrongPosition'; letterCounts[currentGuess[i]]--; } } // Capture current values before they change var guessForCallback = currentGuess; var rowForCallback = currentRow; // Update tile colors with animation delay for (var i = 0; i < 5; i++) { (function (index, state) { LK.setTimeout(function () { if (letterGrid[rowForCallback] && letterGrid[rowForCallback][index]) { letterGrid[rowForCallback][index].setState(state); } updateKeyboardKey(guessForCallback[index], state); }, index * 150); })(i, results[i]); } // Check win condition if (currentGuess === targetWord) { LK.setTimeout(function () { gameState = 'won'; LK.setScore(6 - rowForCallback); LK.getSound('correctGuess').play(); LK.showYouWin(); }, 750); return; } currentRow++; currentGuess = ''; // Check lose condition if (currentRow >= 6) { LK.setTimeout(function () { gameState = 'lost'; // Show the target word in the GUI overlay so it persists with game over var revealText = new Text2('The word was: ' + targetWord, { size: 40, fill: 0xff0000 }); revealText.anchor.set(0.5, 0.5); LK.gui.center.addChild(revealText); revealText.y = -100; // Position above center // Show game over immediately with the word visible LK.showGameOver(); }, 750); return; } updateDisplay(); } function updateKeyboardKey(letter, newState) { if (!keyboardKeys[letter]) return; // Check if the key exists if (keyStates[letter] === 'correct') return; // Don't downgrade from correct if (keyStates[letter] === 'wrongPosition' && newState === 'wrong') return; // Don't downgrade from wrongPosition to wrong keyStates[letter] = newState; keyboardKeys[letter].setState(newState); } function updateDisplay() { scoreText.setText('Attempts: ' + currentRow + '/6'); } updateDisplay();
===================================================================
--- original.js
+++ change.js
@@ -180,9 +180,9 @@
/****
* Initialize Game
****/
var game = new LK.Game({
- backgroundColor: 0xf5f5f5
+ backgroundColor: 0x121213
});
/****
* Game Code