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 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; // 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; } // 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 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 && !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
@@ -110,14 +110,17 @@
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();
@@ -147,13 +150,22 @@
}
// 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;
+ }
// 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();
@@ -186,9 +198,9 @@
// 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) {
+ if (score % 600 == 0 && !isPressing && speed < 32) {
speed += 1.5;
if (spawnInterval > 28) spawnInterval -= 2;
}
// Çarpışma kontrolü
@@ -216,8 +228,9 @@
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;
@@ -236,6 +249,7 @@
};
// Sürükleme bırakıldı
game.up = function (x, y, obj) {
dragActive = false;
+ isPressing = false; // Basılı tutma bitti
};
/**** END OF FILE ****/
\ No newline at end of file