User prompt
The ocean layer should move very slowly and easily.
User prompt
The ocean layer at the bottom of the screen should gently sway up and down and side to side, just a couple pixels at a time.
User prompt
Stop the music yet.
User prompt
After every 8 pillars, play the alert sound.
User prompt
Stop the music when the player hits the bottom of the screen.
Code edit (4 edits merged)
Please save this source code
User prompt
remove the fade from imageflap
Code edit (3 edits merged)
Please save this source code
User prompt
Hide PelicanCG when the flap image is on screen.
Code edit (1 edits merged)
Please save this source code
User prompt
The flap image should only appear for one half of a second, and then it completely disappears. It will replace the regular pelican image while it's on screen.
User prompt
Do not fade the flap image. It should go away immediately.
User prompt
For the player's pelican, when it flaps its wings. This image will appear every time the player clicks the mouse button to flap the wings.
Code edit (1 edits merged)
Please save this source code
User prompt
Music once the game is over.
User prompt
Play the alert sound right before the jets appear on screen.
User prompt
When a fish is collided with, show plus 10 above the yum text.
User prompt
Play the sound Special Score 1 when a fish is collided with.
Code edit (1 edits merged)
Please save this source code
User prompt
Play arcade fail sound when the game ends.
User prompt
Not playing the music, game ends.
User prompt
Play the arcade fail sound when the game is over.
User prompt
Play the flap sound every time the user clicks the screen.
Code edit (1 edits merged)
Please save this source code
User prompt
Start the music when the game begins.
/**** * Classes ****/ // Fish class var Fish = Container.expand(function () { var self = Container.call(this); var fishGraphics = self.attachAsset('pelican', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 2; self.direction = 1; // 1 for right, -1 for left self.update = function () { self.x += self.speed * self.direction; if (self.x > 2048 || self.x < 0) { self.direction *= -1; // Change direction fishGraphics.scale.x *= -1; // Flip the direction of the image } }; }); // The assets will be automatically created and loaded by the LK engine // Jet class var Jet = Container.expand(function () { var self = Container.call(this); var jetGraphics = self.attachAsset('jet', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 15; self.update = function () { self.x -= self.speed; if (self.x < -100) { self.destroy(); } }; }); // Obstacle class var Obstacle = Container.expand(function () { var self = Container.call(this); var obstacleGraphics = self.attachAsset('obstacle', { anchorX: 0.5, anchorY: 0.5 }); self.speed = -5; self.update = function () { self.x += self.speed; self.children.forEach(function (child) { if (child instanceof Text2) { child.x = self.x; } }); if (self.x < -100) { self.destroy(); } }; self.createPipe = function (gapY, gapHeight) { var topPipe = LK.getAsset('obstacle', { anchorX: 0.5, anchorY: 1.0, height: gapY }); var bottomPipe = LK.getAsset('obstacle', { anchorX: 0.5, anchorY: 0.0, y: gapY + gapHeight, height: 2732 - (gapY + gapHeight) }); self.addChild(topPipe); self.addChild(bottomPipe); }; }); // Pelican class var Pelican = Container.expand(function () { var self = Container.call(this); var pelicanGraphics = self.attachAsset('pelicanSVG', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 0; self.update = function () { self.speed += 0.5; // Gravity effect self.y += self.speed; if (self.y < 0) { self.y = 0; } if (self.y > 2732) { LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); } }; self.dive = function () { self.speed = 10; // Increase speed for diving }; self.fly = function () { self.speed = -15; // Increase upward speed for flying }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87CEEB }); /**** * Game Code ****/ game.pipesPassed = 0; game.jetsAppear = false; // Forest green color // No start screen, game begins immediately // Forest green color for pipes // Forest green color for pipes // Add a light blue layer at the bottom 20% of the screen var bottomLayer = LK.getAsset('ocean', { width: 2048, height: 2732 * 0.2, color: 0xADD8E6, // Light blue color // Bright pink color anchorX: 0.5, anchorY: 0.0 }); bottomLayer.x = 2048 / 2; bottomLayer.y = 2732 * 0.8; game.addChild(bottomLayer); var scoreTxt = new Text2('0', { size: 150, fill: "#ffffff" }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); var pelican = game.addChild(new Pelican()); var fish = game.addChild(new Fish()); fish.x = 1024; // Start in the middle of the screen fish.y = 2732 * 0.9; // Position in the bottom layer pelican.speed = 0; // Initial speed pelican.x = 500; pelican.y = 1366; var obstacles = []; game.update = function () { if (LK.ticks % 400 == 0 && !game.jetsAppear) { var newObstacle = new Obstacle(); newObstacle.x = 2048; var gapY = Math.random() * (2000 - 600); // Random gap position var pelicanHeight = LK.getAsset('pelican', {}).height; var maxGapHeight = pelicanHeight * 10; var initialGapHeight = 2000 * 0.2; var minGapHeight = initialGapHeight / 2; var gapHeight = Math.max(minGapHeight, Math.min(initialGapHeight, maxGapHeight) - LK.getScore() * 0.1); // Decrease gapHeight over time but not less than half its initial size newObstacle.createPipe(gapY, gapHeight); obstacles.push(newObstacle); game.addChild(newObstacle); game.pipesPassed++; if (game.pipesPassed % 8 == 0) { game.jetsAppear = true; game.jetsTimer = 0; } } for (var i = obstacles.length - 1; i >= 0; i--) { if (obstacles[i].x < -50) { obstacles[i].destroy(); obstacles.splice(i, 1); LK.setScore(LK.getScore() + 1); // Add 1 point to the score scoreTxt.setText(LK.getScore()); // Update the score text } if (pelican.intersects(obstacles[i])) { LK.effects.flashScreen(0xff0000, 1000); LK.stopMusic(); LK.getSound('arcadefail').play(); LK.showGameOver(); } fish.update(); if (pelican.intersects(fish)) { fish.destroy(); fish = game.addChild(new Fish()); fish.x = 1024; // Reset fish position fish.y = 2732 * 0.9; LK.setScore(LK.getScore() + 10); // Add 10 points to the score scoreTxt.setText(LK.getScore()); // Update the score text LK.getSound('specialscore1').play(); // Play the sound Special Score 1 // Create and display the "YUM" text var yumText = new Text2('YUM', { size: 150, fill: "#ffffff" }); yumText.anchor.set(0.5, 0); yumText.x = pelican.x; yumText.y = pelican.y; yumText.alpha = 1; yumText.update = function () { this.y -= 2; // Move the text upwards this.alpha -= 0.02; // Fade out the text if (this.alpha <= 0) { this.destroy(); } }; game.addChild(yumText); // Create and display the "+10" text var plusTenText = new Text2('+10', { size: 150, fill: "#ffffff" }); plusTenText.anchor.set(0.5, 0); plusTenText.x = pelican.x; plusTenText.y = pelican.y - 200; // Position it above the "YUM" text plusTenText.alpha = 1; plusTenText.update = function () { this.y -= 2; // Move the text upwards this.alpha -= 0.02; // Fade out the text if (this.alpha <= 0) { this.destroy(); } }; game.addChild(plusTenText); } // Add the jet to the game if (game.jetsAppear) { game.jetsTimer++; if (game.jetsTimer >= 300) { // 5 seconds have passed game.jetsAppear = false; } else if (LK.ticks % 60 == 0) { // Every second if (game.jetsTimer == 0) { // When the first jet appears // Play the alert sound LK.getSound('alert').play(); var crowsText = new Text2('CROWS!', { size: 200, fill: "#ffffff" }); crowsText.anchor.set(0.5, 0.5); crowsText.x = 2048 / 2; crowsText.y = 2732 / 2; game.addChild(crowsText); // Remove the "CROWS!" text after 2 seconds LK.setTimeout(function () { crowsText.destroy(); }, 2000); } for (var i = 0; i < 3; i++) { var newJet = new Jet(); newJet.x = 2048 + i * 500; // Start from the right side of the screen and spread out the jets newJet.y = Math.random() * 2732; // Random y position game.addChild(newJet); } } } // Check for collision with the jet for (var i = game.children.length - 1; i >= 0; i--) { if (game.children[i] instanceof Jet && pelican.intersects(game.children[i])) { LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); } } // Increment score for every two seconds the pelican stays alive if (LK.ticks % 120 == 0) { LK.setScore(LK.getScore() + 1); scoreTxt.setText(LK.getScore()); } } }; game.down = function (x, y, obj) { pelican.fly(); LK.getSound('flap').play(); // Create and display the "FLAP" image var flapImage = LK.getAsset('flapImage', { anchorX: 0.5, anchorY: 0.5 }); flapImage.x = pelican.x; flapImage.y = pelican.y; flapImage.alpha = 1; flapImage.update = function () { this.alpha -= 0.30; // Fade out the image if (this.alpha <= 0) { this.destroy(); pelican.visible = true; // Make the pelican visible again } }; game.addChild(flapImage); pelican.visible = false; // Hide the pelican when the flap image is on screen }; game.up = function (x, y, obj) { // No action needed on mouse up }; // Start the music when the game begins LK.playMusic('soundtrack', { volume: 0.3 });
===================================================================
--- original.js
+++ change.js
@@ -273,9 +273,9 @@
flapImage.x = pelican.x;
flapImage.y = pelican.y;
flapImage.alpha = 1;
flapImage.update = function () {
- this.alpha = 1; // Keep the image fully visible
+ this.alpha -= 0.30; // Fade out the image
if (this.alpha <= 0) {
this.destroy();
pelican.visible = true; // Make the pelican visible again
}
8-bit profile of pelican flying straight. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
8-bit profile of fish for arcade game. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
8-bit profile of pelican flapping it's wings downward. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
8-bit silhouette of tugboat. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
8-bit "YUM" dialog bubble. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.