User prompt
Please fix the bug: 'Script error.' in or related to this line: 'leaderboard.push({' Line Number: 337
User prompt
Make sure once a username is typed you no longer have to make another one and it straight away just shows you keybaird fro typing fast ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Make it so it who’s teh keyboard with only the letters once you press enter
User prompt
Make sure enter as a button is put below
User prompt
Make sure they show numbers and symbols as well in keyboard when typinusernmae and her removed once enter ismoressed
User prompt
Make it so you can actually click on the keyboard while typing your username
User prompt
Mak edit so you have to type a username before starting ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'storage.leaderboard = leaderboard;' Line Number: 288 ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Add aledarebiar button so you can see it at all times
User prompt
Are usee to add alederbiar Doha tracks everybody’s data ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Make it so when you press start it takes you into the part where you have to type fast
User prompt
Make an Intro screen asks for your username and has a "Start" button. The user enters a username and clicks Start.
User prompt
Please fix the bug: 'Timeout.tick error: undefined is not an object (evaluating 'document.activeElement')' in or related to this line: 'if (document.activeElement) {' Line Number: 505
User prompt
Code JavaScript to access keyboard to type
Code edit (1 edits merged)
Please save this source code
User prompt
Make it so you can acesss your keyboard while typing
User prompt
Make it so it shows your username on top of the screen when you click on letter sone by one and then their is a button called continue that takes you to the game
User prompt
Mak wit os there is a screen where you,lg in press return and than it takes you to the screen where you type ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Make it so there is a screen where you have to type a username before starting and that is saved as your account when you play the game agian ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Make sure button visibility is always tehre and that you can still type it even after typing that alphabet
User prompt
Don’t hide nay buttons once typing and always keep things as normal
User prompt
Make it so it doesn’t show or block any letters done
User prompt
Make it so the typing is like what an actual keyboard looks lile
User prompt
I meant make sure there’s ima space where we can type on keybaord
Code edit (1 edits merged)
Please save this source code
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1", {
leaderboard: []
});
/****
* Classes
****/
var LetterButton = Container.expand(function (letter, x, y) {
var self = Container.call(this);
self.letter = letter;
self.isPressed = false;
var buttonBg = self.attachAsset('letterButton', {
anchorX: 0.5,
anchorY: 0.5
});
var letterText = new Text2(letter, {
size: 60,
fill: 0xFFFFFF
});
letterText.anchor.set(0.5, 0.5);
self.addChild(letterText);
self.x = x;
self.y = y;
self.showCorrect = function () {
self.isPressed = true;
buttonBg.tint = 0x2E7D32;
tween(self, {
scaleX: 1.1,
scaleY: 1.1
}, {
duration: 100,
easing: tween.easeOut,
onFinish: function onFinish() {
tween(self, {
scaleX: 1,
scaleY: 1
}, {
duration: 200,
easing: tween.easeIn
});
}
});
};
self.showWrong = function () {
var originalTint = buttonBg.tint;
buttonBg.tint = 0xF44336;
tween(self, {
rotation: 0.2
}, {
duration: 50,
easing: tween.linear,
onFinish: function onFinish() {
tween(self, {
rotation: -0.2
}, {
duration: 50,
easing: tween.linear,
onFinish: function onFinish() {
tween(self, {
rotation: 0
}, {
duration: 50,
easing: tween.linear
});
}
});
}
});
LK.setTimeout(function () {
buttonBg.tint = originalTint;
}, 200);
};
self.down = function (x, y, obj) {
if (!usernameEntered) {
// Handle username input
if (self.letter === 'ENTER') {
if (username.length > 0) {
usernameEntered = true;
instructionText.setText('Tap letters A to Z in order or type on keyboard');
usernameText.setText('Player: ' + username);
// Hide keyboard when username is entered
for (var i = 0; i < letterButtons.length; i++) {
letterButtons[i].visible = false;
}
// Show only A-Z letters for the game
for (var i = 0; i < letterButtons.length; i++) {
var button = letterButtons[i];
if (button.letter.length === 1 && button.letter >= 'A' && button.letter <= 'Z') {
button.visible = true;
}
}
}
} else if (username.length < 15) {
username += self.letter;
usernameText.setText('Username: ' + username);
}
} else {
game.handleLetterPress(self.letter);
}
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x1a1a1a
});
/****
* Game Code
****/
// Game state variables
var alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var currentLetterIndex = 0;
var gameStarted = false;
var gameCompleted = false;
var startTime = 0;
var elapsedTime = 0;
var letterButtons = [];
var bestTime = storage.bestTime || null;
var leaderboard = storage.leaderboard || [];
var username = '';
var usernameEntered = false;
// UI elements
var titleText = new Text2('Alphabet Speed Challenge', {
size: 80,
fill: 0xFFFFFF
});
titleText.anchor.set(0.5, 0);
titleText.x = 1024;
titleText.y = 100;
game.addChild(titleText);
var instructionText = new Text2('Enter your username and press Enter to start', {
size: 45,
fill: 0xCCCCCC
});
instructionText.anchor.set(0.5, 0);
instructionText.x = 1024;
instructionText.y = 200;
game.addChild(instructionText);
var usernameText = new Text2('Username: ', {
size: 50,
fill: 0xFFFFFF
});
usernameText.anchor.set(0.5, 0);
usernameText.x = 1024;
usernameText.y = 250;
game.addChild(usernameText);
var currentLetterText = new Text2('Current: A', {
size: 60,
fill: 0x4CAF50
});
currentLetterText.anchor.set(0.5, 0);
currentLetterText.x = 1024;
currentLetterText.y = 300;
game.addChild(currentLetterText);
var timerText = new Text2('Time: 0.00s', {
size: 50,
fill: 0xFFFFFF
});
timerText.anchor.set(0.5, 0);
timerText.x = 1024;
timerText.y = 380;
game.addChild(timerText);
var progressBarBg = game.attachAsset('progressBarBg', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 460
});
var progressBar = game.attachAsset('progressBar', {
anchorX: 0,
anchorY: 0.5,
x: 124,
y: 460
});
progressBar.scaleX = 0;
var bestTimeText = new Text2(bestTime ? 'Best: ' + bestTime.toFixed(2) + 's' : 'Best: --', {
size: 40,
fill: 0xFFD700
});
bestTimeText.anchor.set(0.5, 0);
bestTimeText.x = 1024;
bestTimeText.y = 500;
game.addChild(bestTimeText);
// Create leaderboard display
var leaderboardText = new Text2('Top Times:', {
size: 35,
fill: 0xFFFFFF
});
leaderboardText.anchor.set(0.5, 0);
leaderboardText.x = 1024;
leaderboardText.y = 550;
game.addChild(leaderboardText);
// Create leaderboard entries display
var leaderboardEntries = new Text2('', {
size: 25,
fill: 0xCCCCCC
});
leaderboardEntries.anchor.set(0.5, 0);
leaderboardEntries.x = 1024;
leaderboardEntries.y = 590;
leaderboardEntries.visible = false; // Initially hidden
game.addChild(leaderboardEntries);
// Create leaderboard button
var leaderboardButton = game.attachAsset('letterButton', {
anchorX: 0.5,
anchorY: 0.5,
x: 1800,
y: 100,
scaleX: 0.8,
scaleY: 0.8
});
var leaderboardButtonText = new Text2('LB', {
size: 40,
fill: 0xFFFFFF
});
leaderboardButtonText.anchor.set(0.5, 0.5);
leaderboardButtonText.x = 1800;
leaderboardButtonText.y = 100;
game.addChild(leaderboardButtonText);
var leaderboardVisible = false;
// Function to update leaderboard display
function updateLeaderboardDisplay() {
var displayText = '';
var topTimes = leaderboard.slice(0, 5);
for (var i = 0; i < topTimes.length; i++) {
var entry = topTimes[i];
var name = entry.username || 'Anonymous';
displayText += i + 1 + '. ' + name + ' - ' + entry.time.toFixed(2) + 's';
if (i < topTimes.length - 1) displayText += '\n';
}
leaderboardEntries.setText(displayText);
}
// Function to toggle leaderboard visibility
function toggleLeaderboard() {
leaderboardVisible = !leaderboardVisible;
leaderboardText.visible = leaderboardVisible;
leaderboardEntries.visible = leaderboardVisible;
if (leaderboardVisible) {
updateLeaderboardDisplay();
}
}
// Initial leaderboard display
updateLeaderboardDisplay();
// Create letter buttons in QWERTY keyboard layout with numbers and symbols
var qwertyRows = ['1234567890', 'QWERTYUIOP', 'ASDFGHJKL', 'ZXCVBNM', '!@#$%^&*()'];
var buttonWidth = 150;
var buttonHeight = 150;
var buttonSpacingX = 160;
var buttonSpacingY = 170;
var keyboardStartY = 650;
// Create a mapping from letter to button for easy access
var letterToButton = {};
for (var rowIndex = 0; rowIndex < qwertyRows.length; rowIndex++) {
var row = qwertyRows[rowIndex];
var rowWidth = row.length * buttonSpacingX;
var startX = 1024 - rowWidth / 2 + buttonSpacingX / 2;
for (var colIndex = 0; colIndex < row.length; colIndex++) {
var letter = row[colIndex];
var x = startX + colIndex * buttonSpacingX;
var y = keyboardStartY + rowIndex * buttonSpacingY;
var button = new LetterButton(letter, x, y);
letterButtons.push(button);
letterToButton[letter] = button;
game.addChild(button);
}
}
// Create Enter button below the keyboard
var enterButton = new LetterButton('ENTER', 1024, keyboardStartY + qwertyRows.length * buttonSpacingY);
enterButton.scaleX = 2; // Make it wider
letterButtons.push(enterButton);
game.addChild(enterButton);
// Game functions
game.handleLetterPress = function (letter) {
if (!usernameEntered) {
return; // Don't allow game to start without username
}
var expectedLetter = alphabet[currentLetterIndex];
if (letter === expectedLetter) {
// Correct letter
if (!gameStarted) {
gameStarted = true;
startTime = Date.now();
}
LK.getSound('correct').play();
letterButtons[currentLetterIndex].showCorrect();
currentLetterIndex++;
// Update progress
var progress = currentLetterIndex / 26;
progressBar.scaleX = progress;
if (currentLetterIndex < 26) {
currentLetterText.setText('Current: ' + alphabet[currentLetterIndex]);
} else {
// Game completed
gameCompleted = true;
var finalTime = (Date.now() - startTime) / 1000;
elapsedTime = finalTime;
LK.getSound('complete').play();
currentLetterText.setText('COMPLETED!');
currentLetterText.fill = "#FFD700";
// Add to leaderboard
leaderboard.push({
time: finalTime,
date: Date.now(),
username: username
});
// Sort leaderboard by time (best first) and keep top 10
leaderboard.sort(function (a, b) {
return a.time - b.time;
});
if (leaderboard.length > 10) {
leaderboard = leaderboard.slice(0, 10);
}
// Save leaderboard to storage
storage.leaderboard = leaderboard;
// Check for new best time
if (!bestTime || finalTime < bestTime) {
bestTime = finalTime;
storage.bestTime = bestTime;
bestTimeText.setText('NEW BEST: ' + bestTime.toFixed(2) + 's');
bestTimeText.fill = "#FF4444";
// Celebrate new best time
tween(bestTimeText, {
scaleX: 1.2,
scaleY: 1.2
}, {
duration: 300,
easing: tween.easeOut,
onFinish: function onFinish() {
tween(bestTimeText, {
scaleX: 1,
scaleY: 1
}, {
duration: 300,
easing: tween.easeIn
});
}
});
} else {
bestTimeText.setText('Best: ' + bestTime.toFixed(2) + 's');
}
LK.setScore(Math.round(1 / finalTime * 1000)); // Score based on speed
// Update leaderboard display
updateLeaderboardDisplay();
// Show restart instruction
LK.setTimeout(function () {
instructionText.setText('Tap anywhere or press any key to restart');
}, 1000);
}
} else {
// Wrong letter
LK.getSound('wrong').play();
if (letterToButton[letter]) {
letterToButton[letter].showWrong();
}
}
};
game.resetGame = function () {
currentLetterIndex = 0;
gameStarted = false;
gameCompleted = false;
startTime = 0;
elapsedTime = 0;
username = '';
usernameEntered = false;
currentLetterText.setText('Current: A');
currentLetterText.fill = "#4CAF50";
timerText.setText('Time: 0.00s');
instructionText.setText('Enter your username and press Enter to start');
usernameText.setText('Username: ');
progressBar.scaleX = 0;
// Reset all letter buttons
for (var i = 0; i < letterButtons.length; i++) {
var button = letterButtons[i];
button.isPressed = false;
button.scaleX = 1;
button.scaleY = 1;
button.visible = true; // Show keyboard again
}
};
// Keyboard event handling
game.keyPressed = function (key) {
if (gameCompleted) {
game.resetGame();
return;
}
// Handle username entry
if (!usernameEntered) {
if (key === 'Enter' || key === 'Return') {
if (username.length > 0) {
usernameEntered = true;
instructionText.setText('Tap letters A to Z in order or type on keyboard');
usernameText.setText('Player: ' + username);
// Hide keyboard when username is entered
for (var i = 0; i < letterButtons.length; i++) {
letterButtons[i].visible = false;
}
// Show only A-Z letters for the game
for (var i = 0; i < letterButtons.length; i++) {
var button = letterButtons[i];
if (button.letter.length === 1 && button.letter >= 'A' && button.letter <= 'Z') {
button.visible = true;
}
}
}
return;
} else if (key === 'Backspace') {
username = username.slice(0, -1);
usernameText.setText('Username: ' + username);
return;
} else if (key.length === 1 && username.length < 15) {
// Allow letters, numbers, and common symbols
var allowedChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()';
if (allowedChars.indexOf(key) !== -1) {
username += key;
usernameText.setText('Username: ' + username);
}
return;
}
}
// Convert key to uppercase for consistency
var upperKey = key.toUpperCase();
// Check if it's a valid letter A-Z
if (upperKey >= 'A' && upperKey <= 'Z') {
game.handleLetterPress(upperKey);
}
};
// Add keyboard event listener
LK.on('keydown', function (event) {
if (event.key) {
game.keyPressed(event.key);
}
});
game.down = function (x, y, obj) {
// Check if leaderboard button was clicked
var buttonX = 1800;
var buttonY = 100;
var buttonSize = 120; // 150 * 0.8 scale
var halfSize = buttonSize / 2;
if (x >= buttonX - halfSize && x <= buttonX + halfSize && y >= buttonY - halfSize && y <= buttonY + halfSize) {
toggleLeaderboard();
return;
}
if (gameCompleted) {
game.resetGame();
}
};
game.update = function () {
if (gameStarted && !gameCompleted) {
elapsedTime = (Date.now() - startTime) / 1000;
timerText.setText('Time: ' + elapsedTime.toFixed(2) + 's');
}
}; ===================================================================
--- original.js
+++ change.js
@@ -85,8 +85,15 @@
// Hide keyboard when username is entered
for (var i = 0; i < letterButtons.length; i++) {
letterButtons[i].visible = false;
}
+ // Show only A-Z letters for the game
+ for (var i = 0; i < letterButtons.length; i++) {
+ var button = letterButtons[i];
+ if (button.letter.length === 1 && button.letter >= 'A' && button.letter <= 'Z') {
+ button.visible = true;
+ }
+ }
}
} else if (username.length < 15) {
username += self.letter;
usernameText.setText('Username: ' + username);
@@ -394,8 +401,15 @@
// Hide keyboard when username is entered
for (var i = 0; i < letterButtons.length; i++) {
letterButtons[i].visible = false;
}
+ // Show only A-Z letters for the game
+ for (var i = 0; i < letterButtons.length; i++) {
+ var button = letterButtons[i];
+ if (button.letter.length === 1 && button.letter >= 'A' && button.letter <= 'Z') {
+ button.visible = true;
+ }
+ }
}
return;
} else if (key === 'Backspace') {
username = username.slice(0, -1);