User prompt
Create another scrolling railing and mirror it in the right side of the screen.
User prompt
Match railing scroll speed to road scroll speed.
User prompt
Use extra instances of railings to fill that gaps on the left. Alternating Railing and Railing 2 with no gaps.
User prompt
Remove right railing asset.
User prompt
Make sure the railing class is initialized above the road and road 2
User prompt
Using the current X axis placement of the left railing as reference, remove it and replace it the an endlessly scrolling railing using instances of Railing and Railing2 as necessary to make sure there are no gaps on screen. It should behave as the scrolling Road does. Do not change anything in the Road and Road2 classes.
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'var road2 = game.addChild(new Road2());' Line Number: 173
User prompt
Using the Y position of the current railings, use Railing and Railing2 to create an endlessly scrolling railing.
User prompt
Flip the bottom two railings vertically and reattach
User prompt
Connect two more instances of the railings below the two existing ones.
User prompt
Move railings all the way down to the start of the road asset and pin there.
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'var road2 = game.addChild(new Road2());' Line Number: 157
User prompt
Keeping the same X axis, pin the railings onto the Road so that they create an endless line of railings. Add instances as needed to avoid pop in as they refresh.
User prompt
Move left railing left by 3%
User prompt
Move both railings out from the center by 3%
User prompt
Move both railings out from the center 3%
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'rightRailing.x = 2048 * 0.82; // Move right railing 7% out from center' Line Number: 168
User prompt
Move both out another 3%
User prompt
Move both railings out from center by 4%
User prompt
Place railing asset on top of road 25% from either side of the screen.
User prompt
Set up code to spawn Drones coming from the top of the screen.
User prompt
Rename enemy class as Drone and use Drone asset
User prompt
Move player landing position up 3%
User prompt
Reduce the variance another 50%
User prompt
Reduce the variance by half
/**** * Classes ****/ // Enemy class representing the enemy robots var Drone = Container.expand(function () { var self = Container.call(this); var droneGraphics = self.attachAsset('Drone', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 3; self.update = function () { self.y += self.speed; if (self.y > 2732) { self.destroy(); } }; }); // Dust class for dust particles var Dust = Container.expand(function () { var self = Container.call(this); var dustGraphics = self.attachAsset('Dust', { anchorX: 0.5, anchorY: 0.5 }); dustGraphics.alpha = 0.75; self.speed = Math.random() * 3 + 1; self.rotationSpeed = Math.random() * 0.02 - 0.01; // Random rotation speed between -0.01 and 0.01 self.direction = Math.random() * Math.PI * 0.5; self.update = function () { self.y += self.speed; self.x += Math.sin(self.direction) * self.speed; // Add slight X travel based on direction self.rotation += self.rotationSpeed; // Add rotation dustGraphics.alpha -= 0.01; // fade out at a medium pace if (self.y > 2732 || dustGraphics.alpha <= 0) { self.destroy(); } }; }); // Assets will be automatically created and loaded by the LK engine based on their usage in the code. // Hero class representing the player's spaceship var Hero = Container.expand(function () { var self = Container.call(this); self.prevX = self.x; // Initialize prevX with the current x position var heroGraphics = self.attachAsset('hero', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 10; self.update = function () { if (self.y > 2375) { self.y -= self.speed; } // Add rotation based on movement direction if (self.x > self.prevX) { self.rotation += Math.PI / 180 * 1; // Rotate 1 degree to the right if (self.rotation > Math.PI / 180 * 5) { self.rotation = Math.PI / 180 * 5; } } else if (self.x < self.prevX) { self.rotation -= Math.PI / 180 * 1; // Rotate 1 degree to the left if (self.rotation < Math.PI / 180 * -5) { self.rotation = Math.PI / 180 * -5; } } else { if (self.rotation > 0) { self.rotation -= Math.PI / 180 * 1; if (self.rotation < 0) { self.rotation = 0; } } else if (self.rotation < 0) { self.rotation += Math.PI / 180 * 1; if (self.rotation > 0) { self.rotation = 0; } } } self.prevX = self.x; // Store the current x position for the next frame // Add scale change to simulate footsteps if (LK.ticks % 24 < 12) { self.scale.x = 1.02; } else { self.scale.x = 0.98; } }; }); // Bullet class for hero's bullets var HeroBullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.attachAsset('heroBullet', { anchorX: 0.5, anchorY: 0.5 }); self.speed = -15; self.update = function () { self.y += self.speed; if (self.y < 0) { self.destroy(); } }; }); // Railing class for the scrolling railings var Railing = Container.expand(function () { var self = Container.call(this); var railingGraphics = self.attachAsset('Railing', { anchorX: 0.5, anchorY: 0 }); self.speed = 2; self.update = function () { self.y += self.speed; if (self.y >= 2732) { self.y = -2732; } }; }); // Road class for the scrolling road var Road = Container.expand(function () { var self = Container.call(this); var roadGraphics = self.attachAsset('Road', { anchorX: 0.5, anchorY: 0 }); self.speed = 2; self.update = function () { self.y += self.speed; if (self.y >= 2732) { self.y = -2732; } }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 //Init game with black background }); /**** * Game Code ****/ // Initialize the road instances var road1 = game.addChild(new Road()); var road2 = game.addChild(new Road2()); road2.x = 2048 / 2 * 0.94; road1.x = 2048 / 2; road1.y = 0; road2.y = -2732; // Initialize the left railing instances var leftRailing1 = game.addChild(new Railing()); var leftRailing2 = game.addChild(new Railing()); leftRailing1.x = 2048 * 0.16; // Move left railing 3% more out from center leftRailing1.y = 0; leftRailing2.x = 2048 * 0.16; // Move left railing 3% more out from center leftRailing2.y = -2732; // Initialize the right railing instances var rightRailing1 = game.addChild(new Railing()); var rightRailing2 = game.addChild(new Railing()); rightRailing1.x = 2048 * 0.81; // Move right railing 3% out from center rightRailing1.y = 0; rightRailing2.x = 2048 * 0.81; // Move right railing 3% out from center rightRailing2.y = -2732; // Initialize variables var hero = game.addChild(new Hero()); hero.x = 2048 / 2; hero.y = 2732 + hero.height; var enemies = []; var heroBullets = []; // Function to handle game updates game.update = function () { // Update the road and railing instances road1.update(); road2.update(); leftRailing1.update(); leftRailing2.update(); rightRailing1.update(); rightRailing2.update(); // Update hero position based on touch input if (dragNode) { hero.x = dragNode.x; hero.y = dragNode.y; } // Update enemies for (var i = enemies.length - 1; i >= 0; i--) { enemies[i].update(); if (enemies[i].intersects(hero)) { LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); } } // Update hero bullets for (var j = heroBullets.length - 1; j >= 0; j--) { heroBullets[j].update(); for (var k = enemies.length - 1; k >= 0; k--) { if (heroBullets[j].intersects(enemies[k])) { enemies[k].destroy(); heroBullets[j].destroy(); enemies.splice(k, 1); heroBullets.splice(j, 1); LK.setScore(LK.getScore() + 1); scoreTxt.setText(LK.getScore()); break; } } } // Spawn Drones from the top of the screen if (LK.ticks % 120 == 0) { var newDrone = new Drone(); newDrone.x = Math.random() * 2048; // Random x position across the width of the screen newDrone.y = -newDrone.height; // Start just outside the top of the screen enemies.push(newDrone); game.addChild(newDrone); } // Fire bullets if (LK.ticks % 30 == 0) { var newBullet = new HeroBullet(); newBullet.x = hero.x; newBullet.y = hero.y - hero.height / 2; heroBullets.push(newBullet); game.addChild(newBullet); } // Generate dust particles in sync with player pulsing if (LK.ticks % 24 == 0) { var newDust = new Dust(); newDust.x = hero.x - hero.width / 4; // Move dust spawn position right half as much as the last move newDust.y = hero.y + hero.height / 2 * 0.93; // Move dust spawn point up 3% more game.addChild(newDust); } else if (LK.ticks % 24 == 12) { var newDust = new Dust(); newDust.x = hero.x + hero.width / 4; // Create another dust spawn point an equal distance in from the right of the player asset newDust.y = hero.y + hero.height / 2 * 0.93; // Move dust spawn point up 3% more game.addChild(newDust); } }; // Handle touch input for hero movement var dragNode = null; game.down = function (x, y, obj) { dragNode = { x: hero.x, y: hero.y }; // Add a tilt-back effect during initial movement hero.rotation = x > hero.x ? Math.PI / 180 * -1 : Math.PI / 180 * 1; }; game.move = function (x, y, obj) { if (dragNode) { // Add a slight delay to the drag control to make the player feel like it has more weight dragNode.x += (x - dragNode.x) * 0.1; dragNode.y = hero.y; // Lock the y position to the hero's initial y position } }; game.up = function (x, y, obj) { dragNode = null; }; // Display score var scoreTxt = new Text2('0', { size: 150, fill: "#ffffff" }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); scoreTxt.setText(LK.getScore());
===================================================================
--- original.js
+++ change.js
@@ -98,12 +98,12 @@
self.destroy();
}
};
});
-// Road class for the scrolling road
-var Road = Container.expand(function () {
+// Railing class for the scrolling railings
+var Railing = Container.expand(function () {
var self = Container.call(this);
- var roadGraphics = self.attachAsset('Road', {
+ var railingGraphics = self.attachAsset('Railing', {
anchorX: 0.5,
anchorY: 0
});
self.speed = 2;
@@ -113,12 +113,12 @@
self.y = -2732;
}
};
});
-// Road2 class for the scrolling road
-var Road2 = Container.expand(function () {
+// Road class for the scrolling road
+var Road = Container.expand(function () {
var self = Container.call(this);
- var roadGraphics = self.attachAsset('Road2', {
+ var roadGraphics = self.attachAsset('Road', {
anchorX: 0.5,
anchorY: 0
});
self.speed = 2;
@@ -146,33 +146,37 @@
road2.x = 2048 / 2 * 0.94;
road1.x = 2048 / 2;
road1.y = 0;
road2.y = -2732;
-// Initialize the left railing asset
-var leftRailing = game.addChild(LK.getAsset('Railing', {
- anchorX: 0.5,
- anchorY: 0
-}));
-leftRailing.x = 2048 * 0.16; // Move left railing 3% more out from center
-leftRailing.y = 0;
-// Initialize the right railing asset
-var rightRailing = game.addChild(LK.getAsset('Railing', {
- anchorX: 0.5,
- anchorY: 0
-}));
-rightRailing.x = 2048 * 0.81; // Move right railing 3% out from center
-rightRailing.y = 0;
+// Initialize the left railing instances
+var leftRailing1 = game.addChild(new Railing());
+var leftRailing2 = game.addChild(new Railing());
+leftRailing1.x = 2048 * 0.16; // Move left railing 3% more out from center
+leftRailing1.y = 0;
+leftRailing2.x = 2048 * 0.16; // Move left railing 3% more out from center
+leftRailing2.y = -2732;
+// Initialize the right railing instances
+var rightRailing1 = game.addChild(new Railing());
+var rightRailing2 = game.addChild(new Railing());
+rightRailing1.x = 2048 * 0.81; // Move right railing 3% out from center
+rightRailing1.y = 0;
+rightRailing2.x = 2048 * 0.81; // Move right railing 3% out from center
+rightRailing2.y = -2732;
// Initialize variables
var hero = game.addChild(new Hero());
hero.x = 2048 / 2;
hero.y = 2732 + hero.height;
var enemies = [];
var heroBullets = [];
// Function to handle game updates
game.update = function () {
- // Update the road instances
+ // Update the road and railing instances
road1.update();
road2.update();
+ leftRailing1.update();
+ leftRailing2.update();
+ rightRailing1.update();
+ rightRailing2.update();
// Update hero position based on touch input
if (dragNode) {
hero.x = dragNode.x;
hero.y = dragNode.y;
View of a futuristic soldier from directly overhead. White armor with blue glowing cyberpunk details. Holding weapon forward.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
The lights of a futuristic city in the dark at night. Very high above it looking straight down like from an airplane or a map. Background for an endlessly scrolling game.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A big button that say Play to start playing a game. Use neon cyberpunk style.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Overhead view. A hovering robot with a tapered midsection with two bulky arms with claw like hands and a giant red “eye” on top of its body. Looking straight down. Cyberpunk, black with red glowing highlights.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Overhead view. A heavily armored attack robot. Two arms with large gauntlet type fists. Four large red glowing eyes. Three distinct parts, body and two arms. Symmetrical design. Birds Eye view above them looking down on their head. Simple shapes. Low detail. Cyberpunk, black with red glowing highlights.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A red glowing line. Bright red core with subtle outer glow. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A blue transparent dome type shield. Simple graphics. Low details. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A ring of nuclear fire seen from overhead. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A thin robot with goggles riding a hover-bike. Twin blaster guns mounted on front. Top down view. Birds Eye view. Cyberpunk with red glowing highlights... Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Battle drone, circular. White with blue glowing highlights. Birds Eye view from overhead. Cyberpunk. Simple shapes.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
GameTheme
Music
TitleTheme
Music
HeroBlaster
Sound effect
Explosion
Sound effect
PowerUp
Sound effect
CloneSoldier
Sound effect
WeaponPowerUp
Sound effect
Drone
Sound effect
BinaryStorm
Sound effect
LaserCharge
Sound effect
LaserFire
Sound effect
BruiserStomp
Sound effect
RaiderSwoop
Sound effect
ShieldLevelUp
Sound effect
HeroHit
Sound effect
HeroScream
Sound effect