User prompt
Oyun sonu skorunu 1000 indir
User prompt
Oyun sonu skorunu 10000 e yükselt
User prompt
Oyunun sonuna ne kadar kaldığını gösteren bir metin ekle ve distanceni kaldır
User prompt
Skor tablosu 3000 e ulaştıkda oyun sona ulaşsın ve bir kazanma ekranı ekle
User prompt
Engellerin spawnlanma sayını 30% oranında azalt
User prompt
Coin sayacı olsun her coin topladığında +1 olsun
User prompt
Coinlerle engeller arasında mesafe olsun
User prompt
Oyun yeniden başladığında müzik de en başdan başlasın
Code edit (1 edits merged)
Please save this source code
User prompt
Arka planda müzik çalsın
User prompt
Skor tablosu biraz daha yavaş olsun
User prompt
Kenardakı yeşil ekranı kırp
User prompt
Skor tablosu daha yavaş irellesin
User prompt
Engele çarptıkda patlama effekti oluşsun ↪💡 Consider importing and using the following plugins: @upit/tween.v1
Code edit (1 edits merged)
Please save this source code
User prompt
Oyun git gidehızlansın
User prompt
Yeşil ekran yerine asfalt olsun
User prompt
Araba yoldan kenara çıkmasın yanlız yolla gitsin
User prompt
Coinler ve engeller yoldan kenara taşmasın
User prompt
Yol çok daha gerçekçi olsun
User prompt
Yol daha gerçekçi olsun
User prompt
Araba kendi kendine kaymasın
Code edit (1 edits merged)
Please save this source code
User prompt
Road Runner: Obstacle Dodge
Initial prompt
Bana araba oyunu kodla yolda engeller olsun ve sen engele çarptığında oyun bitsin. Coin sistemide olsun oyunda.
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var CenterLine = Container.expand(function () {
var self = Container.call(this);
var centerGraphics = self.attachAsset('centerLine', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 8;
self.update = function () {
self.y += self.speed;
};
return self;
});
var Coin = Container.expand(function () {
var self = Container.call(this);
var coinGraphics = self.attachAsset('coin', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 8;
self.update = function () {
self.y += self.speed;
// Add slight rotation for visual effect
coinGraphics.rotation += 0.1;
};
return self;
});
var ObstacleCar = Container.expand(function () {
var self = Container.call(this);
var carGraphics = self.attachAsset('obstacleCar', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 8;
self.update = function () {
self.y += self.speed;
};
return self;
});
var PlayerCar = Container.expand(function () {
var self = Container.call(this);
var carGraphics = self.attachAsset('playerCar', {
anchorX: 0.5,
anchorY: 0.5
});
self.update = function () {
// Keep car within road bounds
if (self.x < 100) {
self.x = 100;
}
if (self.x > 1948) {
self.x = 1948;
}
};
return self;
});
var RoadLine = Container.expand(function () {
var self = Container.call(this);
var lineGraphics = self.attachAsset('roadLine', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 8;
self.update = function () {
self.y += self.speed;
};
return self;
});
var RoadShoulder = Container.expand(function () {
var self = Container.call(this);
var shoulderGraphics = self.attachAsset('roadShoulder', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 8;
self.update = function () {
self.y += self.speed;
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x2c2c2c
});
/****
* Game Code
****/
// Game variables
var playerCar;
var obstacles = [];
var coins = [];
var roadLines = [];
var laneDividers = [];
var roadShoulders = [];
var centerLines = [];
var gameSpeed = 30;
var spawnTimer = 0;
var coinSpawnTimer = 0;
var roadLineSpawnTimer = 0;
var laneDividerSpawnTimer = 0;
var shoulderSpawnTimer = 0;
var centerLineSpawnTimer = 0;
var distanceScore = 0;
var coinScore = 0;
var dragNode = null;
var gameStarted = false;
// Create road background with multiple tiles for seamless scrolling
var roadBackgrounds = [];
for (var i = 0; i < 4; i++) {
var roadBg = game.addChild(LK.getAsset('road', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: i * 400 - 200
}));
roadBackgrounds.push(roadBg);
}
// Create road shoulders (grass areas) on both sides
var leftShoulders = [];
var rightShoulders = [];
for (var i = 0; i < 8; i++) {
// Left shoulder
var leftShoulder = game.addChild(LK.getAsset('roadShoulder', {
anchorX: 0.5,
anchorY: 0.5,
x: 100,
y: i * 400 - 400
}));
leftShoulders.push(leftShoulder);
// Right shoulder
var rightShoulder = game.addChild(LK.getAsset('roadShoulder', {
anchorX: 0.5,
anchorY: 0.5,
x: 1948,
y: i * 400 - 400
}));
rightShoulders.push(rightShoulder);
}
// Create player car
playerCar = game.addChild(new PlayerCar());
playerCar.x = 1024;
playerCar.y = 2400;
// Create UI elements
var scoreText = new Text2('Score: 0', {
size: 60,
fill: 0xFFFFFF
});
scoreText.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreText);
var distanceText = new Text2('Distance: 0m', {
size: 40,
fill: 0xFFFFFF
});
distanceText.anchor.set(0, 0);
distanceText.x = 150;
distanceText.y = 100;
LK.gui.topLeft.addChild(distanceText);
// Touch controls
function handleMove(x, y, obj) {
if (dragNode && gameStarted) {
// Constrain car to road bounds (between 324 and 1724)
var roadLeftBound = 324;
var roadRightBound = 1724;
if (x < roadLeftBound) {
playerCar.x = roadLeftBound;
} else if (x > roadRightBound) {
playerCar.x = roadRightBound;
} else {
playerCar.x = x;
}
}
}
game.move = handleMove;
game.down = function (x, y, obj) {
if (!gameStarted) {
gameStarted = true;
}
dragNode = playerCar;
handleMove(x, y, obj);
};
game.up = function (x, y, obj) {
dragNode = null;
};
// Spawn functions
function spawnObstacle() {
var obstacle = new ObstacleCar();
obstacle.x = Math.random() * 1400 + 324; // Random X position within safe road bounds (324 to 1724)
obstacle.y = -100;
obstacle.speed = gameSpeed;
obstacles.push(obstacle);
game.addChild(obstacle);
}
function spawnCoin() {
var coin = new Coin();
coin.x = Math.random() * 1400 + 324; // Random X position within safe road bounds (324 to 1724)
coin.y = -100;
coin.speed = gameSpeed;
coins.push(coin);
game.addChild(coin);
}
function spawnRoadLine() {
var roadLine = new RoadLine();
roadLine.x = 1024;
roadLine.y = -100;
roadLine.speed = gameSpeed;
roadLines.push(roadLine);
game.addChild(roadLine);
}
function spawnLaneDivider() {
// Create lane dividers for left and right lanes
var leftDivider = game.addChild(LK.getAsset('laneDivider', {
anchorX: 0.5,
anchorY: 0.5,
x: 700,
y: -100
}));
leftDivider.speed = gameSpeed;
laneDividers.push(leftDivider);
var rightDivider = game.addChild(LK.getAsset('laneDivider', {
anchorX: 0.5,
anchorY: 0.5,
x: 1348,
y: -100
}));
rightDivider.speed = gameSpeed;
laneDividers.push(rightDivider);
}
function spawnCenterLine() {
var centerLine = new CenterLine();
centerLine.x = 1024;
centerLine.y = -100;
centerLine.speed = gameSpeed;
centerLines.push(centerLine);
game.addChild(centerLine);
}
// Main game loop
game.update = function () {
if (!gameStarted) {
return;
}
// Update distance score
distanceScore += gameSpeed / 10;
// Increase game speed gradually with acceleration
if (LK.ticks % 300 === 0) {
// Accelerate faster as time goes on
var acceleration = 0.5 + distanceScore / 1000 * 0.2;
gameSpeed += acceleration;
}
// Spawn obstacles more frequently as speed increases
spawnTimer++;
var obstacleSpawnRate = Math.max(20, 60 - gameSpeed * 3);
if (spawnTimer > obstacleSpawnRate) {
spawnObstacle();
spawnTimer = 0;
}
// Spawn coins
coinSpawnTimer++;
if (coinSpawnTimer > 120) {
spawnCoin();
coinSpawnTimer = 0;
}
// Spawn road lines
roadLineSpawnTimer++;
if (roadLineSpawnTimer > 40) {
spawnRoadLine();
roadLineSpawnTimer = 0;
}
// Spawn lane dividers more frequently as speed increases
laneDividerSpawnTimer++;
var laneDividerSpawnRate = Math.max(15, 30 - gameSpeed * 1.5);
if (laneDividerSpawnTimer > laneDividerSpawnRate) {
spawnLaneDivider();
laneDividerSpawnTimer = 0;
}
// Spawn center lines more frequently as speed increases
centerLineSpawnTimer++;
var centerLineSpawnRate = Math.max(12, 25 - gameSpeed * 1.2);
if (centerLineSpawnTimer > centerLineSpawnRate) {
spawnCenterLine();
centerLineSpawnTimer = 0;
}
// Update and check obstacles
for (var i = obstacles.length - 1; i >= 0; i--) {
var obstacle = obstacles[i];
if (obstacle.lastY === undefined) {
obstacle.lastY = obstacle.y;
}
// Remove off-screen obstacles
if (obstacle.lastY < 2800 && obstacle.y >= 2800) {
obstacle.destroy();
obstacles.splice(i, 1);
continue;
}
// Check collision with player
if (obstacle.intersects(playerCar)) {
LK.getSound('crash').play();
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
return;
}
obstacle.lastY = obstacle.y;
}
// Update and check coins
for (var j = coins.length - 1; j >= 0; j--) {
var coin = coins[j];
if (coin.lastY === undefined) {
coin.lastY = coin.y;
}
if (coin.lastCollected === undefined) {
coin.lastCollected = false;
}
// Remove off-screen coins
if (coin.lastY < 2800 && coin.y >= 2800) {
coin.destroy();
coins.splice(j, 1);
continue;
}
// Check collection
var currentCollected = coin.intersects(playerCar);
if (!coin.lastCollected && currentCollected) {
LK.getSound('collectCoin').play();
coinScore += 10;
LK.setScore(Math.floor(distanceScore) + coinScore);
coin.destroy();
coins.splice(j, 1);
continue;
}
coin.lastY = coin.y;
coin.lastCollected = currentCollected;
}
// Update and remove road lines
for (var k = roadLines.length - 1; k >= 0; k--) {
var roadLine = roadLines[k];
if (roadLine.lastY === undefined) {
roadLine.lastY = roadLine.y;
}
if (roadLine.lastY < 2800 && roadLine.y >= 2800) {
roadLine.destroy();
roadLines.splice(k, 1);
continue;
}
roadLine.lastY = roadLine.y;
}
// Update and remove lane dividers
for (var d = laneDividers.length - 1; d >= 0; d--) {
var divider = laneDividers[d];
if (divider.lastY === undefined) {
divider.lastY = divider.y;
}
divider.y += divider.speed;
if (divider.lastY < 2800 && divider.y >= 2800) {
divider.destroy();
laneDividers.splice(d, 1);
continue;
}
divider.lastY = divider.y;
}
// Update and remove center lines
for (var c = centerLines.length - 1; c >= 0; c--) {
var centerLine = centerLines[c];
if (centerLine.lastY === undefined) {
centerLine.lastY = centerLine.y;
}
if (centerLine.lastY < 2800 && centerLine.y >= 2800) {
centerLine.destroy();
centerLines.splice(c, 1);
continue;
}
centerLine.lastY = centerLine.y;
}
// Update UI
scoreText.setText('Score: ' + (Math.floor(distanceScore) + coinScore));
distanceText.setText('Distance: ' + Math.floor(distanceScore) + 'm');
// Scroll road backgrounds for realistic movement
for (var bg = 0; bg < roadBackgrounds.length; bg++) {
roadBackgrounds[bg].y += gameSpeed;
// Reset position when tile moves off screen
if (roadBackgrounds[bg].y > 2932) {
roadBackgrounds[bg].y = roadBackgrounds[bg].y - 4 * 400;
}
}
// Scroll road shoulders for realistic movement
for (var ls = 0; ls < leftShoulders.length; ls++) {
leftShoulders[ls].y += gameSpeed;
if (leftShoulders[ls].y > 2932) {
leftShoulders[ls].y = leftShoulders[ls].y - 8 * 400;
}
}
for (var rs = 0; rs < rightShoulders.length; rs++) {
rightShoulders[rs].y += gameSpeed;
if (rightShoulders[rs].y > 2932) {
rightShoulders[rs].y = rightShoulders[rs].y - 8 * 400;
}
}
// Update speeds for all moving objects
for (var l = 0; l < obstacles.length; l++) {
obstacles[l].speed = gameSpeed;
}
for (var m = 0; m < coins.length; m++) {
coins[m].speed = gameSpeed;
}
for (var n = 0; n < roadLines.length; n++) {
roadLines[n].speed = gameSpeed;
}
for (var d = 0; d < laneDividers.length; d++) {
laneDividers[d].speed = gameSpeed;
}
for (var cl = 0; cl < centerLines.length; cl++) {
centerLines[cl].speed = gameSpeed;
}
}; ===================================================================
--- original.js
+++ change.js
@@ -103,9 +103,9 @@
var roadLines = [];
var laneDividers = [];
var roadShoulders = [];
var centerLines = [];
-var gameSpeed = 8;
+var gameSpeed = 30;
var spawnTimer = 0;
var coinSpawnTimer = 0;
var roadLineSpawnTimer = 0;
var laneDividerSpawnTimer = 0;
@@ -245,9 +245,11 @@
game.addChild(centerLine);
}
// Main game loop
game.update = function () {
- if (!gameStarted) return;
+ if (!gameStarted) {
+ return;
+ }
// Update distance score
distanceScore += gameSpeed / 10;
// Increase game speed gradually with acceleration
if (LK.ticks % 300 === 0) {
@@ -290,9 +292,11 @@
}
// Update and check obstacles
for (var i = obstacles.length - 1; i >= 0; i--) {
var obstacle = obstacles[i];
- if (obstacle.lastY === undefined) obstacle.lastY = obstacle.y;
+ if (obstacle.lastY === undefined) {
+ obstacle.lastY = obstacle.y;
+ }
// Remove off-screen obstacles
if (obstacle.lastY < 2800 && obstacle.y >= 2800) {
obstacle.destroy();
obstacles.splice(i, 1);
@@ -309,10 +313,14 @@
}
// Update and check coins
for (var j = coins.length - 1; j >= 0; j--) {
var coin = coins[j];
- if (coin.lastY === undefined) coin.lastY = coin.y;
- if (coin.lastCollected === undefined) coin.lastCollected = false;
+ if (coin.lastY === undefined) {
+ coin.lastY = coin.y;
+ }
+ if (coin.lastCollected === undefined) {
+ coin.lastCollected = false;
+ }
// Remove off-screen coins
if (coin.lastY < 2800 && coin.y >= 2800) {
coin.destroy();
coins.splice(j, 1);
@@ -333,9 +341,11 @@
}
// Update and remove road lines
for (var k = roadLines.length - 1; k >= 0; k--) {
var roadLine = roadLines[k];
- if (roadLine.lastY === undefined) roadLine.lastY = roadLine.y;
+ if (roadLine.lastY === undefined) {
+ roadLine.lastY = roadLine.y;
+ }
if (roadLine.lastY < 2800 && roadLine.y >= 2800) {
roadLine.destroy();
roadLines.splice(k, 1);
continue;
@@ -344,9 +354,11 @@
}
// Update and remove lane dividers
for (var d = laneDividers.length - 1; d >= 0; d--) {
var divider = laneDividers[d];
- if (divider.lastY === undefined) divider.lastY = divider.y;
+ if (divider.lastY === undefined) {
+ divider.lastY = divider.y;
+ }
divider.y += divider.speed;
if (divider.lastY < 2800 && divider.y >= 2800) {
divider.destroy();
laneDividers.splice(d, 1);
@@ -356,9 +368,11 @@
}
// Update and remove center lines
for (var c = centerLines.length - 1; c >= 0; c--) {
var centerLine = centerLines[c];
- if (centerLine.lastY === undefined) centerLine.lastY = centerLine.y;
+ if (centerLine.lastY === undefined) {
+ centerLine.lastY = centerLine.y;
+ }
if (centerLine.lastY < 2800 && centerLine.y >= 2800) {
centerLine.destroy();
centerLines.splice(c, 1);
continue;
Ford mustang. High contrast. No shadows
Gold coins. In-Game asset. 2d. High contrast. No shadows
Minecraf hardcore heart. In-Game asset. 2d. High contrast. No shadows
Arkadan fotoğraflı araba. In-Game asset. 2d. High contrast. No shadows
İksir. In-Game asset. 2d. High contrast. No shadows
Atom bomb. In-Game asset. 2d. High contrast. No shadows