User prompt
arka planı iptal et
User prompt
arka plan rengi koyu gri olsun
User prompt
arka plan ekle
User prompt
kırmızı engel varlığı ekle (büyük, kırmızı kutu)
User prompt
1 tane daha varlık ekle engel olsun
User prompt
iptal et kırmızı engeli
User prompt
kırmızı renkli engel ekle
User prompt
farklı bi engel daha ekle rengi kırmızı olsun ve boyutu daha büyük olsun
User prompt
az önceki komutu iptal et
User prompt
1 tane daha farklı engel ekle bu daha büyük olsun ama ara sıra çıksın
User prompt
yanlara çizgi ekle
User prompt
oyun motoru arablar başta yavaş ve az gelsin puan artıkça hızlansın ve çoğalsın
User prompt
yanlara şerit ekle
User prompt
farklı bi engel daha ekle bu biraz daha büyük olsun ve ara sıra gelsin rengide siyah olsun
User prompt
farklı bi engel daha koy rengi mor olsun
User prompt
engellerin boyutları aynı olsun
User prompt
bu engeller farklı boyutlarda yapabilrmisin
Code edit (1 edits merged)
Please save this source code
User prompt
Infinite Road Racer
Initial prompt
bana bi oyun yap araba sonsuzluğa gitsin sağ sol yapsın ve karşıdan rastgele engller çıksın
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Car class var Car = Container.expand(function () { var self = Container.call(this); var carSprite = self.attachAsset('car', { anchorX: 0.5, anchorY: 0.5 }); self.width = carSprite.width; self.height = carSprite.height; return self; }); // Obstacle class var Obstacle = Container.expand(function () { var self = Container.call(this); var obsSprite = self.attachAsset('obstacle', { anchorX: 0.5, anchorY: 0.5 }); // Set fixed size for all obstacles obsSprite.width = 200; obsSprite.height = 200; self.width = obsSprite.width; self.height = obsSprite.height; self.speed = 22; // pixels per frame, can be increased for difficulty self.update = function () { self.y += self.speed; }; return self; }); // ObstaclePurple class var ObstaclePurple = Container.expand(function () { var self = Container.call(this); var obsSprite = self.attachAsset('obstaclePurple', { anchorX: 0.5, anchorY: 0.5 }); obsSprite.width = 200; obsSprite.height = 200; self.width = obsSprite.width; self.height = obsSprite.height; self.speed = 22; self.update = function () { self.y += self.speed; }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x222222 }); /**** * Game Code ****/ // Road lane asset: gray box, 2048x2732 (background, not used as a background, but for lane lines) // Obstacle asset: red box, 200x200 // Car asset: blue box, 200x350 // Game area: 2048x2732 // Road width: 1200px, centered var ROAD_WIDTH = 1200; var ROAD_LEFT = (2048 - ROAD_WIDTH) / 2; var ROAD_RIGHT = ROAD_LEFT + ROAD_WIDTH; var CAR_Y = 2732 - 500; // Car vertical position // Draw lane lines (visual only) var laneLines = []; for (var i = 1; i < 4; i++) { var laneX = ROAD_LEFT + ROAD_WIDTH / 4 * i; for (var j = 0; j < 6; j++) { var line = LK.getAsset('laneLine', { anchorX: 0.5, anchorY: 0.5, x: laneX, y: j * 500 + 200, alpha: 0.25 }); game.addChild(line); laneLines.push(line); } } // Car var car = new Car(); car.x = 2048 / 2; car.y = CAR_Y; game.addChild(car); // Obstacles var obstacles = []; // Score var score = 0; var scoreTxt = new Text2('0', { size: 120, fill: "#fff" }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // Touch controls var dragX = null; var dragStartCarX = null; // Move handler function handleMove(x, y, obj) { if (dragX !== null) { // Clamp to road var dx = x - dragX; var newCarX = dragStartCarX + dx; if (newCarX < ROAD_LEFT + car.width / 2) newCarX = ROAD_LEFT + car.width / 2; if (newCarX > ROAD_RIGHT - car.width / 2) newCarX = ROAD_RIGHT - car.width / 2; car.x = newCarX; } // Check collision for (var i = 0; i < obstacles.length; i++) { if (car.intersects(obstacles[i])) { LK.effects.flashScreen(0xff0000, 800); LK.showGameOver(); return; } } } // Touch down game.down = function (x, y, obj) { // Only allow drag if touch is on car or below if (y > car.y - car.height / 2 - 100) { dragX = x; dragStartCarX = car.x; handleMove(x, y, obj); } }; // Touch up game.up = function (x, y, obj) { dragX = null; dragStartCarX = null; }; // Move game.move = handleMove; // Main update game.update = function () { // Animate lane lines for road movement for (var i = 0; i < laneLines.length; i++) { laneLines[i].y += 22; if (laneLines[i].y > 2732 + 100) { laneLines[i].y -= 2732 + 400; } } // Obstacles update for (var i = obstacles.length - 1; i >= 0; i--) { var obs = obstacles[i]; obs.update(); if (obs.y - obs.height / 2 > 2732 + 100) { // Passed, remove and score obs.destroy(); obstacles.splice(i, 1); score += 1; scoreTxt.setText(score); } else if (car.intersects(obs)) { LK.effects.flashScreen(0xff0000, 800); LK.showGameOver(); return; } } // Spawn new obstacles if (LK.ticks % 32 === 0) { // Random lane: 4 lanes var lane = Math.floor(Math.random() * 4); var laneCenter = ROAD_LEFT + ROAD_WIDTH / 8 + lane * (ROAD_WIDTH / 4); // 50% chance for purple obstacle, 50% for red var obs; if (Math.random() < 0.5) { obs = new Obstacle(); } else { obs = new ObstaclePurple(); } obs.x = laneCenter; obs.y = -obs.height / 2; game.addChild(obs); obstacles.push(obs); } };
===================================================================
--- original.js
+++ change.js
@@ -34,8 +34,25 @@
self.y += self.speed;
};
return self;
});
+// ObstaclePurple class
+var ObstaclePurple = Container.expand(function () {
+ var self = Container.call(this);
+ var obsSprite = self.attachAsset('obstaclePurple', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ obsSprite.width = 200;
+ obsSprite.height = 200;
+ self.width = obsSprite.width;
+ self.height = obsSprite.height;
+ self.speed = 22;
+ self.update = function () {
+ self.y += self.speed;
+ };
+ return self;
+});
/****
* Initialize Game
****/
@@ -153,9 +170,15 @@
if (LK.ticks % 32 === 0) {
// Random lane: 4 lanes
var lane = Math.floor(Math.random() * 4);
var laneCenter = ROAD_LEFT + ROAD_WIDTH / 8 + lane * (ROAD_WIDTH / 4);
- var obs = new Obstacle();
+ // 50% chance for purple obstacle, 50% for red
+ var obs;
+ if (Math.random() < 0.5) {
+ obs = new Obstacle();
+ } else {
+ obs = new ObstaclePurple();
+ }
obs.x = laneCenter;
obs.y = -obs.height / 2;
game.addChild(obs);
obstacles.push(obs);
üstten görünümlü araba. In-Game asset. 2d. High contrast. No shadows
üstten görünümlü araba yap. In-Game asset. 2d. High contrast. No shadows
üstten görünümlü polis arabası çiz. In-Game asset. 2d. High contrast. No shadows
beyaz dikey trafik şeridi. In-Game asset. 2d. High contrast. No shadows