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 = 15; // Increased from 12 to 15 for even faster movement and closer spacing 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 * 120; // Reduced from 180 to 120 for much closer spacing // Create a staggered arrangement going upward signal.y = 1700 - i * 50; // Reduced from 80 to 50 for tighter vertical spacing 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 * 120; // Reduced from 200 to 120 for much closer spacing // Place red signals in a descending pattern signal.y = 1600 + i * 80; // Reduced from 120 to 80 for tighter vertical spacing 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 > 300 / gameSpeed) { // Reduced from 500 to 300 for extremely close 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; } else if (signal.type === 'green') { // Automatically bounce the player upward when landing on green signals player.vy = player.jumpPower * 0.7; // Use 70% of normal jump power for the bounce player.isJumping = true; LK.getSound('jump').play(); } } } } // 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 = 12; // Increased from 8 to 12 for faster movement and closer spacing
+ self.speed = 15; // Increased from 12 to 15 for even faster movement and closer spacing
self.active = true;
self.update = function () {
if (!self.active) {
return;
@@ -201,21 +201,21 @@
// 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 * 180; // Reduced from 250 to 180 for even closer spacing
+ signal.x = 2048 - i * 120; // Reduced from 180 to 120 for much closer spacing
// Create a staggered arrangement going upward
- signal.y = 1700 - i * 80; // Reduced from 100 to 80 for tighter vertical spacing
+ signal.y = 1700 - i * 50; // Reduced from 80 to 50 for tighter vertical spacing
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 * 200; // Reduced from 300 to 200 for closer spacing
+ signal.x = 1800 - i * 120; // Reduced from 200 to 120 for much closer spacing
// Place red signals in a descending pattern
- signal.y = 1600 + i * 120; // Reduced from 150 to 120 for tighter vertical spacing
+ signal.y = 1600 + i * 80; // Reduced from 120 to 80 for tighter vertical spacing
signals.push(signal);
game.addChild(signal);
}
// Set the last signal time to now so we don't immediately spawn more
@@ -224,10 +224,10 @@
// Spawn signals
function spawnSignal() {
var currentTime = Date.now();
// Spawn signals at intervals
- if (currentTime - lastSignalTime > 500 / gameSpeed) {
- // Reduced from 800 to 500 for much closer spacing
+ if (currentTime - lastSignalTime > 300 / gameSpeed) {
+ // Reduced from 500 to 300 for extremely close 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