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 ****/ // Engel // Yol çizgisi // Yol şeridi // Araba (oyuncu) // Yolun ortasına yerleştir var road = LK.getAsset('road', { anchorX: 0.5, anchorY: 0 }); road.x = 2048 / 2; road.y = 0; game.addChild(road); // Yol çizgileri (hareketli) var laneLines = []; var laneCount = 3; var laneSpacing = road.width / laneCount; for (var i = 0; i < 8; i++) { var lane = LK.getAsset('lane', { anchorX: 0.5, anchorY: 0.5 }); lane.x = road.x - road.width / 2 + laneSpacing; lane.y = i * 400; game.addChild(lane); laneLines.push(lane); } for (var i = 0; i < 8; i++) { var lane = LK.getAsset('lane', { anchorX: 0.5, anchorY: 0.5 }); lane.x = road.x + road.width / 2 - laneSpacing; lane.y = i * 400 + 200; game.addChild(lane); laneLines.push(lane); } // 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); // 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; // Yol çizgilerini hareket ettir for (var i = 0; i < laneLines.length; i++) { laneLines[i].y += 22; if (laneLines[i].y > 2732) { laneLines[i].y -= 2732; } } // 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.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); });
===================================================================
--- original.js
+++ change.js
@@ -5,21 +5,8 @@
/****
* Classes
****/
-// Bonus
-var Bonus = Container.expand(function () {
- var self = Container.call(this);
- var bonusGfx = self.attachAsset('bonus', {
- anchorX: 0.5,
- anchorY: 0.5
- });
- self.speed = 22;
- self.update = function () {
- self.y += self.speed;
- };
- return self;
-});
// Oyuncu arabası
var Car = Container.expand(function () {
var self = Container.call(this);
var carGfx = self.attachAsset('car', {
@@ -65,9 +52,8 @@
/****
* Game Code
****/
-// Bonus
// Engel
// Yol çizgisi
// Yol şeridi
// Araba (oyuncu)
@@ -115,9 +101,8 @@
car.setStartPosition();
game.addChild(car);
// Oyun değişkenleri
var obstacles = [];
-var bonuses = [];
var dragNode = null;
var lastScore = 0;
var isGameOver = false;
// Oyun alanı sınırları
@@ -180,28 +165,8 @@
LK.showGameOver();
return;
}
}
- // Bonusları güncelle
- for (var i = bonuses.length - 1; i >= 0; i--) {
- var b = bonuses[i];
- b.update();
- // Ekran dışına çıktıysa sil
- if (b.y - 80 > 2732) {
- b.destroy();
- bonuses.splice(i, 1);
- continue;
- }
- // Toplama kontrolü
- if (car.intersects(b)) {
- updateScore(LK.getScore() + 5);
- // Sarı titret
- LK.effects.flashObject(car, 0xffeb3b, 400);
- b.destroy();
- bonuses.splice(i, 1);
- continue;
- }
- }
// Skor: her frame biraz artır (yol kat ettikçe)
if (LK.ticks % 4 === 0) {
updateScore(LK.getScore() + 1);
}
@@ -214,31 +179,12 @@
obs.y = -120;
obstacles.push(obs);
game.addChild(obs);
}
- // Bonus oluşturma (her 120 frame'de bir, %50 olasılıkla)
- if (LK.ticks % 120 === 0 && Math.random() < 0.5) {
- // Rastgele şerit seç, ancak arabanın bulunduğu şeridi atla
- var carLaneIdx = Math.floor((car.x - (road.x - road.width / 2)) / laneSpacing);
- var possibleLanes = [];
- for (var li = 0; li < laneCount; li++) {
- if (li !== carLaneIdx) possibleLanes.push(li);
- }
- // Eğer tüm şeritler arabanın altında ise, bonus koyma
- if (possibleLanes.length > 0) {
- var laneIdx = possibleLanes[Math.floor(Math.random() * possibleLanes.length)];
- var b = new Bonus();
- b.x = road.x - road.width / 2 + laneSpacing / 2 + laneIdx * laneSpacing;
- b.y = -100;
- bonuses.push(b);
- game.addChild(b);
- }
- }
};
// Oyun yeniden başlatıldığında sıfırla
game.on('destroy', function () {
obstacles = [];
- bonuses = [];
isGameOver = false;
car.setStartPosition();
updateScore(0);
});
\ No newline at end of file