User prompt
Migrate to the latest version of LK
Code edit (7 edits merged)
Please save this source code
User prompt
freely create a particle effect and attach it to the dinosaur
User prompt
particles life is 3 seconds maximum
User prompt
put particle on the top layer
User prompt
create an particle effect on dinosaur
User prompt
make sure only one floor is active at a time
User prompt
fix it so it doesnt do that
Code edit (1 edits merged)
Please save this source code
User prompt
make sure when the game starts there are 0 clouds on screen
User prompt
make sure the clouds spawn outside of the playspace
User prompt
put the two grounds on different layers
Code edit (3 edits merged)
Please save this source code
User prompt
vary the amount of floors that spawn sometimes one, sometimes two and make sure they dont clog together
User prompt
var message should be bigger and darker
Code edit (1 edits merged)
Please save this source code
/****
* Classes
****/
var Background = Container.expand(function () {
var self = Container.call(this);
self.attachAsset('background', {
width: 2048,
height: 2732,
anchorX: 0,
anchorY: 0
});
self.move = function () {
self.x -= game.speed;
if (self.x <= -2048) {
self.x = 0;
}
};
});
var Cactus = Container.expand(function () {
var self = Container.call(this);
var cactusGraphics = self.attachAsset('cactus', {
anchorX: 0.5,
anchorY: 1.0,
scaleX: 1 + Math.random() * 0.2,
scaleY: 1 + Math.random() * 0.2
});
self.move = function () {
if (LK.ticks % 600 == 0) {
game.speed *= 1.1;
}
self.x -= game.speed * 2;
if (LK.ticks % 60 == 0) {
self.scale.x *= -1;
}
};
});
var Cloud = Container.expand(function () {
var self = Container.call(this);
self.attachAsset('cloud', {
anchorX: 0.5,
anchorY: 0.6
});
self.move = function () {
self.x -= game.speed;
};
});
var Collectible = Container.expand(function () {
var self = Container.call(this);
self.attachAsset('collectible', {
anchorX: 0.5,
anchorY: 0.5
});
self.move = function () {
self.x -= game.speed;
if (self.x < -100) {
self.destroy();
game.collectibles = [];
}
};
});
var Dinosaur = Container.expand(function () {
var self = Container.call(this);
var dinosaurGraphics = self.attachAsset('dinosaur', {
anchorX: 1.0,
anchorY: 1.0
});
self.isJumping = false;
self.jumpSpeed = 0;
self.gravity = 0.6;
self.jump = function () {
if (!self.isJumping && self.y >= game.floorLevel) {
self.isJumping = true;
self.jumpSpeed = -30;
}
};
self.update = function () {
if (self.isJumping) {
self.y += self.jumpSpeed;
self.jumpSpeed += self.gravity;
}
if (self.y > game.floorLevel) {
self.y = game.floorLevel;
self.isJumping = false;
}
if (LK.ticks % 18 == 0) {
self.scale.x *= self.scale.x > 1 ? 0.95 : 1.05;
self.scale.y *= self.scale.y > 1 ? 0.95 : 1.05;
}
};
});
var Floor = Container.expand(function () {
var self = Container.call(this);
self.attachAsset('Floor', {
anchorX: 0.5,
anchorY: 5.5
});
console.log("Floor instance created");
// Adjust the initial x-coordinate to be outside the playspace
self.x = 2048;
self.y = 2048;
self.move = function () {
console.log("Floor move method called");
self.x -= game.speed;
// Reposition the floor instance when it moves out of view
if (self.x + self.width <= 0) {
self.x = 2048; // Assuming the width of the playspace is 2048
}
};
});
var Ground = Container.expand(function () {
var self = Container.call(this);
self.attachAsset('ground', {
anchorX: 0,
anchorY: -0.9
});
self.move = function () {
self.x -= game.speed * 2; // Increase ground speed
if (self.x <= -1750) {
self.x = 0; // Adjusted to reset position sooner for seamless repetition
}
};
});
var NightBackground = Container.expand(function () {
var self = Container.call(this);
self.attachAsset('nightBackground', {
width: 2048,
height: 2732,
anchorX: 0,
anchorY: 0
});
self.move = function () {
self.x -= game.speed;
if (self.x <= -2048) {
self.x = 0;
}
};
});
var Pterodactyl = Container.expand(function () {
var self = Container.call(this);
var pterodactylGraphics = self.attachAsset('pterodactyl', {
anchorX: 0.5,
anchorY: 0.5
});
self.move = function () {
if (LK.ticks % 600 == 0) {
game.speed *= 1.1;
}
self.x -= game.speed * 2;
self.y += Math.sin(LK.ticks / 10) * 5;
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87ceeb
});
/****
* Game Code
****/
game.collectibles = [];
var floorWidth = 2048; // Assuming each floor asset covers 2048px in width
var numberOfFloors = Math.ceil(2048 / floorWidth); // Calculate the number of floor instances needed to cover the playspace
for (var i = 0; i < numberOfFloors; i++) {
var floor = game.addChild(new Floor());
floor.x = (2048 - floor.width) / 2 + i * floorWidth; // Center the floor horizontally and position each floor instance next to each other
floor.y = 2732 - floor.height; // Align the floor with the bottom of the screen
floor.visible = true;
game.setChildIndex(floor, game.children.length - 1);
}
var title = LK.gui.top.addChild(LK.getAsset('title', {
anchorX: 0,
anchorY: 0,
x: -500,
y: 0
}));
var background1 = game.addChildAt(new Background(), 0);
var nightBackground1 = game.addChildAt(new NightBackground(), 0);
nightBackground1.visible = false;
game.setChildIndex(background1, 0);
game.setChildIndex(nightBackground1, 0);
var scoreTxt = new Text2(LK.getScore().toString(), {
size: 150,
fill: '#ffffff'
});
scoreTxt.anchor.set(0.5, 0.5);
LK.gui.center.addChild(scoreTxt);
var ground1 = game.addChild(new Ground());
ground1.y = 2732 - ground1.height; // Align with the bottom of the playspace
var ground2 = game.addChild(new Ground());
ground2.x = ground1.width;
ground2.y = 2732 - ground2.height; // Align with the bottom of the playspace
game.speed = 5;
game.floorLevel = 2732 - 200; // Dinosaur stands on the floor
game.score = 0;
game.obstacles = [];
var dinosaur = game.addChild(new Dinosaur());
dinosaur.x = 300;
dinosaur.y = game.floorLevel;
game.on('down', function () {
dinosaur.jump();
});
LK.on('tick', function () {
if (LK.ticks % 2700 == 0) {
background1.visible = !background1.visible;
nightBackground1.visible = !nightBackground1.visible;
}
if (LK.ticks % 2700 == 1350) {
background1.visible = !background1.visible;
nightBackground1.visible = !nightBackground1.visible;
}
dinosaur.update();
if (LK.ticks % 60 == 0) {
game.score += 1;
}
scoreTxt.setText(LK.getScore().toString());
LK.setScore(Math.floor(game.score)); // Update the score display
// Move the ground and background
floor.move();
ground1.move();
ground2.move();
// Handle obstacles
if (game.collectibles.length == 0 && LK.ticks % 420 == 0) {
// Add a new collectible every 7 to 14 seconds
var collectible = new Collectible();
collectible.y = game.floorLevel - Math.random() * 500 - 300; // Random height for collectible
collectible.x = 2048;
game.collectibles.push(collectible);
game.addChild(collectible);
}
if (game.score >= 200 ? LK.ticks % 60 == 0 : game.score >= 100 ? LK.ticks % 102 == 0 : LK.ticks % 120 == 0) {
// Add a new obstacle every 1.7 seconds
var obstacle;
if (Math.random() < 0.5) {
obstacle = new Cactus();
obstacle.y = game.floorLevel;
} else {
obstacle = new Pterodactyl();
obstacle.y = game.floorLevel - Math.random() * 300 - 300; // Random height for pterodactyl
}
obstacle.x = 2048;
game.obstacles.push(obstacle);
game.addChild(obstacle);
// Add a 10% chance to spawn two pterodactyls rather than one
if (Math.random() < 0.1) {
var secondObstacle = new Pterodactyl();
secondObstacle.y = game.floorLevel - Math.random() * 300 - 300; // Random height for second pterodactyl
secondObstacle.x = 2048;
game.obstacles.push(secondObstacle);
game.addChild(secondObstacle);
}
}
if (LK.ticks % 600 == 0) {
// Add a new cloud every 10 seconds
var cloud = new Cloud();
cloud.y = title.height + 50; // Position cloud under the title
cloud.x = 2048 / 2;
game.addChild(cloud);
}
for (var i = game.collectibles.length - 1; i >= 0; i--) {
game.collectibles[i].move();
if (dinosaur.intersects(game.collectibles[i])) {
// Destroy the collectible and add +10 to the score when dinosaur collides with it
game.collectibles[i].destroy();
game.collectibles = [];
game.score += 10;
// Randomly select one of the six messages
var messages = ["Gathering data like a pro and outrunning the chaos!", "Dodging glitches, snatching data!", "Swifter than a byte, slicker than code!", "My endless run never stops, one byte at a time!", "I'm the endless runner of information!", "I make data collection look easy!"];
var message = messages[Math.floor(Math.random() * messages.length)];
// Show the message at the bottom center of the screen for 3 seconds before fading out
var messageTxt = new Text2(message, {
size: 50,
fill: '#A9A9A9',
// Dark gray color
font: 'bold' // Bold text
});
messageTxt.anchor.set(0.5, 1);
LK.gui.bottom.addChild(messageTxt);
// Fade out the message after 3 seconds
LK.setTimeout(function () {
var fadeOutInterval = LK.setInterval(function () {
messageTxt.alpha -= 0.02;
if (messageTxt.alpha <= 0) {
LK.clearInterval(fadeOutInterval);
messageTxt.destroy();
}
}, 50);
}, 3000);
}
if (game.collectibles[i] && game.collectibles[i].x < -100) {
// Remove off-screen collectibles
game.collectibles[i].destroy();
game.collectibles.splice(i, 1);
}
}
for (var i = game.obstacles.length - 1; i >= 0; i--) {
game.obstacles[i].move();
if (dinosaur.intersects(game.obstacles[i])) {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
}
if (game.obstacles[i].x < -100) {
// Remove off-screen obstacles
game.obstacles[i].destroy();
game.obstacles.splice(i, 1);
}
}
});
pixel art pterodactyl flying. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
pixel art cactus. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
pixel art desert ground sand. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
pixel art desert. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
pixel art clouds. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
pixel art night-time desert. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
pixel art of a microchip no shadows. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
pixel art of a title screen logo with "GPT DASH" written on it, no shadows. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
pixel art of a chat gpt robot running with gpt engraved on his chest and a smiley face on his robot visor. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
pixel art tiling of a desert sandy ground.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
pixel art particles. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.