Code edit (1 edits merged)
Please save this source code
Code edit (1 edits merged)
Please save this source code
User prompt
Change the word background color to bright pink
User prompt
Change the word background color to bright purple
User prompt
change the word background mixing of red and purple
User prompt
add background asset
Code edit (3 edits merged)
Please save this source code
User prompt
each word get only 5 points
Code edit (1 edits merged)
Please save this source code
User prompt
display the two levels in the menu startign UI
User prompt
level 1 --only 5 words
User prompt
display the two levels in UI
User prompt
after loosing or winning the game display the accuracy and score
User prompt
add two levels
Code edit (2 edits merged)
Please save this source code
User prompt
Adjust word falling speed to ensure each word takes 80 seconds to reach the bottom
User prompt
Adjust word falling speed to ensure each word takes 55 seconds to reach the bottom
User prompt
every word take 25 sec to fall on the bottom
User prompt
Ensure a new word spawns every 50 seconds after the previous word
User prompt
if one letter is coming after 20 sec another word has to come
User prompt
add delete option in the game
Code edit (2 edits merged)
Please save this source code
User prompt
add when player correctly type the each word it will give the 2 points
User prompt
add when player correctly type the each word it will give the one points
User prompt
add when player correctly type the each word it will give the 5 points
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1", { highScore: 0, difficulty: 1 }); /**** * Classes ****/ var FallingWord = Container.expand(function (wordText, speed) { var self = Container.call(this); self.wordText = wordText; self.speed = speed || 2; self.typed = ""; self.completed = false; var background = self.attachAsset('wordBackground', { anchorX: 0.5, anchorY: 0.5 }); self.wordDisplay = new Text2(wordText, { size: 60, fill: 0xFFFFFF }); self.wordDisplay.anchor.set(0.5, 0.5); self.addChild(self.wordDisplay); self.progressDisplay = new Text2("", { size: 60, fill: 0x00FF00 }); self.progressDisplay.anchor.set(0.5, 0.5); self.addChild(self.progressDisplay); self.updateTyped = function (typedText) { self.typed = typedText; self.progressDisplay.setText(typedText); if (typedText === self.wordText) { self.completed = true; return true; } return false; }; self.update = function () { self.y += self.speed; }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x1a1a2e }); /**** * Game Code ****/ var words = ["type", "hero", "word", "game", "play", "fast", "quick", "jump", "over", "fox", "lazy", "dog", "letter", "key", "speed", "challenge", "practice", "improve", "skill", "focus", "learn", "master", "type", "write", "read"]; var longWords = ["keyboard", "challenge", "practice", "improvement", "experience", "development", "professional", "application", "performance", "intelligence", "communication", "organization", "understanding", "appreciation", "participation", "environment", "opportunity", "relationship", "consideration", "determination"]; var activeWords = []; var gameActive = false; var currentInput = ""; var spawnInterval = 20000; // Set the interval time period between word spawns to 20 seconds var lastSpawnTime = 0; var score = 0; var difficulty = storage.difficulty || 1; var baseSpeed = 1; var wordCount = 0; var gameTicks = 0; var scoreDisplay = new Text2("Score: 0", { size: 70, fill: 0xFFFFFF }); scoreDisplay.anchor.set(0.5, 0); LK.gui.top.addChild(scoreDisplay); var highScoreDisplay = new Text2("High Score: " + storage.highScore, { size: 50, fill: 0xFFCC00 }); highScoreDisplay.anchor.set(0.5, 0); highScoreDisplay.y = 80; LK.gui.top.addChild(highScoreDisplay); var inputDisplay = new Text2("", { size: 80, fill: 0xFFFFFF }); var inputBackground = new Text2("", { size: 80, fill: 0x000000 }); inputBackground.anchor.set(0.5, 1); inputBackground.y = -50; LK.gui.bottom.addChild(inputBackground); inputDisplay.anchor.set(0.5, 1); inputDisplay.y = -20; LK.gui.bottom.addChild(inputDisplay); var keyboard = new Container(); game.addChild(keyboard); keyboard.y = 2400; function startGame() { gameActive = true; activeWords = []; currentInput = ""; score = 0; wordCount = 0; gameTicks = 0; spawnInterval = 1500; difficulty = 1; scoreDisplay.setText("Score: 0"); updateInput(""); LK.playMusic('bgMusic'); } function endGame() { gameActive = false; if (score > storage.highScore) { storage.highScore = score; highScoreDisplay.setText("High Score: " + storage.highScore); } LK.stopMusic(); LK.showGameOver(); } function getRandomWord() { var wordPool = difficulty > 2 ? longWords.concat(words) : words; return wordPool[Math.floor(Math.random() * wordPool.length)]; } function updateInput(text) { currentInput = text; inputDisplay.setText(text); } function spawnWord() { var word = getRandomWord(); var fallingWord = new FallingWord(word, baseSpeed + difficulty * 0.5); fallingWord.x = Math.random() * (2048 - 400) + 200; fallingWord.y = 100; game.addChild(fallingWord); activeWords.push(fallingWord); wordCount++; if (wordCount % 10 === 0) { increaseDifficulty(); } } function increaseDifficulty() { difficulty += 0.2; spawnInterval = Math.max(800, spawnInterval - 100); storage.difficulty = difficulty; } function checkInput(_char) { var newInput = currentInput + _char; updateInput(newInput); for (var i = 0; i < activeWords.length; i++) { var word = activeWords[i]; if (word.wordText.toLowerCase().startsWith(newInput.toLowerCase())) { if (newInput.length === word.wordText.length) { score += word.wordText.length * 10 + 5; LK.setScore(score); scoreDisplay.setText("Score: " + score); LK.getSound('correctWord').play(); LK.effects.flashObject(word, 0x00ff00, 400); tween(word, { alpha: 0 }, { duration: 300, onFinish: function onFinish() { game.removeChild(word); activeWords.splice(activeWords.indexOf(word), 1); } }); updateInput(""); return true; } word.updateTyped(newInput); return true; } } return false; } function clearInput() { updateInput(""); for (var i = 0; i < activeWords.length; i++) { activeWords[i].updateTyped(""); } } var keyboardButtons = []; var keyboardLayout = [['Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P'], ['A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L'], ['Z', 'X', 'C', 'V', 'B', 'N', 'M']]; function createKeyboard() { var buttonSize = 80; var spacing = 40; var rows = keyboardLayout.length; for (var row = 0; row < rows; row++) { var keys = keyboardLayout[row]; var rowWidth = keys.length * (buttonSize + spacing); var startX = (2048 - rowWidth) / 2; for (var i = 0; i < keys.length; i++) { var key = keys[i]; var keyButton = new Container(); var keyBackground = LK.getAsset('wordBackground', { width: buttonSize, height: buttonSize, anchorX: 0.5, anchorY: 0.5, tint: 0x555555 }); keyButton.addChild(keyBackground); var keyText = new Text2(key, { size: 60, fill: 0xFFFFFF }); keyText.anchor.set(0.5, 0.5); keyButton.addChild(keyText); keyButton.x = startX + i * (buttonSize + spacing) + buttonSize / 2; keyButton.y = row * (buttonSize + spacing) + buttonSize / 2; keyButton.keyValue = key; keyButton.interactive = true; keyButton.down = function (x, y, obj) { if (this.keyValue) { checkInput(this.keyValue); } if (obj.children && obj.children.length > 0 && obj.children[0]) { tween(obj.children[0], { tint: 0x3498db }, { duration: 100 }); } }; keyButton.up = function (x, y, obj) { if (obj.children && obj.children.length > 0 && obj.children[0]) { tween(obj.children[0], { tint: 0x555555 }, { duration: 100 }); } }; keyboard.addChild(keyButton); keyboardButtons.push(keyButton); } } // Space bar var spaceBar = new Container(); var spaceBackground = LK.getAsset('wordBackground', { width: 800, height: buttonSize, anchorX: 0.5, anchorY: 0.5, tint: 0x555555 }); spaceBar.addChild(spaceBackground); var spaceText = new Text2("SPACE", { size: 60, fill: 0xFFFFFF }); spaceText.anchor.set(0.5, 0.5); spaceBar.addChild(spaceText); spaceBar.y = rows * (buttonSize + spacing) + 40; spaceBar.x = 2048 / 2; spaceBar.interactive = true; spaceBar.down = function () { checkInput(" "); }; keyboard.addChild(spaceBar); } createKeyboard(); startGame(); // Game loop game.update = function () { if (!gameActive) { return; } var now = Date.now(); if (now - lastSpawnTime > spawnInterval) { spawnWord(); lastSpawnTime = now; } for (var i = activeWords.length - 1; i >= 0; i--) { var word = activeWords[i]; word.update(); if (word.y > 2700) { LK.getSound('wordHitBottom').play(); game.removeChild(word); activeWords.splice(i, 1); clearInput(); endGame(); } } };
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1", {
highScore: 0,
difficulty: 1
});
/****
* Classes
****/
var FallingWord = Container.expand(function (wordText, speed) {
var self = Container.call(this);
self.wordText = wordText;
self.speed = speed || 2;
self.typed = "";
self.completed = false;
var background = self.attachAsset('wordBackground', {
anchorX: 0.5,
anchorY: 0.5
});
self.wordDisplay = new Text2(wordText, {
size: 60,
fill: 0xFFFFFF
});
self.wordDisplay.anchor.set(0.5, 0.5);
self.addChild(self.wordDisplay);
self.progressDisplay = new Text2("", {
size: 60,
fill: 0x00FF00
});
self.progressDisplay.anchor.set(0.5, 0.5);
self.addChild(self.progressDisplay);
self.updateTyped = function (typedText) {
self.typed = typedText;
self.progressDisplay.setText(typedText);
if (typedText === self.wordText) {
self.completed = true;
return true;
}
return false;
};
self.update = function () {
self.y += self.speed;
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x1a1a2e
});
/****
* Game Code
****/
var words = ["type", "hero", "word", "game", "play", "fast", "quick", "jump", "over", "fox", "lazy", "dog", "letter", "key", "speed", "challenge", "practice", "improve", "skill", "focus", "learn", "master", "type", "write", "read"];
var longWords = ["keyboard", "challenge", "practice", "improvement", "experience", "development", "professional", "application", "performance", "intelligence", "communication", "organization", "understanding", "appreciation", "participation", "environment", "opportunity", "relationship", "consideration", "determination"];
var activeWords = [];
var gameActive = false;
var currentInput = "";
var spawnInterval = 20000; // Set the interval time period between word spawns to 20 seconds
var lastSpawnTime = 0;
var score = 0;
var difficulty = storage.difficulty || 1;
var baseSpeed = 1;
var wordCount = 0;
var gameTicks = 0;
var scoreDisplay = new Text2("Score: 0", {
size: 70,
fill: 0xFFFFFF
});
scoreDisplay.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreDisplay);
var highScoreDisplay = new Text2("High Score: " + storage.highScore, {
size: 50,
fill: 0xFFCC00
});
highScoreDisplay.anchor.set(0.5, 0);
highScoreDisplay.y = 80;
LK.gui.top.addChild(highScoreDisplay);
var inputDisplay = new Text2("", {
size: 80,
fill: 0xFFFFFF
});
var inputBackground = new Text2("", {
size: 80,
fill: 0x000000
});
inputBackground.anchor.set(0.5, 1);
inputBackground.y = -50;
LK.gui.bottom.addChild(inputBackground);
inputDisplay.anchor.set(0.5, 1);
inputDisplay.y = -20;
LK.gui.bottom.addChild(inputDisplay);
var keyboard = new Container();
game.addChild(keyboard);
keyboard.y = 2400;
function startGame() {
gameActive = true;
activeWords = [];
currentInput = "";
score = 0;
wordCount = 0;
gameTicks = 0;
spawnInterval = 1500;
difficulty = 1;
scoreDisplay.setText("Score: 0");
updateInput("");
LK.playMusic('bgMusic');
}
function endGame() {
gameActive = false;
if (score > storage.highScore) {
storage.highScore = score;
highScoreDisplay.setText("High Score: " + storage.highScore);
}
LK.stopMusic();
LK.showGameOver();
}
function getRandomWord() {
var wordPool = difficulty > 2 ? longWords.concat(words) : words;
return wordPool[Math.floor(Math.random() * wordPool.length)];
}
function updateInput(text) {
currentInput = text;
inputDisplay.setText(text);
}
function spawnWord() {
var word = getRandomWord();
var fallingWord = new FallingWord(word, baseSpeed + difficulty * 0.5);
fallingWord.x = Math.random() * (2048 - 400) + 200;
fallingWord.y = 100;
game.addChild(fallingWord);
activeWords.push(fallingWord);
wordCount++;
if (wordCount % 10 === 0) {
increaseDifficulty();
}
}
function increaseDifficulty() {
difficulty += 0.2;
spawnInterval = Math.max(800, spawnInterval - 100);
storage.difficulty = difficulty;
}
function checkInput(_char) {
var newInput = currentInput + _char;
updateInput(newInput);
for (var i = 0; i < activeWords.length; i++) {
var word = activeWords[i];
if (word.wordText.toLowerCase().startsWith(newInput.toLowerCase())) {
if (newInput.length === word.wordText.length) {
score += word.wordText.length * 10 + 5;
LK.setScore(score);
scoreDisplay.setText("Score: " + score);
LK.getSound('correctWord').play();
LK.effects.flashObject(word, 0x00ff00, 400);
tween(word, {
alpha: 0
}, {
duration: 300,
onFinish: function onFinish() {
game.removeChild(word);
activeWords.splice(activeWords.indexOf(word), 1);
}
});
updateInput("");
return true;
}
word.updateTyped(newInput);
return true;
}
}
return false;
}
function clearInput() {
updateInput("");
for (var i = 0; i < activeWords.length; i++) {
activeWords[i].updateTyped("");
}
}
var keyboardButtons = [];
var keyboardLayout = [['Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P'], ['A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L'], ['Z', 'X', 'C', 'V', 'B', 'N', 'M']];
function createKeyboard() {
var buttonSize = 80;
var spacing = 40;
var rows = keyboardLayout.length;
for (var row = 0; row < rows; row++) {
var keys = keyboardLayout[row];
var rowWidth = keys.length * (buttonSize + spacing);
var startX = (2048 - rowWidth) / 2;
for (var i = 0; i < keys.length; i++) {
var key = keys[i];
var keyButton = new Container();
var keyBackground = LK.getAsset('wordBackground', {
width: buttonSize,
height: buttonSize,
anchorX: 0.5,
anchorY: 0.5,
tint: 0x555555
});
keyButton.addChild(keyBackground);
var keyText = new Text2(key, {
size: 60,
fill: 0xFFFFFF
});
keyText.anchor.set(0.5, 0.5);
keyButton.addChild(keyText);
keyButton.x = startX + i * (buttonSize + spacing) + buttonSize / 2;
keyButton.y = row * (buttonSize + spacing) + buttonSize / 2;
keyButton.keyValue = key;
keyButton.interactive = true;
keyButton.down = function (x, y, obj) {
if (this.keyValue) {
checkInput(this.keyValue);
}
if (obj.children && obj.children.length > 0 && obj.children[0]) {
tween(obj.children[0], {
tint: 0x3498db
}, {
duration: 100
});
}
};
keyButton.up = function (x, y, obj) {
if (obj.children && obj.children.length > 0 && obj.children[0]) {
tween(obj.children[0], {
tint: 0x555555
}, {
duration: 100
});
}
};
keyboard.addChild(keyButton);
keyboardButtons.push(keyButton);
}
}
// Space bar
var spaceBar = new Container();
var spaceBackground = LK.getAsset('wordBackground', {
width: 800,
height: buttonSize,
anchorX: 0.5,
anchorY: 0.5,
tint: 0x555555
});
spaceBar.addChild(spaceBackground);
var spaceText = new Text2("SPACE", {
size: 60,
fill: 0xFFFFFF
});
spaceText.anchor.set(0.5, 0.5);
spaceBar.addChild(spaceText);
spaceBar.y = rows * (buttonSize + spacing) + 40;
spaceBar.x = 2048 / 2;
spaceBar.interactive = true;
spaceBar.down = function () {
checkInput(" ");
};
keyboard.addChild(spaceBar);
}
createKeyboard();
startGame();
// Game loop
game.update = function () {
if (!gameActive) {
return;
}
var now = Date.now();
if (now - lastSpawnTime > spawnInterval) {
spawnWord();
lastSpawnTime = now;
}
for (var i = activeWords.length - 1; i >= 0; i--) {
var word = activeWords[i];
word.update();
if (word.y > 2700) {
LK.getSound('wordHitBottom').play();
game.removeChild(word);
activeWords.splice(i, 1);
clearInput();
endGame();
}
}
};