Code edit (1 edits merged)
Please save this source code
User prompt
their is a moon ithe corner of the screen in the gameplay can you remove that
User prompt
i cant hear the sounds
User prompt
very good, can you add more decor to the game in general (not the same assets new ones)
User prompt
add a pixelated moon picture at the bottom
User prompt
spot on but add more decore on the start screen
User prompt
make a screen before the game with a start button when yoh press it it starts the game
User prompt
scrap the idea
User prompt
its good just can you add a start butten so when you hit it ,it statrts the game
User prompt
make a title screen
User prompt
make that a asset
User prompt
- **Slow Motion:** Temporarily slows down all asteroids when picked up power up
User prompt
do dynamic difficulty
User prompt
Please fix the bug: 'TypeError: LK.effects.shakeScreen is not a function' in or related to this line: 'LK.effects.shakeScreen(0xff0000, 800, 20); // Strong shake on collision' Line Number: 88
User prompt
Please fix the bug: 'TypeError: LK.effects.shake is not a function' in or related to this line: 'LK.effects.shake({' Line Number: 88
User prompt
Please fix the bug: 'TypeError: LK.effects.shakeScreen is not a function' in or related to this line: 'LK.effects.shakeScreen(800, 20); // Strong shake on collision' Line Number: 88
User prompt
yes do thatt
User prompt
Make the score on top.
User prompt
Make every astro that the spaceship dodges, make that count as a point.
User prompt
No, just make them come down in your direction.
User prompt
Yes, but make the asteroids come for you.
User prompt
Make it go left to right. It can't move up or down.
Initial prompt
asteroid dodger
/****
* Classes
****/
// Asteroid class
var Asteroid = Container.expand(function () {
var self = Container.call(this);
var asteroidGraphics = self.attachAsset('asteroid', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 5;
self.update = function () {
self.y += self.speed;
};
});
//<Assets used in the game will automatically appear here>
// Slow Motion Power-Up class
var SlowMotionPowerUp = Container.expand(function () {
var self = Container.call(this);
var powerupGraphics = self.attachAsset('slowmo', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 6;
self.update = function () {
self.y += self.speed;
};
return self;
});
// Spaceship class
var Spaceship = Container.expand(function () {
var self = Container.call(this);
var spaceshipGraphics = self.attachAsset('spaceship', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 10;
self.update = function () {
// Spaceship update logic if needed
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000 //Init game with black background
});
/****
* Game Code
****/
// Decorative star (pixelated, small)
// Decorative planet (different from moon, pixelated style)
// Title screen state and UI
var gameState = "title";
var titleContainer = new Container();
var startButton = null;
var titleText = null;
// Decorative asteroid (left)
var decoAsteroidL = LK.getAsset('asteroid', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.2,
scaleY: 1.2
});
decoAsteroidL.x = 2048 * 0.25;
decoAsteroidL.y = 650;
titleContainer.addChild(decoAsteroidL);
// Decorative asteroid (right)
var decoAsteroidR = LK.getAsset('asteroid', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.2,
scaleY: 1.2
});
decoAsteroidR.x = 2048 * 0.75;
decoAsteroidR.y = 650;
titleContainer.addChild(decoAsteroidR);
// Decorative slowmo powerup (left)
var decoPowerupL = LK.getAsset('slowmo', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1,
scaleY: 1
});
decoPowerupL.x = 2048 * 0.18;
decoPowerupL.y = 1100;
titleContainer.addChild(decoPowerupL);
// Decorative slowmo powerup (right)
var decoPowerupR = LK.getAsset('slowmo', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1,
scaleY: 1
});
decoPowerupR.x = 2048 * 0.82;
decoPowerupR.y = 1100;
titleContainer.addChild(decoPowerupR);
// Decorative spaceship (center, above title)
var decoShip = LK.getAsset('spaceship', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.3,
scaleY: 1.3
});
decoShip.x = 2048 / 2;
decoShip.y = 600;
titleContainer.addChild(decoShip);
// Decorative pixelated moon at the bottom center
// Use a placeholder moon asset (add to Assets if not present)
var decoMoon = LK.getAsset('moon', {
anchorX: 0.5,
anchorY: 1,
scaleX: 1.5,
scaleY: 1.5
});
decoMoon.x = 2048 / 2;
decoMoon.y = 2732 - 40;
titleContainer.addChild(decoMoon);
// Title text
titleText = new Text2("ASTEROID DODGE", {
size: 180,
fill: 0xffffff
});
titleText.anchor.set(0.5, 0.5);
titleText.x = 2048 / 2;
titleText.y = 900;
titleContainer.addChild(titleText);
// Decorative subtitle
var subtitleText = new Text2("Dodge asteroids, grab power-ups, survive!", {
size: 80,
fill: 0xccccff
});
subtitleText.anchor.set(0.5, 0.5);
subtitleText.x = 2048 / 2;
subtitleText.y = 1080;
titleContainer.addChild(subtitleText);
// Start button
startButton = new Container();
var btnBg = LK.getAsset('centerCircle', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 3,
scaleY: 1.2,
tint: 0x3399ff
});
btnBg.x = 0;
btnBg.y = 0;
startButton.addChild(btnBg);
var btnText = new Text2("START", {
size: 120,
fill: 0xffffff
});
btnText.anchor.set(0.5, 0.5);
btnText.x = 0;
btnText.y = 0;
startButton.addChild(btnText);
startButton.x = 2048 / 2;
startButton.y = 1400;
titleContainer.addChild(startButton);
// Add titleContainer to game
game.addChild(titleContainer);
// Spaceship and asteroids (initialized after pressing start)
var spaceship = null;
var asteroids = [];
// Decorative gameplay background elements
var decorStars = [];
var decorPlanet = null;
// Slow motion power-up variables
var slowMotionActive = false;
var slowMotionTimer = 0;
var SLOW_MOTION_DURATION = 180; // 3 seconds at 60fps
var SLOW_MOTION_FACTOR = 0.3; // Asteroids move at 30% speed
// Score text (initialized after pressing start)
var scoreTxt = null;
// --- Decorative assets for gameplay background ---
// (Removed decorative moon/planet from top right)
// Add several stars (using centerCircle asset, different tints/sizes)
for (var i = 0; i < 8; i++) {
var star = LK.getAsset('centerCircle', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 0.18 + Math.random() * 0.12,
scaleY: 0.18 + Math.random() * 0.12,
tint: [0xffffff, 0xfffbe0, 0xbbeeff, 0xffeedd][Math.floor(Math.random() * 4)]
});
// Randomly position stars, avoid top left 100x100
var sx = 120 + Math.random() * (2048 - 240);
var sy = 120 + Math.random() * (2732 - 240);
star.x = sx;
star.y = sy;
game.addChild(star);
decorStars.push(star);
}
// Start button event
startButton.down = function (x, y, obj) {
if (gameState !== "title") {
return;
}
// Remove title UI
titleContainer.visible = false;
// Start game
gameState = "playing";
// Initialize spaceship
spaceship = game.addChild(new Spaceship());
spaceship.x = 2048 / 2;
spaceship.y = 2732 - 200;
// Initialize asteroids array
asteroids = [];
// Reset slow motion
slowMotionActive = false;
slowMotionTimer = 0;
// Initialize score
LK.setScore(0);
// Score display
if (scoreTxt) {
scoreTxt.setText("0");
scoreTxt.visible = true;
} else {
scoreTxt = new Text2('0', {
size: 150,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
}
};
// Function to handle spaceship movement
function handleMove(x, y, obj) {
if (gameState !== "playing" || !spaceship) {
return;
}
spaceship.x = x;
// spaceship.y = y; // Commented out to restrict vertical movement
}
// Game move event
game.move = function (x, y, obj) {
if (gameState === "title") {
return;
}
handleMove(x, y, obj);
};
// Game update function
game.update = function () {
// Title screen logic
if (gameState === "title") {
// Show title UI, hide gameplay UI
if (titleContainer) {
titleContainer.visible = true;
}
if (scoreTxt) {
scoreTxt.visible = false;
}
// Hide gameplay decor
if (decorPlanet) {
decorPlanet.visible = false;
}
for (var ds = 0; ds < decorStars.length; ds++) {
decorStars[ds].visible = false;
}
return;
}
// Show gameplay UI, hide title UI
if (titleContainer) {
titleContainer.visible = false;
}
if (scoreTxt) {
scoreTxt.visible = true;
}
// Show gameplay decor
if (decorPlanet) {
decorPlanet.visible = true;
}
for (var ds = 0; ds < decorStars.length; ds++) {
decorStars[ds].visible = true;
}
// Dynamic difficulty variables
if (typeof asteroidSpawnInterval === "undefined") {
var asteroidSpawnInterval = 60; // Initial spawn interval (frames)
var asteroidBaseSpeed = 5; // Initial asteroid speed
var asteroidMaxSpeed = 30; // Cap asteroid speed
var asteroidMinInterval = 15; // Minimum interval between spawns
var asteroidDifficultyStep = 10; // Score step for difficulty increase
var asteroidLastDifficultyScore = 0;
}
// Increase difficulty based on score
var currentScore = LK.getScore();
if (currentScore - asteroidLastDifficultyScore >= asteroidDifficultyStep) {
asteroidLastDifficultyScore = currentScore;
// Increase speed, decrease interval
asteroidBaseSpeed = Math.min(asteroidBaseSpeed + 1, asteroidMaxSpeed);
asteroidSpawnInterval = Math.max(asteroidSpawnInterval - 5, asteroidMinInterval);
}
// Create new asteroids
if (LK.ticks % asteroidSpawnInterval == 0) {
var newAsteroid = new Asteroid();
newAsteroid.x = Math.random() * 2048;
newAsteroid.y = -50;
newAsteroid.speed = asteroidBaseSpeed;
asteroids.push(newAsteroid);
game.addChild(newAsteroid);
// 1 in 10 chance to spawn a slow motion power-up (but not if one is already active or present)
if (!slowMotionActive && Math.random() < 0.1 && typeof slowMotionPowerUp === "undefined") {
slowMotionPowerUp = new SlowMotionPowerUp();
slowMotionPowerUp.x = Math.random() * 2048;
slowMotionPowerUp.y = -100;
game.addChild(slowMotionPowerUp);
}
}
// Update asteroids
for (var i = asteroids.length - 1; i >= 0; i--) {
var asteroid = asteroids[i];
// Apply slow motion if active
if (slowMotionActive) {
asteroid.y += asteroid.speed * SLOW_MOTION_FACTOR;
} else {
asteroid.update();
}
// Check for collision with spaceship
if (spaceship && spaceship.intersects(asteroid)) {
LK.effects.flashScreen(0xff0000, 1000);
// Play collision sound if available
if (LK.getSound && LK.getSound('crash')) {
LK.getSound('crash').play();
}
// Show game over
LK.showGameOver();
// Reset to title screen after game over
gameState = "title";
// Remove spaceship and asteroids
if (spaceship) {
spaceship.destroy();
spaceship = null;
}
for (var j = 0; j < asteroids.length; j++) {
if (asteroids[j]) {
asteroids[j].destroy();
}
}
asteroids = [];
// Remove powerup if present
if (typeof slowMotionPowerUp !== "undefined" && slowMotionPowerUp) {
slowMotionPowerUp.destroy();
slowMotionPowerUp = undefined;
}
// Hide score
if (scoreTxt) {
scoreTxt.visible = false;
}
// Show title UI
if (titleContainer) {
titleContainer.visible = true;
}
return;
}
// Remove off-screen asteroids and increment score
if (asteroid.y > 2732 + 50) {
// Near miss visual/audio effect if asteroid was close to spaceship horizontally
var dx = spaceship ? Math.abs(asteroid.x - spaceship.x) : 9999;
if (dx < 200) {
LK.effects.flashScreen(0xffff00, 200); // Quick yellow flash for near miss
// Play near miss sound if available
if (LK.getSound && LK.getSound('nearMiss')) {
LK.getSound('nearMiss').play();
}
}
asteroid.destroy();
asteroids.splice(i, 1);
LK.setScore(LK.getScore() + 1); // Increment score for each asteroid dodged
if (scoreTxt) {
scoreTxt.setText(LK.getScore());
} // Update score display
// Play score up sound if available
if (LK.getSound && LK.getSound('scoreUp')) {
LK.getSound('scoreUp').play();
}
// Play asteroid whoosh sound if available
if (LK.getSound && LK.getSound('whoosh')) {
LK.getSound('whoosh').play();
}
}
}
// Handle slow motion power-up logic
if (typeof slowMotionPowerUp !== "undefined" && slowMotionPowerUp) {
// Move power-up
slowMotionPowerUp.y += slowMotionPowerUp.speed;
// Check for collision with spaceship
if (spaceship && spaceship.intersects(slowMotionPowerUp)) {
slowMotionActive = true;
slowMotionTimer = SLOW_MOTION_DURATION;
// Visual feedback for slow motion activation
LK.effects.flashScreen(0x3399ff, 400);
slowMotionPowerUp.destroy();
slowMotionPowerUp = undefined;
} else if (slowMotionPowerUp.y > 2732 + 100) {
// Remove if off screen
slowMotionPowerUp.destroy();
slowMotionPowerUp = undefined;
}
}
// Handle slow motion timer
if (slowMotionActive) {
slowMotionTimer--;
if (slowMotionTimer <= 0) {
slowMotionActive = false;
}
}
}; ===================================================================
--- original.js
+++ change.js
@@ -194,9 +194,11 @@
decorStars.push(star);
}
// Start button event
startButton.down = function (x, y, obj) {
- if (gameState !== "title") return;
+ if (gameState !== "title") {
+ return;
+ }
// Remove title UI
titleContainer.visible = false;
// Start game
gameState = "playing";
@@ -225,36 +227,52 @@
}
};
// Function to handle spaceship movement
function handleMove(x, y, obj) {
- if (gameState !== "playing" || !spaceship) return;
+ if (gameState !== "playing" || !spaceship) {
+ return;
+ }
spaceship.x = x;
// spaceship.y = y; // Commented out to restrict vertical movement
}
// Game move event
game.move = function (x, y, obj) {
- if (gameState === "title") return;
+ if (gameState === "title") {
+ return;
+ }
handleMove(x, y, obj);
};
// Game update function
game.update = function () {
// Title screen logic
if (gameState === "title") {
// Show title UI, hide gameplay UI
- if (titleContainer) titleContainer.visible = true;
- if (scoreTxt) scoreTxt.visible = false;
+ if (titleContainer) {
+ titleContainer.visible = true;
+ }
+ if (scoreTxt) {
+ scoreTxt.visible = false;
+ }
// Hide gameplay decor
- if (decorPlanet) decorPlanet.visible = false;
+ if (decorPlanet) {
+ decorPlanet.visible = false;
+ }
for (var ds = 0; ds < decorStars.length; ds++) {
decorStars[ds].visible = false;
}
return;
}
// Show gameplay UI, hide title UI
- if (titleContainer) titleContainer.visible = false;
- if (scoreTxt) scoreTxt.visible = true;
+ if (titleContainer) {
+ titleContainer.visible = false;
+ }
+ if (scoreTxt) {
+ scoreTxt.visible = true;
+ }
// Show gameplay decor
- if (decorPlanet) decorPlanet.visible = true;
+ if (decorPlanet) {
+ decorPlanet.visible = true;
+ }
for (var ds = 0; ds < decorStars.length; ds++) {
decorStars[ds].visible = true;
}
// Dynamic difficulty variables
@@ -315,20 +333,26 @@
spaceship.destroy();
spaceship = null;
}
for (var j = 0; j < asteroids.length; j++) {
- if (asteroids[j]) asteroids[j].destroy();
+ if (asteroids[j]) {
+ asteroids[j].destroy();
+ }
}
asteroids = [];
// Remove powerup if present
if (typeof slowMotionPowerUp !== "undefined" && slowMotionPowerUp) {
slowMotionPowerUp.destroy();
slowMotionPowerUp = undefined;
}
// Hide score
- if (scoreTxt) scoreTxt.visible = false;
+ if (scoreTxt) {
+ scoreTxt.visible = false;
+ }
// Show title UI
- if (titleContainer) titleContainer.visible = true;
+ if (titleContainer) {
+ titleContainer.visible = true;
+ }
return;
}
// Remove off-screen asteroids and increment score
if (asteroid.y > 2732 + 50) {
@@ -343,9 +367,11 @@
}
asteroid.destroy();
asteroids.splice(i, 1);
LK.setScore(LK.getScore() + 1); // Increment score for each asteroid dodged
- if (scoreTxt) scoreTxt.setText(LK.getScore()); // Update score display
+ if (scoreTxt) {
+ scoreTxt.setText(LK.getScore());
+ } // Update score display
// Play score up sound if available
if (LK.getSound && LK.getSound('scoreUp')) {
LK.getSound('scoreUp').play();
}