User prompt
Move all signals closer to each other
User prompt
I mean last task for every green signals...
User prompt
Move signals closer to each other
User prompt
Move signals closer to each other
User prompt
Ensure when the game is starting the player falling from the top of the screen
User prompt
Ensure fee signals already arriving under player when the game is starting
Code edit (1 edits merged)
Please save this source code
User prompt
StockSharks: Market Runner
Initial prompt
'Stocksharks' Endless runner game. The player has to jump on the Stock Market charts that load on the far right of the screen and move to the left. If green vertical signals arrive, they are always higher and higher, loaded in a staggered arrangement, while if red vertical signals arrive, they are placed lower and lower. The player jumps on the top of the green signals, and when touch the red signal, then fall to the bottom of the screen. Also load arriving memecoins from the right side and they count bonus point. At the bottom of the screen, a shark swims horizontally hunting the player.
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1"); /**** * Classes ****/ var Memecoin = Container.expand(function () { var self = Container.call(this); var coinGraphics = self.attachAsset('memecoin', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 6; self.active = true; self.collected = false; self.update = function () { if (!self.active) { return; } self.x -= self.speed; // Rotate coin coinGraphics.rotation += 0.03; // Remove when off screen if (self.x < -100) { self.active = false; } }; return self; }); var Player = Container.expand(function () { var self = Container.call(this); var playerGraphics = self.attachAsset('player', { anchorX: 0.5, anchorY: 0.5 }); self.vx = 0; self.vy = 0; self.gravity = 0.5; self.jumpPower = -15; self.isJumping = false; self.isDead = false; self.jump = function () { if (!self.isJumping && !self.isDead) { self.vy = self.jumpPower; self.isJumping = true; LK.getSound('jump').play(); } }; self.update = function () { if (self.isDead) { return; } // Apply gravity self.vy += self.gravity; // Apply movement self.y += self.vy; // Ground collision detection if (self.y > 2732 - 250) { // Shark zone self.y = 2732 - 250; self.vy = 0; self.isJumping = false; } }; return self; }); var Shark = Container.expand(function () { var self = Container.call(this); var sharkGraphics = self.attachAsset('shark', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 2; self.direction = 1; self.amplitude = 100; self.centerY = 2732 - 100; self.startX = 400; self.time = 0; self.update = function () { self.time += 0.02; // Shark moves in a wavy pattern along the bottom self.x = self.startX + Math.sin(self.time) * self.amplitude; self.y = self.centerY + Math.sin(self.time * 2) * 20; // Flip shark based on direction if (Math.sin(self.time) > 0 && self.direction === -1) { self.direction = 1; sharkGraphics.scale.x = 1; } else if (Math.sin(self.time) < 0 && self.direction === 1) { self.direction = -1; sharkGraphics.scale.x = -1; } }; return self; }); var Signal = Container.expand(function (type) { var self = Container.call(this); self.type = type || 'green'; var assetId = self.type === 'green' ? 'greenSignal' : 'redSignal'; var signalGraphics = self.attachAsset(assetId, { anchorX: 0.5, anchorY: 0.5 }); self.speed = 8; self.active = true; self.update = function () { if (!self.active) { return; } self.x -= self.speed; // Remove when off screen if (self.x < -200) { self.active = false; } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x001F3F }); /**** * Game Code ****/ // Game variables var player; var signals = []; var memecoins = []; var shark; var isGameActive = true; var gameSpeed = 1; var lastSignalTime = 0; var lastCoinTime = 0; var score = 0; var scoreIncrement = 0.1; var distanceTraveled = 0; // UI elements var scoreTxt; var highScoreTxt; // Initialize UI function initUI() { // Score text scoreTxt = new Text2('SCORE: 0', { size: 70, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); scoreTxt.y = 50; // High score text var highScore = storage.highScore || 0; highScoreTxt = new Text2('HIGH SCORE: ' + Math.floor(highScore), { size: 50, fill: 0xFFD700 }); highScoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(highScoreTxt); highScoreTxt.y = 130; } // Initialize game world function initGame() { isGameActive = true; score = 0; distanceTraveled = 0; gameSpeed = 1; // Create player at the top of the screen to make them fall player = new Player(); player.x = 400; player.y = 200; // Position player at the top of the screen game.addChild(player); // Create shark shark = new Shark(); shark.y = 2732 - 100; game.addChild(shark); // Clear signals and coins clearEntities(); // Create initial signals for the player to jump on createInitialSignals(); // Start game music LK.playMusic('gameMusic'); } // Clear all entities function clearEntities() { for (var i = signals.length - 1; i >= 0; i--) { signals[i].destroy(); signals.splice(i, 1); } for (var i = memecoins.length - 1; i >= 0; i--) { memecoins[i].destroy(); memecoins.splice(i, 1); } } // Create initial signals for the player to land on when starting function createInitialSignals() { // Create a few green signals that are already visible when the game starts for (var i = 0; i < 5; i++) { var signal = new Signal('green'); // Position signals at decreasing X positions from right to left signal.x = 2048 - i * 250; // Reduced from 400 to 250 for closer spacing // Create a staggered arrangement going upward signal.y = 1700 - i * 100; signals.push(signal); game.addChild(signal); } // Create a few red signals that are also visible for (var i = 0; i < 3; i++) { var signal = new Signal('red'); // Position red signals at different positions signal.x = 1800 - i * 300; // Reduced from 450 to 300 for closer spacing // Place red signals in a descending pattern signal.y = 1600 + i * 150; signals.push(signal); game.addChild(signal); } // Set the last signal time to now so we don't immediately spawn more lastSignalTime = Date.now(); } // Spawn signals function spawnSignal() { var currentTime = Date.now(); // Spawn signals at intervals if (currentTime - lastSignalTime > 800 / gameSpeed) { // Reduced from 1200 to 800 for closer spacing var type = Math.random() < 0.6 ? 'green' : 'red'; // 60% green, 40% red var signal = new Signal(type); signal.x = 2048 + 150; // Green signals appear higher, red signals lower if (type === 'green') { signal.y = 1300 + Math.random() * 700; } else { signal.y = 1700 + Math.random() * 500; } signals.push(signal); game.addChild(signal); lastSignalTime = currentTime; } } // Spawn memecoins function spawnMemecoin() { var currentTime = Date.now(); // Spawn coins less frequently than signals if (currentTime - lastCoinTime > 3000 / gameSpeed) { var coin = new Memecoin(); coin.x = 2048 + 150; coin.y = 1000 + Math.random() * 1000; // Random height memecoins.push(coin); game.addChild(coin); lastCoinTime = currentTime; } } // Check collisions between player and signals/coins/shark function checkCollisions() { if (!isGameActive) { return; } // Check signal collisions for (var i = 0; i < signals.length; i++) { var signal = signals[i]; if (signal.active && player.intersects(signal)) { // Land on top of the signal if (player.y < signal.y - 20 && player.vy > 0) { player.y = signal.y - 75; player.vy = 0; player.isJumping = false; // If it's a red signal, make it more slippery (player keeps falling) if (signal.type === 'red') { player.vy = 5; player.isJumping = true; } } } } // Check memecoin collisions for (var i = 0; i < memecoins.length; i++) { var coin = memecoins[i]; if (coin.active && !coin.collected && player.intersects(coin)) { // Collect coin coin.collected = true; // Add points score += 50; scoreTxt.setText('SCORE: ' + Math.floor(score)); // Flash coin and remove LK.effects.flashObject(coin, 0xFFFFFF, 300); LK.getSound('coinCollect').play(); tween(coin, { alpha: 0, scaleX: 2, scaleY: 2 }, { duration: 300, onFinish: function onFinish() { coin.active = false; } }); } } // Check shark collision if (player.y > 2732 - 250 && player.intersects(shark)) { // Game over if player touches shark gameOver(); } } // Clean up inactive entities function cleanupEntities() { // Remove inactive signals for (var i = signals.length - 1; i >= 0; i--) { if (!signals[i].active) { signals[i].destroy(); signals.splice(i, 1); } } // Remove inactive coins for (var i = memecoins.length - 1; i >= 0; i--) { if (!memecoins[i].active) { memecoins[i].destroy(); memecoins.splice(i, 1); } } } // Game over function gameOver() { isGameActive = false; player.isDead = true; // Play crash sound LK.getSound('crash').play(); // Flash screen red LK.effects.flashScreen(0xFF0000, 500); // Update high score var highScore = storage.highScore || 0; if (score > highScore) { storage.highScore = score; highScoreTxt.setText('HIGH SCORE: ' + Math.floor(score)); } // Show game over after a short delay LK.setTimeout(function () { LK.showGameOver(); }, 800); } // Input handling game.down = function (x, y, obj) { // Jump when tapping/clicking player.jump(); }; // Main game update loop game.update = function () { if (!isGameActive) { return; } // Update score based on distance distanceTraveled += gameSpeed; score += scoreIncrement * gameSpeed; // Update score display occasionally to avoid text updates every frame if (Math.floor(score) % 5 === 0) { scoreTxt.setText('SCORE: ' + Math.floor(score)); } // Increase game speed gradually gameSpeed = 1 + distanceTraveled / 10000; // Spawn entities spawnSignal(); spawnMemecoin(); // Check collisions checkCollisions(); // Remove inactive entities cleanupEntities(); // Check if player fell off screen if (player.y > 2732 + 200) { gameOver(); } }; // Initialize UI and game initUI(); initGame();
===================================================================
--- original.js
+++ change.js
@@ -102,9 +102,9 @@
var signalGraphics = self.attachAsset(assetId, {
anchorX: 0.5,
anchorY: 0.5
});
- self.speed = 6;
+ self.speed = 8;
self.active = true;
self.update = function () {
if (!self.active) {
return;
@@ -201,9 +201,9 @@
// Create a few green signals that are already visible when the game starts
for (var i = 0; i < 5; i++) {
var signal = new Signal('green');
// Position signals at decreasing X positions from right to left
- signal.x = 2048 - i * 400;
+ signal.x = 2048 - i * 250; // Reduced from 400 to 250 for closer spacing
// Create a staggered arrangement going upward
signal.y = 1700 - i * 100;
signals.push(signal);
game.addChild(signal);
@@ -211,9 +211,9 @@
// Create a few red signals that are also visible
for (var i = 0; i < 3; i++) {
var signal = new Signal('red');
// Position red signals at different positions
- signal.x = 1800 - i * 450;
+ signal.x = 1800 - i * 300; // Reduced from 450 to 300 for closer spacing
// Place red signals in a descending pattern
signal.y = 1600 + i * 150;
signals.push(signal);
game.addChild(signal);
@@ -224,9 +224,10 @@
// Spawn signals
function spawnSignal() {
var currentTime = Date.now();
// Spawn signals at intervals
- if (currentTime - lastSignalTime > 1200 / gameSpeed) {
+ if (currentTime - lastSignalTime > 800 / gameSpeed) {
+ // Reduced from 1200 to 800 for closer spacing
var type = Math.random() < 0.6 ? 'green' : 'red'; // 60% green, 40% red
var signal = new Signal(type);
signal.x = 2048 + 150;
// Green signals appear higher, red signals lower
Grey shark, sideview. In-Game asset. 2d. High contrast. No shadows
Golden Dogecoin
Golden memecoin with sunglasses
shiba inu golden memecoin
Golden memecoin with Pepe
Golden coin with Floki
Golden coin with volt
Golden coin with cute catface
Golden coin with Trump and 'WILL FIX IT' Text
Lightning line. In-Game asset. 2d. High contrast. No shadows