Code edit (1 edits merged)
Please save this source code
User prompt
make sure coin counter is displayed on the top right of the screen. adjust anchor so that it set correctly
User prompt
add a coint counter on the top right and make player collect coins when they collide
User prompt
when blocks are destroyed they can randomly drop coins or powerups
User prompt
Please fix the bug: 'ReferenceError: Block is not defined' in or related to this line: 'var newBlock = new Block();' Line Number: 213
User prompt
change enemy reference to block
User prompt
reduce a lot the ammout of stars in starfield
User prompt
center enemies on screen
User prompt
reduce enemy spacing on x
User prompt
reduce the side distance of enemies
Code edit (2 edits merged)
Please save this source code
User prompt
allow player to define a hitpoint per row per wave
User prompt
add more distance between row when more than one in a wave
User prompt
max enemies per line are 6, if wave has more enemies, the remaining enemies should be on top
User prompt
make sure to update the hitpoints of enemies with the number defined in the wave
User prompt
add a config setting to define how many enemies and how many hitpoints will those have in each wave
User prompt
first wave enemies will only have 1 hitpoint.
User prompt
enemies will be spawned by 6 one next to each other
User prompt
wait for 10 seconds between enemy waves
User prompt
each bullet will decrease one hit point and enemy will be destroyed when hitpoints is zero
User prompt
show hitpoints bellow each enemy
User prompt
add hitpoints to enemies
Code edit (1 edits merged)
Please save this source code
User prompt
eemies should be spawned in waves
User prompt
add starfield in the backgorund, moveing from down up
/**** * Classes ****/ // Bullet class var Bullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.attachAsset('bullet', { anchorX: 0.5, anchorY: 0.5 }); self.speed = -10; self.update = function () { self.y += self.speed; }; }); // Enemy class var Enemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.attachAsset('block', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 3; self.hitpoints = 3; // Add hitpoints to enemies self.update = function () { self.y += self.speed; // Create and update hitpoints display if (!self.hitpointsDisplay) { self.hitpointsDisplay = new Text2(self.hitpoints.toString(), { size: 50, fill: "#ffffff" }); self.hitpointsDisplay.anchor.set(0.5, 0); self.hitpointsDisplay.y = 60; self.addChild(self.hitpointsDisplay); } else { self.hitpointsDisplay.setText(self.hitpoints.toString()); } }; }); //<Assets used in the game will automatically appear here> // Fairy class var Fairy = Container.expand(function () { var self = Container.call(this); var fairyGraphics = self.attachAsset('fairy', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 5; self.update = function () { // Fairy movement logic }; }); // Star class var Star = Container.expand(function () { var self = Container.call(this); var starGraphics = self.attachAsset('star', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 5; self.update = function () { self.y += self.speed; if (self.y > 2732) { self.y = -5; self.x = Math.random() * 2048; } }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 //Init game with black background }); /**** * Game Code ****/ // Initialize variables var fairy; var bullets = []; var enemies = []; var scoreTxt; var score = 0; var dragNode = null; var isFairyHeld = false; // Track if the fairy is being held var waveCount = 0; // Track the wave count var waveConfig = [{ enemies: 6, hitpoints: [1] }, { enemies: 12, hitpoints: [2, 1] }, { enemies: 18, hitpoints: [3, 2, 1] } // Add more wave configurations as needed ]; // Initialize game elements function initGame() { // Create and position the fairy fairy = game.addChild(new Fairy()); fairy.x = 2048 / 2; fairy.y = 2732 - 200; // Create score text scoreTxt = new Text2('0', { size: 150, fill: "#ffffff" }); // Create starfield for (var i = 0; i < 100; i++) { var star = game.addChild(new Star()); star.x = Math.random() * 2048; star.y = Math.random() * 2732; } scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // Set up game event listeners game.down = function (x, y, obj) { dragNode = fairy; isFairyHeld = true; // Set isFairyHeld to true when the fairy is held handleMove(x, y, obj); }; game.up = function (x, y, obj) { dragNode = null; isFairyHeld = false; // Set isFairyHeld to false when the fairy is released }; game.move = handleMove; // Update game every tick game.update = updateGame; } // Handle move events function handleMove(x, y, obj) { if (dragNode) { dragNode.x = x; if (y > 2732 * 0.6) { dragNode.y = y; } else { dragNode.y = 2732 * 0.6; } } } // Update game logic function updateGame() { // Update starfield for (var i = game.children.length - 1; i >= 0; i--) { if (game.children[i] instanceof Star) { game.children[i].update(); } } // Update bullets for (var i = bullets.length - 1; i >= 0; i--) { bullets[i].update(); if (bullets[i].y < -50) { bullets[i].destroy(); bullets.splice(i, 1); } } // Update enemies for (var j = enemies.length - 1; j >= 0; j--) { enemies[j].update(); if (enemies[j].y > 2732 + 50) { enemies[j].destroy(); enemies.splice(j, 1); } } // Check for collisions for (var k = bullets.length - 1; k >= 0; k--) { for (var l = enemies.length - 1; l >= 0; l--) { if (bullets[k].intersects(enemies[l])) { bullets[k].destroy(); bullets.splice(k, 1); enemies[l].hitpoints--; if (enemies[l].hitpoints <= 0) { enemies[l].destroy(); enemies.splice(l, 1); score++; scoreTxt.setText(score); } break; } } } // Spawn new bullets if (LK.ticks % 20 == 0 && isFairyHeld) { // Only spawn new bullets if the fairy is being held var newBullet = new Bullet(); newBullet.x = fairy.x; newBullet.y = fairy.y; bullets.push(newBullet); game.addChild(newBullet); } // Spawn new enemies in a line if (LK.ticks % 600 == 0) { waveCount++; if (waveCount <= waveConfig.length) { var currentWave = waveConfig[waveCount - 1]; var maxEnemiesPerLine = 6; var enemySpacing = 2048 / (maxEnemiesPerLine + 1); // Adjust spacing to center enemies var totalRows = Math.ceil(currentWave.enemies / maxEnemiesPerLine); for (var i = 0; i < currentWave.enemies; i++) { var newBlock = new Enemy(); var row = Math.floor(i / maxEnemiesPerLine); newBlock.hitpoints = currentWave.hitpoints[row] || currentWave.hitpoints[currentWave.hitpoints.length - 1]; newBlock.x = i % maxEnemiesPerLine * enemySpacing + enemySpacing / 2; newBlock.y = row * 200 - 50; enemies.push(newBlock); game.addChild(newBlock); } // Center the rows of enemies var totalWidth = (Math.min(currentWave.enemies, maxEnemiesPerLine) - 1) * enemySpacing; var offsetX = (2048 - totalWidth) / 2; for (var j = 0; j < enemies.length; j++) { enemies[j].x += offsetX; } } } } // Initialize the game initGame();
===================================================================
--- original.js
+++ change.js
@@ -160,24 +160,24 @@
}
}
// Update enemies
for (var j = enemies.length - 1; j >= 0; j--) {
- blocks[j].update();
- if (blocks[j].y > 2732 + 50) {
- blocks[j].destroy();
- blocks.splice(j, 1);
+ enemies[j].update();
+ if (enemies[j].y > 2732 + 50) {
+ enemies[j].destroy();
+ enemies.splice(j, 1);
}
}
// Check for collisions
for (var k = bullets.length - 1; k >= 0; k--) {
for (var l = enemies.length - 1; l >= 0; l--) {
- if (bullets[k].intersects(blocks[l])) {
+ if (bullets[k].intersects(enemies[l])) {
bullets[k].destroy();
bullets.splice(k, 1);
- blocks[l].hitpoints--;
- if (blocks[l].hitpoints <= 0) {
- blocks[l].destroy();
- blocks.splice(l, 1);
+ enemies[l].hitpoints--;
+ if (enemies[l].hitpoints <= 0) {
+ enemies[l].destroy();
+ enemies.splice(l, 1);
score++;
scoreTxt.setText(score);
}
break;
@@ -201,21 +201,21 @@
var maxEnemiesPerLine = 6;
var enemySpacing = 2048 / (maxEnemiesPerLine + 1); // Adjust spacing to center enemies
var totalRows = Math.ceil(currentWave.enemies / maxEnemiesPerLine);
for (var i = 0; i < currentWave.enemies; i++) {
- var newBlock = new Block();
+ var newBlock = new Enemy();
var row = Math.floor(i / maxEnemiesPerLine);
newBlock.hitpoints = currentWave.hitpoints[row] || currentWave.hitpoints[currentWave.hitpoints.length - 1];
newBlock.x = i % maxEnemiesPerLine * enemySpacing + enemySpacing / 2;
newBlock.y = row * 200 - 50;
- blocks.push(newBlock);
+ enemies.push(newBlock);
game.addChild(newBlock);
}
// Center the rows of enemies
var totalWidth = (Math.min(currentWave.enemies, maxEnemiesPerLine) - 1) * enemySpacing;
var offsetX = (2048 - totalWidth) / 2;
- for (var j = 0; j < blocks.length; j++) {
- blocks[j].x += offsetX;
+ for (var j = 0; j < enemies.length; j++) {
+ enemies[j].x += offsetX;
}
}
}
}
8-bit. cartoon. white star.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
cartoon 8 bit fairy dust. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Cartoon, 8bit, fireball. Black border. Cicular.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
cartoon, 8 bit, shield. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
8bit, cartoon, axe. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
dark electric ball, 8bit, cartoon.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
8bit, cartoon, treasure chest frame. very big empty center. only a fine border of chest. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.