User prompt
Araba sesini ekle
User prompt
Araba yarış sesi ekle
User prompt
Yol çizgilerini kaldır
User prompt
Bonusları kaldır
User prompt
Bonuslar Arabanın üstünde olmasın
Code edit (1 edits merged)
Please save this source code
User prompt
Turbo Yarış: Sonsuz Yol
Initial prompt
Bana mobil araba yarışı oyunu yap
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Oyuncu arabası var Car = Container.expand(function () { var self = Container.call(this); var carGfx = self.attachAsset('car', { anchorX: 0.5, anchorY: 0.5 }); // Arabayı biraz yukarıdan başlatmak için offset self.setStartPosition = function () { self.x = 2048 / 2; self.y = 2732 - 400; }; // Sınırları kontrol et self.clampToRoad = function () { if (self.x < road.x - road.width / 2 + carGfx.width / 2) { self.x = road.x - road.width / 2 + carGfx.width / 2; } if (self.x > road.x + road.width / 2 - carGfx.width / 2) { self.x = road.x + road.width / 2 - carGfx.width / 2; } }; return self; }); // Engel var Obstacle = Container.expand(function () { var self = Container.call(this); var obsGfx = self.attachAsset('obstacle', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 22; self.update = function () { self.y += self.speed; }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x111111 }); /**** * Game Code ****/ // Yolun ortasına yerleştir // Araba (oyuncu) // Yol şeridi // Yol çizgisi // Engel var road = LK.getAsset('road', { anchorX: 0.5, anchorY: 0 }); road.x = 2048 / 2; road.y = 0; game.addChild(road); var laneCount = 3; var laneSpacing = road.width / laneCount; // Skor metni var scoreTxt = new Text2('0', { size: 120, fill: "#fff" }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // Oyuncu arabası var car = new Car(); car.setStartPosition(); game.addChild(car); // Oyun değişkenleri var obstacles = []; var dragNode = null; var lastScore = 0; var isGameOver = false; // Oyun alanı sınırları var roadLeft = road.x - road.width / 2; var roadRight = road.x + road.width / 2; // Hareket için başlangıç offseti var dragOffsetX = 0; // Oyun skorunu güncelle function updateScore(val) { LK.setScore(val); scoreTxt.setText(val); } // Oyun başlatıldığında skor sıfırla updateScore(0); LK.playMusic('car_engine'); // Oyun hareketleri function handleMove(x, y, obj) { if (dragNode) { // Arabayı sadece yatay eksende hareket ettir var newX = x - dragOffsetX; car.x = newX; car.clampToRoad(); } } game.move = handleMove; game.down = function (x, y, obj) { // Arabaya dokunulduysa sürüklemeye başla if (x > car.x - 120 && x < car.x + 120 && y > car.y - 180 && y < car.y + 180) { dragNode = car; dragOffsetX = x - car.x; } }; game.up = function (x, y, obj) { dragNode = null; }; // Oyun güncelleme döngüsü game.update = function () { if (isGameOver) return; // Engelleri güncelle for (var i = obstacles.length - 1; i >= 0; i--) { var obs = obstacles[i]; obs.update(); // Ekran dışına çıktıysa sil if (obs.y - 100 > 2732) { obs.destroy(); obstacles.splice(i, 1); continue; } // Çarpışma kontrolü if (car.intersects(obs)) { // Kırmızı titret LK.effects.flashScreen(0xff0000, 800); isGameOver = true; LK.stopMusic(); LK.showGameOver(); return; } } // Skor: her frame biraz artır (yol kat ettikçe) if (LK.ticks % 4 === 0) { updateScore(LK.getScore() + 1); } // Engel oluşturma (her 40 frame'de bir) if (LK.ticks % 40 === 0) { var obs = new Obstacle(); // Rastgele şerit seç var laneIdx = Math.floor(Math.random() * laneCount); obs.x = road.x - road.width / 2 + laneSpacing / 2 + laneIdx * laneSpacing; obs.y = -120; obstacles.push(obs); game.addChild(obs); } }; // Oyun yeniden başlatıldığında sıfırla game.on('destroy', function () { obstacles = []; isGameOver = false; car.setStartPosition(); updateScore(0); LK.playMusic('car_engine'); });
===================================================================
--- original.js
+++ change.js
@@ -94,8 +94,9 @@
scoreTxt.setText(val);
}
// Oyun başlatıldığında skor sıfırla
updateScore(0);
+LK.playMusic('car_engine');
// Oyun hareketleri
function handleMove(x, y, obj) {
if (dragNode) {
// Arabayı sadece yatay eksende hareket ettir
@@ -132,8 +133,9 @@
if (car.intersects(obs)) {
// Kırmızı titret
LK.effects.flashScreen(0xff0000, 800);
isGameOver = true;
+ LK.stopMusic();
LK.showGameOver();
return;
}
}
@@ -157,5 +159,6 @@
obstacles = [];
isGameOver = false;
car.setStartPosition();
updateScore(0);
+ LK.playMusic('car_engine');
});
\ No newline at end of file