User prompt
ekrana basılı tuttuğum zaman arabanın hızı artsın bıraktığımda normal hızda gitsin
User prompt
yol çizgileri arabanın ve engellerin altında gözüksün
User prompt
nitroyu kaldır
User prompt
nitroyu yolda toplayalım öyle kullanalım
User prompt
arabanın nitrosu olsun, nitro barı olsun, nitroyu yolda giderken nitroyu kullanmak için ekranı basılı tutalım nitro 5 saniye sürsün sonra bitsin
User prompt
ekrana basılı tuttuğumuz zaman araba hızı artmasın
User prompt
birden çok engel çeşitliliği olsun olsun
User prompt
ekrana basılı tuttuğum zaman arabanın hızı artsın bıraktığımda normal hızda gitsin
Code edit (1 edits merged)
Please save this source code
User prompt
Turbo Track: Araba Yarışı
Initial prompt
araba yarışı oyunu
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Oyuncu arabası var Car = Container.expand(function () { var self = Container.call(this); var carAsset = self.attachAsset('car', { anchorX: 0.5, anchorY: 0.5 }); self.width = carAsset.width; self.height = carAsset.height; // Hareket limiti (ekran dışına çıkmasın) self.minX = self.width / 2 + 40; self.maxX = 2048 - self.width / 2 - 40; // Arabayı verilen x konumuna kaydır self.moveToX = function (targetX) { // Sınırlar içinde tut if (targetX < self.minX) targetX = self.minX; if (targetX > self.maxX) targetX = self.maxX; // Tween ile yumuşak kaydır tween.stop(self, { x: true }); tween(self, { x: targetX }, { duration: 180, easing: tween.cubicOut }); }; return self; }); // Yol çizgisi (dekoratif) var Lane = Container.expand(function () { var self = Container.call(this); var laneAsset = self.attachAsset('lane', { anchorX: 0.5, anchorY: 0.5 }); self.width = laneAsset.width; self.height = laneAsset.height; self.speed = 12; self.update = function () { self.y += self.speed; }; return self; }); var ObstacleBar = Container.expand(function () { var self = Container.call(this); var obsAsset = self.attachAsset('obstacle_bar', { anchorX: 0.5, anchorY: 0.5 }); self.width = obsAsset.width; self.height = obsAsset.height; self.type = "bar"; self.speed = 12; self.update = function () { self.y += self.speed; }; return self; }); // Kırmızı kutu engel (klasik) var ObstacleBox = Container.expand(function () { var self = Container.call(this); var obsAsset = self.attachAsset('obstacle', { anchorX: 0.5, anchorY: 0.5 }); self.width = obsAsset.width; self.height = obsAsset.height; self.type = "box"; self.speed = 12; self.update = function () { self.y += self.speed; }; return self; }); // Daire engel (yuvarlak, farklı renk) var ObstacleCircle = Container.expand(function () { var self = Container.call(this); var obsAsset = self.attachAsset('obstacle_circle', { anchorX: 0.5, anchorY: 0.5 }); self.width = obsAsset.width; self.height = obsAsset.height; self.type = "circle"; self.speed = 12; self.update = function () { self.y += self.speed; }; return self; }); /**** * Initialize Game ****/ // Uzun dikdörtgen engel (bariyer) var game = new LK.Game({ backgroundColor: 0x222222 }); /**** * Game Code ****/ // Pist genişliği (kenarlardan boşluk bırak) // Oyun alanı: 2048x2732 // Araba (oyuncu) için kutu şeklinde bir asset // Engeller için kutu şeklinde bir asset // Yol çizgisi için ince kutu // Daire engel (yuvarlak, farklı renk) // Uzun dikdörtgen engel (bariyer) var trackMargin = 220; var trackWidth = 2048 - 2 * trackMargin; // Şerit çizgileri için var laneCount = 3; var laneX = []; for (var i = 0; i < laneCount; i++) { laneX[i] = trackMargin + (i + 0.5) * (trackWidth / laneCount); } // Arabayı başlat var car = new Car(); car.x = laneX[1]; // Ortadaki şerit car.y = 2732 - 400; game.addChild(car); // Skor var score = 0; var scoreTxt = new Text2('0', { size: 120, fill: "#fff" }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // Engeller ve yol çizgileri dizileri var obstacles = []; var lanes = []; // Oyun hızı ve zorluk var baseSpeed = 12; var speed = baseSpeed; var fastSpeed = 22; // Basılı tutunca gidecek hız var spawnInterval = 60; // Kaç frame'de bir engel gelsin var laneSpawnInterval = 36; // Yol çizgisi aralığı var ticksSinceLastObstacle = 0; var ticksSinceLastLane = 0; // Oyun bitti mi? var isGameOver = false; // Basılı tutma kontrolü var isPressing = false; // Yol çizgilerini başlat for (var i = 0; i < laneCount; i++) { for (var j = 0; j < 6; j++) { var lane = new Lane(); lane.x = laneX[i]; lane.y = j * 500 + 200; lanes.push(lane); game.addChild(lane); } } // Hareket kontrolü (sürükleme veya dokunulan yere kayma) var dragActive = false; var dragOffsetX = 0; // Oyun alanı dışında kalan engelleri ve çizgileri sil function cleanupObstaclesAndLanes() { for (var i = obstacles.length - 1; i >= 0; i--) { if (obstacles[i].y - obstacles[i].height / 2 > 2732 + 100) { obstacles[i].destroy(); obstacles.splice(i, 1); } } for (var i = lanes.length - 1; i >= 0; i--) { if (lanes[i].y - lanes[i].height / 2 > 2732 + 100) { lanes[i].destroy(); lanes.splice(i, 1); } } } // Oyun güncelleme fonksiyonu game.update = function () { if (isGameOver) return; // Hız sabit, skor arttıkça artar speed = baseSpeed + Math.floor(score / 600) * 1.5; if (speed > 32) speed = 32; // Engelleri ve yol çizgilerini hareket ettir for (var i = 0; i < obstacles.length; i++) { obstacles[i].speed = speed; obstacles[i].update(); } for (var i = 0; i < lanes.length; i++) { lanes[i].speed = speed; lanes[i].update(); } // Engelleri ve çizgileri temizle cleanupObstaclesAndLanes(); // Yeni engel oluştur ticksSinceLastObstacle++; if (ticksSinceLastObstacle >= spawnInterval) { ticksSinceLastObstacle = 0; // Rastgele bir şeride engel koy, farklı tiplerden seç var laneIdx = Math.floor(Math.random() * laneCount); var obsTypeRand = Math.random(); var obs; if (obsTypeRand < 0.5) { obs = new ObstacleBox(); } else if (obsTypeRand < 0.8) { obs = new ObstacleCircle(); } else { obs = new ObstacleBar(); // Bariyer engelini iki şeride yaymak için ortadaki şeritte çıkarsa, biraz sola/sağa kaydır if (laneIdx == 0) obs.x = laneX[0] + (laneX[1] - laneX[0]) / 2;else if (laneIdx == 2) obs.x = laneX[2] - (laneX[2] - laneX[1]) / 2;else obs.x = laneX[1]; } if (!obs.x) obs.x = laneX[laneIdx]; obs.y = -obs.height / 2 - 40; obs.speed = speed; obstacles.push(obs); game.addChild(obs); } // Yeni yol çizgisi oluştur ticksSinceLastLane++; if (ticksSinceLastLane >= laneSpawnInterval) { ticksSinceLastLane = 0; for (var i = 0; i < laneCount; i++) { var lane = new Lane(); lane.x = laneX[i]; lane.y = -lane.height / 2; lane.speed = speed; lanes.push(lane); game.addChild(lane); } } // Skor: her frame biraz artar (hayatta kalma süresi) score += 1; scoreTxt.setText(score); // Zorluk: skor arttıkça hız ve engel sıklığı artsın if (score % 600 == 0 && !isPressing && speed < 32) { speed += 1.5; if (spawnInterval > 28) spawnInterval -= 2; } // Çarpışma kontrolü for (var i = 0; i < obstacles.length; i++) { if (car.intersects(obstacles[i])) { isGameOver = true; LK.effects.flashScreen(0xff0000, 800); LK.showGameOver(); return; } } }; // Oyun alanında dokunma veya sürükleme ile araba kontrolü function getNearestLaneX(x) { // En yakın şerit merkezini bul var minDist = 99999; var bestX = laneX[0]; for (var i = 0; i < laneCount; i++) { var dist = Math.abs(x - laneX[i]); if (dist < minDist) { minDist = dist; bestX = laneX[i]; } } return bestX; } // Sürükleme başlat game.down = function (x, y, obj) { isPressing = true; // Basılı tutuluyor // Arabaya dokunulduysa sürükleme başlat if (Math.abs(x - car.x) < car.width / 2 + 40 && Math.abs(y - car.y) < car.height / 2 + 40) { dragActive = true; dragOffsetX = car.x - x; } else { // Pistte bir yere dokunulduysa arabayı o şeride kaydır var targetX = getNearestLaneX(x); car.moveToX(targetX); } }; // Sürükleme devamı game.move = function (x, y, obj) { if (dragActive) { var newX = x + dragOffsetX; car.moveToX(newX); } }; // Sürükleme bırakıldı game.up = function (x, y, obj) { dragActive = false; isPressing = false; // Basılı tutma bitti }; /**** END OF FILE ****/
===================================================================
--- original.js
+++ change.js
@@ -109,15 +109,15 @@
/****
* Game Code
****/
-// Uzun dikdörtgen engel (bariyer)
-// Daire engel (yuvarlak, farklı renk)
-// Yol çizgisi için ince kutu
-// Engeller için kutu şeklinde bir asset
-// Araba (oyuncu) için kutu şeklinde bir asset
-// Oyun alanı: 2048x2732
// Pist genişliği (kenarlardan boşluk bırak)
+// Oyun alanı: 2048x2732
+// Araba (oyuncu) için kutu şeklinde bir asset
+// Engeller için kutu şeklinde bir asset
+// Yol çizgisi için ince kutu
+// Daire engel (yuvarlak, farklı renk)
+// Uzun dikdörtgen engel (bariyer)
var trackMargin = 220;
var trackWidth = 2048 - 2 * trackMargin;
// Şerit çizgileri için
var laneCount = 3;
@@ -183,15 +183,11 @@
}
// Oyun güncelleme fonksiyonu
game.update = function () {
if (isGameOver) return;
- // Basılı tutma ile hız değişimi
- if (isPressing) {
- speed = fastSpeed;
- } else {
- speed = baseSpeed + Math.floor(score / 600) * 1.5;
- if (speed > 32) speed = 32;
- }
+ // Hız sabit, skor arttıkça artar
+ speed = baseSpeed + Math.floor(score / 600) * 1.5;
+ if (speed > 32) speed = 32;
// Engelleri ve yol çizgilerini hareket ettir
for (var i = 0; i < obstacles.length; i++) {
obstacles[i].speed = speed;
obstacles[i].update();