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; }); // Engeller var Obstacle = 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; // Hız (her engel için ayarlanacak) self.speed = 12; // update fonksiyonu self.update = function () { self.y += self.speed; }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x222222 }); /**** * Game Code ****/ // 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) 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 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; // 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; // Engelleri ve yol çizgilerini hareket ettir for (var i = 0; i < obstacles.length; i++) { obstacles[i].update(); } for (var i = 0; i < lanes.length; i++) { lanes[i].update(); } // Engelleri ve çizgileri temizle cleanupObstaclesAndLanes(); // Yeni engel oluştur ticksSinceLastObstacle++; if (ticksSinceLastObstacle >= spawnInterval) { ticksSinceLastObstacle = 0; // Rastgele bir şeride engel koy var laneIdx = Math.floor(Math.random() * laneCount); var obs = new Obstacle(); 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 && 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) { // 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; }; /**** END OF FILE ****/
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,241 @@
-/****
+/****
+* 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;
+});
+// Engeller
+var Obstacle = 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;
+ // Hız (her engel için ayarlanacak)
+ self.speed = 12;
+ // update fonksiyonu
+ self.update = function () {
+ self.y += self.speed;
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x222222
+});
+
+/****
+* Game Code
+****/
+// 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)
+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 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;
+// 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;
+ // Engelleri ve yol çizgilerini hareket ettir
+ for (var i = 0; i < obstacles.length; i++) {
+ obstacles[i].update();
+ }
+ for (var i = 0; i < lanes.length; i++) {
+ lanes[i].update();
+ }
+ // Engelleri ve çizgileri temizle
+ cleanupObstaclesAndLanes();
+ // Yeni engel oluştur
+ ticksSinceLastObstacle++;
+ if (ticksSinceLastObstacle >= spawnInterval) {
+ ticksSinceLastObstacle = 0;
+ // Rastgele bir şeride engel koy
+ var laneIdx = Math.floor(Math.random() * laneCount);
+ var obs = new Obstacle();
+ 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 && 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) {
+ // 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;
+};
+/**** END OF FILE ****/
\ No newline at end of file