User prompt
I want to add a resource page, where you can choose
User prompt
I don't want to see the game over when the player wins
User prompt
When the player wins, it should say "You win"
User prompt
When the boss disappears, the game ends and the player wins
User prompt
Please fix the bug: 'TypeError: game.resume is not a function' in or related to this line: 'game.resume();' Line Number: 223
User prompt
The start screen needs to have a brand new image and the game will not work until the start button on the image is clicked
User prompt
Please fix the bug: 'Uncaught TypeError: game.pause is not a function' in or related to this line: 'game.pause();' Line Number: 222
User prompt
Add a start screen
User prompt
Add a background music
User prompt
When the player touches the kneeling boss, two choices are triggered, and the two choices represent an ending respectively.
User prompt
I want to add a background image
User prompt
Cancel score
User prompt
Ordinary bullets will disappear immediately when fired at the boss.
User prompt
Please fix the bug: 'ReferenceError: swordFired is not defined' in or related to this line: 'if (!swordFired) {' Line Number: 391
User prompt
The sword will only fire once
User prompt
Added a new image for a kneeling boss
User prompt
After the boss is removed, an Npc named "A Kneeling Boss" is generated at the same location.
User prompt
Make the boss not disappear when it touches the sword, but just stay where it is
User prompt
The key disappears after touching the boss, but the boss does not disappear but stays where it is.
User prompt
Make the sword's firing logic consistent with normal bullets
User prompt
After the player has all the ores, he will get a new bullet named sword. This bullet can defeat the boss.
User prompt
Change to 1.5 seconds
User prompt
The player needs to overlap with the ore for three seconds to collect the ore.
User prompt
The player needs to stay close to the ore for three seconds to collect it.
User prompt
Add ore to the original
/****
* Classes
****/
// Class for boss
var Boss = Container.expand(function () {
var self = Container.call(this);
var bossGraphics = self.attachAsset('boss', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 2;
self.direction = Math.random() * 2 * Math.PI; // Random direction in radians
self.update = function () {
// Calculate direction towards the player
var dx = player.x - self.x;
var dy = player.y - self.y;
var distance = Math.sqrt(dx * dx + dy * dy);
// Normalize the direction vector (dx and dy)
dx /= distance;
dy /= distance;
// Move towards the player
self.x += dx * self.speed;
self.y += dy * self.speed;
};
});
// Class for bullets
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 () {
// Calculate direction towards the enemy
if (enemies.length > 0) {
var dx = enemies[0].x - self.x;
var dy = enemies[0].y - self.y;
var distance = Math.sqrt(dx * dx + dy * dy);
// Normalize the direction vector (dx and dy)
dx /= distance;
dy /= distance;
// Move towards the enemy
self.x += dx * self.speed;
self.y += dy * self.speed;
}
// Rotate the bullet
bulletGraphics.rotation += 0.1;
};
});
// Class for crafting bullets
var CraftBullet = Container.expand(function () {
var self = Container.call(this);
var stone = self.attachAsset('stone', {
anchorX: 0.5,
anchorY: 0.5
});
var stick = self.attachAsset('stick', {
anchorX: 0.5,
anchorY: 0.5
});
self.update = function () {
// CraftBullet update logic
};
});
// Class for enemies
var Enemy = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.attachAsset('enemy', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 3;
self.direction = Math.random() * 2 * Math.PI; // Random direction in radians
self.update = function () {
// Calculate direction towards the player
var dx = player.x - self.x;
var dy = player.y - self.y;
var distance = Math.sqrt(dx * dx + dy * dy);
// Normalize the direction vector (dx and dy)
dx /= distance;
dy /= distance;
// Move towards the player
self.x += dx * self.speed;
self.y += dy * self.speed;
};
});
// Class for ores
var Ore = Container.expand(function () {
var self = Container.call(this);
var oreGraphics = self.attachAsset('ore', {
anchorX: 0.5,
anchorY: 0.5
});
self.update = function () {
// Ore update logic
};
});
// Assets will be automatically created and loaded by the LK engine based on their usage in the code.
// Class for the player character
var Player = Container.expand(function () {
var self = Container.call(this);
var playerGraphics = self.attachAsset('player', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 5;
self.update = function () {
// Player update logic
};
});
// Class for stick weapon
var Stick = Container.expand(function () {
var self = Container.call(this);
var stickGraphics = self.attachAsset('stick', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 5;
self.update = function () {
// Stick update logic
// Make the stick surround the player
self.x = player.x;
self.y = player.y;
};
});
// Class for stones
var Stone = Container.expand(function () {
var self = Container.call(this);
var stoneGraphics = self.attachAsset('stone', {
anchorX: 0.5,
anchorY: 0.5
});
self.update = function () {
// Stone update logic
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000 // Init game with black background
});
/****
* Game Code
****/
// Initialize bullets
var bullets = [];
// Initialize player
var player = game.addChild(new Player());
player.x = 2048 / 2;
player.y = 2732 - 200;
// Initialize enemies
var enemies = [];
var bossDefeated = false;
for (var i = 0; i < 5; i++) {
var enemy = new Enemy();
var side = Math.floor(Math.random() * 4); // Random side (0: top, 1: right, 2: bottom, 3: left)
switch (side) {
case 0:
enemy.x = Math.random() * 2048;
enemy.y = 0;
break;
case 1:
enemy.x = 2048;
enemy.y = Math.random() * 2732;
break;
case 2:
enemy.x = Math.random() * 2048;
enemy.y = 2732;
break;
case 3:
enemy.x = 0;
enemy.y = Math.random() * 2732;
break;
}
enemies.push(enemy);
game.addChild(enemy);
}
// Initialize stick weapons
var sticks = [];
for (var i = 0; i < 5; i++) {
var stick = new Stick();
do {
stick.x = Math.random() * 2048;
stick.y = Math.random() * 1000;
} while (sticks.some(function (s) {
return Math.abs(s.x - stick.x) < 100 && Math.abs(s.y - stick.y) < 100;
}) || stones && stones.some(function (s) {
return Math.abs(s.x - stick.x) < 100 && Math.abs(s.y - stick.y) < 100;
}));
sticks.push(stick);
game.addChild(stick);
}
// Initialize stones
var stones = [];
for (var i = 0; i < 10; i++) {
var stone = game.addChild(new Stone());
do {
stone.x = Math.random() * 2048;
stone.y = Math.random() * 2732;
} while (stones.some(function (s) {
return Math.abs(s.x - stone.x) < 100 && Math.abs(s.y - stone.y) < 100;
}) || sticks.some(function (s) {
return Math.abs(s.x - stone.x) < 100 && Math.abs(s.y - stone.y) < 100;
}));
stones.push(stone);
}
// Initialize ores
var ores = [];
for (var i = 0; i < 5; i++) {
var ore = game.addChild(new Ore());
do {
ore.x = Math.random() * 2048;
ore.y = Math.random() * 2732;
} while (ores.some(function (o) {
return Math.abs(o.x - ore.x) < 100 && Math.abs(o.y - ore.y) < 100;
}) || stones.some(function (s) {
return Math.abs(s.x - ore.x) < 100 && Math.abs(s.y - ore.y) < 100;
}) || sticks.some(function (s) {
return Math.abs(s.x - ore.x) < 100 && Math.abs(s.y - ore.y) < 100;
}));
ores.push(ore);
}
// Initialize crafting bullets
var craftBullets = [];
for (var i = 0; i < 5; i++) {
var craftBullet = game.addChild(new CraftBullet());
craftBullet.x = Math.random() * 2048;
craftBullet.y = Math.random() * 2732;
craftBullets.push(craftBullet);
}
// Handle player movement
game.move = function (x, y, obj) {
player.x = x;
player.y = y;
};
// Game update loop
game.update = function () {
// Update enemies
for (var i = 0; i < enemies.length; i++) {
enemies[i].update();
if (player.intersects(enemies[i])) {
// Handle player collision with enemy
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
}
// Handle enemy collision with the weapon and bullets
for (var j = 0; j < sticks.length; j++) {
if (enemies[i] && sticks[j] && enemies[i].intersects(sticks[j])) {
// Enemy is damaged by the weapon
enemies[i].destroy();
enemies.splice(i, 1);
i--;
}
}
for (var j = 0; j < bullets.length; j++) {
if (enemies[i].intersects(bullets[j])) {
if (!(enemies[i] instanceof Boss)) {
// Destroy regular enemies when hit by any bullet
enemies[i].destroy();
enemies.splice(i, 1);
i--;
bullets[j].destroy();
bullets.splice(j, 1);
break;
}
}
}
}
// Create a new boss when all enemies are destroyed
if (enemies.length === 0 && !bossDefeated) {
var boss = new Boss();
boss.x = Math.random() * 2048;
boss.y = Math.random() * 2732;
enemies.push(boss);
game.addChild(boss);
}
// Check if the boss is defeated
if (bossDefeated) {
// Prevent new enemies from appearing
return;
}
// Update stick weapons
for (var i = 0; i < sticks.length; i++) {
sticks[i].update();
if (player.intersects(sticks[i])) {
// Handle player picking up a stick
sticks[i].destroy();
sticks.splice(i, 1);
i--;
}
}
// Update stone weapons
for (var i = 0; i < stones.length; i++) {
stones[i].update();
if (player.intersects(stones[i])) {
// Handle player picking up a stone
stones[i].destroy();
stones.splice(i, 1);
i--;
}
}
// Update ores
for (var i = 0; i < ores.length; i++) {
ores[i].update();
if (player.intersects(ores[i])) {
if (!ores[i].collectionStartTime) {
ores[i].collectionStartTime = Date.now();
} else if (Date.now() - ores[i].collectionStartTime >= 1500) {
// Handle player collecting ore after 3 seconds
ores[i].destroy();
ores.splice(i, 1);
i--;
}
} else {
ores[i].collectionStartTime = null; // Reset collection time if not intersecting
}
}
// Update crafting bullets
for (var i = 0; i < craftBullets.length; i++) {
craftBullets[i].update();
if (player.intersects(craftBullets[i])) {
// Handle player crafting a bullet
craftBullets[i].destroy();
craftBullets.splice(i, 1);
i--;
// Player fires a regular bullet
var bullet = new Bullet();
bullet.x = player.x;
bullet.y = player.y;
bullets.push(bullet);
game.addChild(bullet);
}
}
};
// Add score display
var scoreTxt = new Text2('0', {
size: 150,
fill: "#ffffff"
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
// Update score
function updateScore() {
LK.setScore(LK.getScore() + 1);
scoreTxt.setText(LK.getScore());
}
// Set interval to update score
var scoreInterval = LK.setInterval(updateScore, 1000); ===================================================================
--- original.js
+++ change.js
@@ -308,9 +308,9 @@
ores[i].update();
if (player.intersects(ores[i])) {
if (!ores[i].collectionStartTime) {
ores[i].collectionStartTime = Date.now();
- } else if (Date.now() - ores[i].collectionStartTime >= 3000) {
+ } else if (Date.now() - ores[i].collectionStartTime >= 1500) {
// Handle player collecting ore after 3 seconds
ores[i].destroy();
ores.splice(i, 1);
i--;
one wooden sticks. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
https://www.google.com/url?sa=i&url=https%3A%2F%2Fwww.amazon.eg%2F-%2Fen%2FOutdoor-Essentials-Faux-Rock-Small%2Fdp%2FB00NOP1MVO&psig=AOvVaw2V1WQg1qj9oUmhvM4bQiYI&ust=1732068079014000&source=images&cd=vfe&opi=89978449&ved=0CBQQjRxqFwoTCPCXssam54kDFQAAAAAdAAAAABAJ. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
https://www.google.com/url?sa=i&url=https%3A%2F%2Fcryofall.fandom.com%2Fwiki%2FStone_Axe&psig=AOvVaw3xJUeebmFvEdpWSjI8cOsl&ust=1732068916220000&source=images&cd=vfe&opi=89978449&ved=0CBQQjRxqFwoTCJjY7NSp54kDFQAAAAAdAAAAABAE. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Powerful humanoid creature. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
One Creature is similar to humans. They live in places with nuclear radiation, have a primitive lifestyle, and have a certain degree of self-awareness. The appearance is not scary. Single Game Texture. In-Game asset. 2d.
One rare ore. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Make his body look destroyed, also make it cover with some green liquid
Red Blade Battle Axe. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
In a wasteland, there are some green plants and some animal bones around.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A humans who traveled through time came from World War 3. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.