User prompt
Make a good and realistic graphic game but good
User prompt
Make a realistic bike driving game ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Create a game like a free city and our character a man can explore the full city and drive every vehicle and trains in the game
User prompt
Create a game like minecraft
Code edit (1 edits merged)
Please save this source code
User prompt
Bubble Pop Frenzy
Initial prompt
Make a game
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var Bike = Container.expand(function () {
var self = Container.call(this);
var bikeGraphics = self.attachAsset('bike', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 0;
self.maxSpeed = 15;
self.acceleration = 0.3;
self.deceleration = 0.2;
self.turnSpeed = 3;
self.angle = 0;
self.isAccelerating = false;
self.isBraking = false;
self.lastY = self.y;
self.lastSpeed = self.speed;
return self;
});
var PowerUp = Container.expand(function (type, x, y) {
var self = Container.call(this);
self.powerType = type || 'speed';
self.lastIntersecting = false;
self.collected = false;
var powerupGraphics = self.attachAsset('powerup', {
anchorX: 0.5,
anchorY: 0.5
});
self.x = x;
self.y = y;
return self;
});
var RoadObstacle = Container.expand(function (type, x, y) {
var self = Container.call(this);
self.obstacleType = type || 'obstacle';
self.lastIntersecting = false;
var assetName = type === 'powerup' ? 'powerup' : 'obstacle';
var obstacleGraphics = self.attachAsset(assetName, {
anchorX: 0.5,
anchorY: 0.5
});
self.x = x;
self.y = y;
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x228b22
});
/****
* Game Code
****/
var obstacles = [];
var powerups = [];
var roadElements = [];
var raceDistance = 0;
var targetDistance = 10000;
var gameSpeed = 2;
var isGameRunning = true;
// Bike
var bike = new Bike();
bike.x = 1024;
bike.y = 2200;
game.addChild(bike);
// UI Elements
var speedText = new Text2('0 KM/H', {
size: 40,
fill: 0xFFFFFF
});
speedText.anchor.set(0, 0);
speedText.x = 50;
speedText.y = 50;
LK.gui.topLeft.addChild(speedText);
var distanceText = new Text2('DISTANCE: 0M', {
size: 35,
fill: 0xFFFFFF
});
distanceText.anchor.set(0.5, 0);
LK.gui.top.addChild(distanceText);
var controlText = new Text2('TAP TO ACCELERATE', {
size: 30,
fill: 0xFFFFFF
});
controlText.anchor.set(0.5, 1);
controlText.y = -20;
LK.gui.bottom.addChild(controlText);
// Initialize racing track
function generateTrack() {
// Create road segments
for (var i = 0; i < 30; i++) {
var roadSegment = LK.getAsset('road', {
anchorX: 0.5,
anchorY: 0.5
});
roadSegment.x = 1024;
roadSegment.y = -200 - i * 150;
roadElements.push(roadSegment);
game.addChild(roadSegment);
}
// Spawn initial obstacles and powerups
spawnObstacles();
}
function spawnObstacles() {
// Spawn obstacles
for (var i = 0; i < 15; i++) {
var obstacle = new RoadObstacle('obstacle');
obstacle.x = 700 + Math.random() * 648; // Keep on road
obstacle.y = -500 - i * 300;
obstacles.push(obstacle);
game.addChild(obstacle);
}
// Spawn powerups
for (var i = 0; i < 5; i++) {
var powerup = new PowerUp('speed');
powerup.x = 700 + Math.random() * 648;
powerup.y = -800 - i * 800;
powerups.push(powerup);
game.addChild(powerup);
}
}
function updateBikePhysics() {
// Handle acceleration and deceleration
if (bike.isAccelerating) {
bike.speed = Math.min(bike.speed + bike.acceleration, bike.maxSpeed);
} else {
bike.speed = Math.max(bike.speed - bike.deceleration, 0);
}
// Update speedometer with smooth tween
var displaySpeed = Math.round(bike.speed * 10);
speedText.setText(displaySpeed + ' KM/H');
// Apply engine sound based on speed
if (bike.speed > 0) {
LK.getSound('bikeEngine').play();
}
}
function spawnNewObstacles() {
// Spawn new obstacles ahead of the bike
if (Math.random() < 0.3) {
var obstacle = new RoadObstacle('obstacle');
obstacle.x = 700 + Math.random() * 648;
obstacle.y = -100;
obstacles.push(obstacle);
game.addChild(obstacle);
}
// Spawn powerups occasionally
if (Math.random() < 0.1) {
var powerup = new PowerUp('speed');
powerup.x = 700 + Math.random() * 648;
powerup.y = -100;
powerups.push(powerup);
game.addChild(powerup);
}
}
function checkCollisions() {
// Check obstacle collisions
for (var i = obstacles.length - 1; i >= 0; i--) {
var obstacle = obstacles[i];
var currentIntersecting = bike.intersects(obstacle);
if (!obstacle.lastIntersecting && currentIntersecting) {
// Collision detected - crash bike
LK.getSound('crash').play();
tween(bike, {
speed: 0
}, {
duration: 500,
easing: tween.easeOut
});
LK.effects.flashScreen(0xff0000, 500);
bike.speed = 0;
}
obstacle.lastIntersecting = currentIntersecting;
}
// Check powerup collection
for (var i = powerups.length - 1; i >= 0; i--) {
var powerup = powerups[i];
var currentIntersecting = bike.intersects(powerup);
if (!powerup.lastIntersecting && currentIntersecting && !powerup.collected) {
// Powerup collected
powerup.collected = true;
LK.getSound('powerup').play();
bike.maxSpeed += 3;
tween(powerup, {
alpha: 0,
scaleX: 2,
scaleY: 2
}, {
duration: 300,
onFinish: function onFinish() {
powerup.destroy();
powerups.splice(i, 1);
}
});
LK.setScore(LK.getScore() + 50);
}
powerup.lastIntersecting = currentIntersecting;
}
}
generateTrack();
game.down = function (x, y, obj) {
// Start accelerating
bike.isAccelerating = true;
};
game.up = function (x, y, obj) {
// Stop accelerating
bike.isAccelerating = false;
};
game.move = function (x, y, obj) {
// Steer bike left and right
var deltaX = x - bike.x;
if (Math.abs(deltaX) > 20) {
bike.x += deltaX * 0.05;
// Keep bike on track
bike.x = Math.max(700, Math.min(1348, bike.x));
}
};
game.update = function () {
if (!isGameRunning) return;
// Update bike physics
updateBikePhysics();
// Move world elements down based on bike speed
var worldSpeed = gameSpeed + bike.speed * 0.5;
// Move road segments
for (var i = 0; i < roadElements.length; i++) {
var road = roadElements[i];
road.y += worldSpeed;
if (road.y > 2832) {
road.y = roadElements[(i - 1 + roadElements.length) % roadElements.length].y - 150;
}
}
// Move obstacles
for (var i = obstacles.length - 1; i >= 0; i--) {
var obstacle = obstacles[i];
obstacle.y += worldSpeed;
if (obstacle.y > 2832) {
obstacle.destroy();
obstacles.splice(i, 1);
}
}
// Move powerups
for (var i = powerups.length - 1; i >= 0; i--) {
var powerup = powerups[i];
powerup.y += worldSpeed;
if (powerup.y > 2832) {
powerup.destroy();
powerups.splice(i, 1);
}
}
// Update race progress
raceDistance += worldSpeed * 0.1;
distanceText.setText('DISTANCE: ' + Math.round(raceDistance) + 'M');
// Check win condition
if (raceDistance >= targetDistance) {
isGameRunning = false;
LK.showYouWin();
}
// Spawn new obstacles and powerups
if (LK.ticks % 60 === 0) {
spawnNewObstacles();
}
// Check collisions
checkCollisions();
// Keep bike in racing bounds
bike.x = Math.max(700, Math.min(1348, bike.x));
}; ===================================================================
--- original.js
+++ change.js