Code edit (5 edits merged)
Please save this source code
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'anchor')' in or related to this line: 'scoreTxt.anchor.set(0.5, 0);' Line Number: 132
Code edit (2 edits merged)
Please save this source code
User prompt
when a word is correct, remove it from the levels[currentLevel].words array
Code edit (1 edits merged)
Please save this source code
Code edit (15 edits merged)
Please save this source code
User prompt
make a small star explosion on the blackboard when a word is correct
Code edit (1 edits merged)
Please save this source code
User prompt
Please fix the bug: 'Uncaught ReferenceError: blackBoardText is not defined' in or related to this line: 'blackBoardArr.push(blackBoardText);' Line Number: 129
Code edit (1 edits merged)
Please save this source code
User prompt
when a submitted word is incorrect, destroy the letters on the blackboard and reset the lettertiles to alpha 1 and being clickable
Code edit (17 edits merged)
Please save this source code
User prompt
when a submitted word is correct, add 1 point of score for each letter in the word and update a scorelabel with the new score
Code edit (3 edits merged)
Please save this source code
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'letters')' in or related to this line: 'return levels[currentLevel].letters;' Line Number: 214
Code edit (1 edits merged)
Please save this source code
User prompt
Please fix the bug: 'Uncaught ReferenceError: levels is not defined' in or related to this line: 'return levels[currentLevel];' Line Number: 240
Code edit (5 edits merged)
Please save this source code
User prompt
please populate the levels array with 10 sets of 3 letters and the words these can spell out
User prompt
each level should have it's letters, but also a set of acceptable words. please make a structure for that.
Code edit (8 edits merged)
Please save this source code
User prompt
once the first letter on each level is clicked, a submit button shoud appear below the leters
User prompt
once a letter is clicked, it should become 0.5 alpha and unclickable
User prompt
please adda black outline to backboardtext
Code edit (1 edits merged)
Please save this source code
/**** * Classes ****/ //<Assets used in the game will automatically appear here> // Class for Letter Tiles var LetterTile = Container.expand(function () { var self = Container.call(this); self.letter = ''; var tileGraphics = self.attachAsset('tile', { anchorX: 0.5, anchorY: 0.5 }); var letterText = new Text2(self.letter, { size: 100, fill: "#000000", weight: 300 }); letterText.anchor.set(0.5, 0.5); self.addChild(letterText); self.setLetter = function (letter) { self.letter = letter; letterText.setText(letter); }; self.clickable = true; self.down = function (x, y, obj) { if (self.clickable) { writeLetterOnBlackboard(self.letter); currentWord += self.letter; self.alpha = 0.5; self.clickable = false; // Make it unclickable } }; return self; }); var SubmitButton = Container.expand(function () { var self = Container.call(this); var buttonGraphics = self.attachAsset('submitButton', { anchorX: 0.5, anchorY: 0.5 }); var buttonText = new Text2('Submit', { size: 100, fill: "#000000" }); buttonText.anchor.set(0.5, 0.5); self.addChild(buttonText); self.down = function (x, y, obj) { console.log("Submit button clicked: ", currentWord); // Add logic to handle submit action if (levels[currentLevel].words.includes(currentWord)) { console.log('correct'); var scoreIncrement = currentWord.length; LK.setScore(LK.getScore() + scoreIncrement); scoreTxt.setText(LK.getScore()); // Create star explosion effect createStarExplosion(); blackBoardArr = []; blackboardOffsetX = 0; blackboardOffsetY += 120; game.children.forEach(function (child) { if (child instanceof LetterTile) { child.alpha = 1; child.clickable = true; } }); currentWord = ""; } else { console.log('incorrect'); // Destroy the letters on the blackboard clearBlackBoard(); // Reset the letter tiles game.children.forEach(function (child) { if (child instanceof LetterTile) { child.alpha = 1; child.clickable = true; } }); blackboardOffsetX = 0; currentWord = ""; } }; return self; }); var Teacher = Container.expand(function () { var self = Container.call(this); var teacherGraphics = self.attachAsset('teacher', { anchorX: 0.5, anchorY: 0.5 }); return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 //Init game with black background }); /**** * Game Code ****/ function clearBlackBoard() { blackBoardArr.forEach(function (child) { child.destroy(); }); blackBoardArr = []; } var blackBoardArr = []; var currentWord = ""; var scoreTxt = new Text2('0', { size: 150, fill: "#ADD8E6", stroke: "#000000", strokeThickness: 10 }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); var blackboardOffsetX = 0; var blackboardOffsetY = 0; function writeLetterOnBlackboard(letter) { var blackboardText = new Text2(letter, { size: 120, fill: "#ffffff", stroke: "#000000", strokeThickness: 10 }); blackboardText.anchor.set(0.5, 0.5); blackboardText.x = 400 + blackboardOffsetX; blackboardText.y = 400 + blackboardOffsetY; game.addChild(blackboardText); blackBoardArr.push(blackboardText); blackboardOffsetX += 110; // Adjust the offset value as needed // Check if this is the first letter clicked if (blackboardOffsetX === 110) { var submitButton = new SubmitButton(); submitButton.x = 2048 / 2; submitButton.y = 2400; game.addChild(submitButton); } } // Add background graphic object covering the whole screen var background = LK.getAsset('background', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2 - 50, y: 2732 / 2 - 200 }); var teacher = new Teacher(); game.addChild(background); teacher.x = 2048 / 2 + 380; teacher.y = 2732 / 2 - 250; game.addChild(teacher); // Function to reset the game state for the new level function resetGameStateForNewLevel() { // Logic to reset the game state for the new level // For example, clear the board, reset the score, etc. LK.setScore(0); scoreTxt.setText(LK.getScore()); // Reset the letter tiles game.children.forEach(function (child) { if (child instanceof LetterTile) { child.alpha = 1; child.down = function (x, y, obj) { writeLetterOnBlackboard(self.letter); currentWord += self.letter; self.alpha = 0.5; self.down = null; // Make it unclickable }; } }); blackboardOffsetX = 0; currentWord = ""; displayLettersInLine(); } // Function to display letters in a line centered at height 2000 function displayLettersInLine() { var startX = 2048 / 2 - letters.length * 220 / 2; var y = 2000; for (var i = 0; i < letters.length; i++) { var x = startX + i * 220; var letterTile = new LetterTile(); letterTile.setLetter(letters[i]); letterTile.x = x; letterTile.y = y; game.addChild(letterTile); } } // Function to advance to the next level function advanceToNextLevel() { if (currentLevel < levels.length - 1) { currentLevel++; letters = getLettersForCurrentLevel(); resetGameStateForNewLevel(); } else { console.log("All levels completed!"); } } // Define levels with different sets of letters and acceptable words var levels3 = [{ letters: ['N', 'W', 'O'], words: ['NOW', 'WON', 'OWN'] }, { letters: ['A', 'E', 'T'], words: ['TEA', 'EAT', 'ATE'] }, { letters: ['A', 'M', 'R'], words: ['MAR', 'ARM', 'RAM'] }, { letters: ['A', 'T', 'P'], words: ['APT', 'PAT', 'TAP'] }, { letters: ['A', 'T', 'R'], words: ['TAR', 'ART', 'RAT'] }, { letters: ['O', 'T', 'P'], words: ['OPT', 'TOP', 'POT'] }, { letters: ['A', 'E', 'R'], words: ['EAR', 'ARE', 'ERA'] }]; var levels4 = [{ letters: ['E', 'C', 'A', 'R'], words: ['ACRE', 'CARE', 'RACE', 'ACER'] }, { letters: ['E', 'S', 'N', 'T'], words: ['NETS', 'TENS', 'SENT', 'NEST'] }, { letters: ['E', 'L', 'A', 'M'], words: ['LAME', 'MALE', 'MEAL'] }, { letters: ['S', 'D', 'E', 'U'], words: ['DUES', 'SUED', 'USED'] }, { letters: ['P', 'S', 'A', 'N'], words: ['NAPS', 'SNAP', 'PANS', 'SPAN'] }, { letters: ['A', 'L', 'R', 'I'], words: ['LAIR', 'LIAR', 'RAIL'] }]; var levels5 = [{ letters: ['T', 'D', 'E', 'I'], words: ['DIET', 'EDIT', 'TIDE', 'TIED'] }, { letters: ['T', 'E', 'L', 'A', 'R'], words: ['ALTER', 'ALTER', 'LATER'] }, { letters: ['E', 'S', 'M', 'L', 'I'], words: ['LIMES', 'SMILE', 'MILES', 'SLIME'] }, { letters: ['S', 'R', 'T', 'I', 'E'], words: ['RITES', 'TIERS', 'TRIES', 'TIRES'] }, { letters: ['P', 'S', 'A', 'E', 'H'], words: ['HEAPS', 'SHAPE', 'PHASE'] }, { letters: ['O', 'D', 'Y', 'R', 'W'], words: ['DOWRY', 'ROWDY', 'WORDY'] }, { letters: ['E', 'B', 'O', 'R', 'S'], words: ['BORES', 'ROBES', 'SOBER'] }, { letters: ['P', 'L', 'E', 'S', 'O'], words: ['LOPES', 'POLES', 'SLOPE'] }]; // Initialize the first level's letters and show level 1 when the game starts var currentLevel = 0; function shuffleArray(array) { for (var i = array.length - 1; i > 0; i--) { var j = Math.floor(Math.random() * (i + 1)); var temp = array[i]; array[i] = array[j]; array[j] = temp; } } shuffleArray(levels3); shuffleArray(levels4); shuffleArray(levels5); var levels = levels3.concat(levels4, levels5); var letters = getLettersForCurrentLevel(); displayLettersInLine(); // Current level index // Function to get letters for the current level function getLettersForCurrentLevel() { return levels[currentLevel].letters; } // Initialize variables // Update function game.update = function () { // Game update logic }; function createStarExplosion() { for (var i = 0; i < 20; i++) { var star = LK.getAsset('centerCircle', { anchorX: 0.5, anchorY: 0.5, scaleX: Math.random() * 0.5 + 0.5, scaleY: Math.random() * 0.5 + 0.5, x: 2048 / 2, y: 2732 / 2 }); game.addChild(star); var angle = Math.random() * Math.PI * 2; var speed = Math.random() * 10 + 5; var vx = Math.cos(angle) * speed; var vy = Math.sin(angle) * speed; (function (star, vx, vy) { var lifetime = 30; var tick = 0; var interval = LK.setInterval(function () { star.x += vx; star.y += vy; star.alpha -= 1 / lifetime; tick++; if (tick >= lifetime) { star.destroy(); LK.clearInterval(interval); } }, 16); })(star, vx, vy); } }
===================================================================
--- original.js
+++ change.js
@@ -11,21 +11,25 @@
anchorY: 0.5
});
var letterText = new Text2(self.letter, {
size: 100,
- fill: "#000000"
+ fill: "#000000",
+ weight: 300
});
letterText.anchor.set(0.5, 0.5);
self.addChild(letterText);
self.setLetter = function (letter) {
self.letter = letter;
letterText.setText(letter);
};
+ self.clickable = true;
self.down = function (x, y, obj) {
- writeLetterOnBlackboard(self.letter);
- currentWord += self.letter;
- self.alpha = 0.5;
- self.down = null; // Make it unclickable
+ if (self.clickable) {
+ writeLetterOnBlackboard(self.letter);
+ currentWord += self.letter;
+ self.alpha = 0.5;
+ self.clickable = false; // Make it unclickable
+ }
};
return self;
});
var SubmitButton = Container.expand(function () {
@@ -47,23 +51,29 @@
console.log('correct');
var scoreIncrement = currentWord.length;
LK.setScore(LK.getScore() + scoreIncrement);
scoreTxt.setText(LK.getScore());
- clearBlackBoard();
+ // Create star explosion effect
+ createStarExplosion();
+ blackBoardArr = [];
+ blackboardOffsetX = 0;
+ blackboardOffsetY += 120;
+ game.children.forEach(function (child) {
+ if (child instanceof LetterTile) {
+ child.alpha = 1;
+ child.clickable = true;
+ }
+ });
+ currentWord = "";
} else {
console.log('incorrect');
// Destroy the letters on the blackboard
clearBlackBoard();
// Reset the letter tiles
game.children.forEach(function (child) {
if (child instanceof LetterTile) {
child.alpha = 1;
- child.down = function (x, y, obj) {
- writeLetterOnBlackboard(self.letter);
- currentWord += self.letter;
- self.alpha = 0.5;
- self.down = null; // Make it unclickable
- };
+ child.clickable = true;
}
});
blackboardOffsetX = 0;
currentWord = "";
@@ -99,23 +109,26 @@
var blackBoardArr = [];
var currentWord = "";
var scoreTxt = new Text2('0', {
size: 150,
- fill: "#ffffff"
+ fill: "#ADD8E6",
+ stroke: "#000000",
+ strokeThickness: 10
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
var blackboardOffsetX = 0;
+var blackboardOffsetY = 0;
function writeLetterOnBlackboard(letter) {
var blackboardText = new Text2(letter, {
- size: 150,
+ size: 120,
fill: "#ffffff",
stroke: "#000000",
strokeThickness: 10
});
blackboardText.anchor.set(0.5, 0.5);
blackboardText.x = 400 + blackboardOffsetX;
- blackboardText.y = 400;
+ blackboardText.y = 400 + blackboardOffsetY;
game.addChild(blackboardText);
blackBoardArr.push(blackboardText);
blackboardOffsetX += 110; // Adjust the offset value as needed
// Check if this is the first letter clicked
@@ -274,5 +287,36 @@
// Initialize variables
// Update function
game.update = function () {
// Game update logic
-};
\ No newline at end of file
+};
+function createStarExplosion() {
+ for (var i = 0; i < 20; i++) {
+ var star = LK.getAsset('centerCircle', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ scaleX: Math.random() * 0.5 + 0.5,
+ scaleY: Math.random() * 0.5 + 0.5,
+ x: 2048 / 2,
+ y: 2732 / 2
+ });
+ game.addChild(star);
+ var angle = Math.random() * Math.PI * 2;
+ var speed = Math.random() * 10 + 5;
+ var vx = Math.cos(angle) * speed;
+ var vy = Math.sin(angle) * speed;
+ (function (star, vx, vy) {
+ var lifetime = 30;
+ var tick = 0;
+ var interval = LK.setInterval(function () {
+ star.x += vx;
+ star.y += vy;
+ star.alpha -= 1 / lifetime;
+ tick++;
+ if (tick >= lifetime) {
+ star.destroy();
+ LK.clearInterval(interval);
+ }
+ }, 16);
+ })(star, vx, vy);
+ }
+}
\ No newline at end of file
A smooth, clean, blank and empty scrabble tile for a game.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A clean, warm and welcoming classroom in a school, facing the blackboard.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A small golden star. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.