User prompt
Menu de birde araba sec butonu olsun ve ona basinca dusman arabalari ve oyuncu arabasinda olusab bir sayfa olsun ve hangi araba secilirse o araba oyuncu arabasi olsun ve ok tusuna basinca oyun baslasin
User prompt
En basta menu olsun
User prompt
Agaclar daha buyuk olsun
User prompt
En sag ve en sol taraflarda agac olmali
User prompt
En basta bir menu olmali ve bir oyna birde araba seç tusu olnali
User prompt
Sag dokununca araba bir cizgi sag ve sola dokununca bir cizgi sola hareket ersin
User prompt
Dusman arabalari nin cesitliligi 10 tane daha fazla olsun
User prompt
Dusman arabalari cesitliligi 10 tane daha fazla olsun
User prompt
Yanlarda agac olsun
User prompt
Ilerledikce dusman arabalar daha fazla spawn olmali
User prompt
Araba larin boyutlari daha fazla olmali
User prompt
Dusman arabalarin cesitliligi daha fazla olsun
User prompt
Soldan 2 cizgi de ilerleyen arabalarin hizi digerleri gibi olsun ama asagi dogru hareket etsenler
User prompt
4 tane yol cizgisi olsun ve soldan 2 tane cizgideki arabalar ters yonde ilerlesin
Code edit (1 edits merged)
Please save this source code
User prompt
Yukarıya Kaçış: Araba Yarışı
Initial prompt
Arabanin surekli olarak yukari hareket etdigi bi araba oyunu yolda ilerlerken yolda duz bir sekilde hareket eden baska arabalarda olmali
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Düz ve ters giden engel arabalar var EnemyCar = Container.expand(function () { var self = Container.call(this); // Farklı tipte araba şekilleri ve renkleri var carTypes = [{ asset: 'enemyCar', shape: 'box' }, { asset: 'enemyCarRed', shape: 'box' }, { asset: 'enemyCarBlue', shape: 'box' }, { asset: 'enemyCarYellow', shape: 'box' }, { asset: 'enemyCarGreen', shape: 'ellipse' }, { asset: 'enemyCarPurple', shape: 'box' }, { asset: 'enemyCar', shape: 'ellipse' }, { asset: 'enemyCarRed', shape: 'ellipse' }, { asset: 'enemyCarBlue', shape: 'ellipse' }, { asset: 'enemyCarYellow', shape: 'ellipse' }, { asset: 'enemyCarGreen', shape: 'box' }, { asset: 'enemyCarPurple', shape: 'ellipse' }, { asset: 'enemyCar', shape: 'box' }, { asset: 'enemyCarRed', shape: 'box' }, { asset: 'enemyCarBlue', shape: 'box' }, { asset: 'enemyCarYellow', shape: 'box' }, // 10 yeni çeşit { asset: 'enemyCarOrange', shape: 'box' }, { asset: 'enemyCarPink', shape: 'ellipse' }, { asset: 'enemyCarCyan', shape: 'box' }, { asset: 'enemyCarBlack', shape: 'ellipse' }, { asset: 'enemyCarWhite', shape: 'box' }, { asset: 'enemyCarBrown', shape: 'ellipse' }, { asset: 'enemyCarSilver', shape: 'box' }, { asset: 'enemyCarGold', shape: 'ellipse' }, { asset: 'enemyCarNavy', shape: 'box' }, { asset: 'enemyCarLime', shape: 'ellipse' }]; // Rastgele bir tip seç var typeIdx = Math.floor(Math.random() * carTypes.length); var carType = carTypes[typeIdx]; var car = self.attachAsset(carType.asset, { anchorX: 0.5, anchorY: 0.5 }); self.width = car.width; self.height = car.height; self.speed = 18; // Varsayılan hız (aşağı) self.direction = 1; // 1: aşağı, -1: yukarı (ters) self.update = function () { self.y += self.speed * self.direction; }; return self; }); // Oyuncu arabası var PlayerCar = Container.expand(function () { var self = Container.call(this); var car = self.attachAsset('playerCar', { anchorX: 0.5, anchorY: 0.5 }); self.width = car.width; self.height = car.height; return self; }); // Yol çizgisi (hareketli) var RoadLine = Container.expand(function () { var self = Container.call(this); var line = self.attachAsset('roadLine', { anchorX: 0.5, anchorY: 0.5 }); self.width = line.width; self.height = line.height; self.speed = 24; self.update = function () { self.y += self.speed; }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x222222 }); /**** * Game Code ****/ // Yol çizgisi (beyaz ince kutu) // Engeller (gri kutu) // Oyuncu arabası (kırmızı kutu) // Oyun alanı boyutları // 10 yeni çeşit için ek varlıklar var GAME_WIDTH = 2048; var GAME_HEIGHT = 2732; // Yolun genişliği ve şeritler var ROAD_WIDTH = 1200; var ROAD_LEFT = (GAME_WIDTH - ROAD_WIDTH) / 2; var ROAD_RIGHT = ROAD_LEFT + ROAD_WIDTH; // Şerit sayısı ve pozisyonları var LANE_COUNT = 4; var LANE_WIDTH = ROAD_WIDTH / LANE_COUNT; var LANE_X = [ROAD_LEFT + LANE_WIDTH * 0.5, ROAD_LEFT + LANE_WIDTH * 1.5, ROAD_LEFT + LANE_WIDTH * 2.5, ROAD_LEFT + LANE_WIDTH * 3.5]; // --- MENU STATE --- var menuContainer = new Container(); var menuBg = LK.getAsset('roadLine', { width: 900, height: 900, color: 0x222222, anchorX: 0.5, anchorY: 0.5 }); menuBg.x = GAME_WIDTH / 2; menuBg.y = GAME_HEIGHT / 2; menuContainer.addChild(menuBg); var titleTxt = new Text2('Araba Oyunu', { size: 160, fill: 0xffffff }); titleTxt.anchor.set(0.5, 0.5); titleTxt.x = GAME_WIDTH / 2; titleTxt.y = GAME_HEIGHT / 2 - 300; menuContainer.addChild(titleTxt); var playBtn = new Text2('Oyna', { size: 120, fill: 0x00ff00 }); playBtn.anchor.set(0.5, 0.5); playBtn.x = GAME_WIDTH / 2; playBtn.y = GAME_HEIGHT / 2 - 40; menuContainer.addChild(playBtn); var selectCarBtn = new Text2('Araba Seç', { size: 100, fill: 0x0099ff }); selectCarBtn.anchor.set(0.5, 0.5); selectCarBtn.x = GAME_WIDTH / 2; selectCarBtn.y = GAME_HEIGHT / 2 + 120; menuContainer.addChild(selectCarBtn); game.addChild(menuContainer); // Menu state var inMenu = true; var carSelectionContainer = null; var selectedCarType = 'playerCar'; // --- CAR SELECTION STATE --- function showCarSelection() { if (carSelectionContainer) { carSelectionContainer.visible = true; return; } carSelectionContainer = new Container(); var bg = LK.getAsset('roadLine', { width: 1200, height: 1000, color: 0x222222, anchorX: 0.5, anchorY: 0.5 }); bg.x = GAME_WIDTH / 2; bg.y = GAME_HEIGHT / 2; carSelectionContainer.addChild(bg); var selTitle = new Text2('Araba Seç', { size: 120, fill: 0xffffff }); selTitle.anchor.set(0.5, 0.5); selTitle.x = GAME_WIDTH / 2; selTitle.y = GAME_HEIGHT / 2 - 350; carSelectionContainer.addChild(selTitle); // Show all available player car types (for now, just one) var carTypes = ['playerCar']; for (var i = 0; i < carTypes.length; i++) { var carAsset = LK.getAsset(carTypes[i], { anchorX: 0.5, anchorY: 0.5 }); carAsset.x = GAME_WIDTH / 2 + (i - 0.5) * 400; carAsset.y = GAME_HEIGHT / 2 - 40; carAsset.scaleX = carAsset.scaleY = 1.2; carSelectionContainer.addChild(carAsset); // Select on tap (function (type, asset) { asset.interactive = true; asset.down = function (x, y, obj) { selectedCarType = type; // Highlight selection for (var j = 0; j < carSelectionContainer.children.length; j++) { var ch = carSelectionContainer.children[j]; if (ch !== asset && ch.tint !== undefined) ch.tint = 0xffffff; } if (asset.tint !== undefined) asset.tint = 0x00ff00; }; })(carTypes[i], carAsset); } var okBtn = new Text2('Tamam', { size: 100, fill: 0x00ff00 }); okBtn.anchor.set(0.5, 0.5); okBtn.x = GAME_WIDTH / 2; okBtn.y = GAME_HEIGHT / 2 + 300; carSelectionContainer.addChild(okBtn); okBtn.interactive = true; okBtn.down = function (x, y, obj) { carSelectionContainer.visible = false; menuContainer.visible = true; }; game.addChild(carSelectionContainer); } // Menu button events playBtn.interactive = true; playBtn.down = function (x, y, obj) { menuContainer.visible = false; inMenu = false; startGame(); }; selectCarBtn.interactive = true; selectCarBtn.down = function (x, y, obj) { menuContainer.visible = false; showCarSelection(); }; // --- GAME STATE --- function startGame() { // Everything below here is the original game setup spawnRoadLines(); // Oyuncu arabası player = new PlayerCar(); player.lane = 1; // Ortadaki şerit player.x = LANE_X[player.lane]; player.y = GAME_HEIGHT - 500; game.addChild(player); // Engeller enemyCars = []; ENEMY_SPAWN_INTERVAL_BASE = 60; // Başlangıçta 60 tickte bir (1 sn) ENEMY_SPAWN_INTERVAL_MIN = 18; // Minimum 0.3 sn (18 tick) enemySpawnTick = 0; distance = 0; scoreTxt.setText('0'); isGameOver = false; player.lane = 1; player.x = LANE_X[1]; player.y = GAME_HEIGHT - 500; updateHighScore(); } // Skor var distance = 0; var scoreTxt = new Text2('0', { size: 120, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // En yüksek skor (oyun başında sıfır) var highScore = 0; var highScoreTxt = new Text2('', { size: 60, fill: 0xFFFF00 }); highScoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(highScoreTxt); function updateHighScore() { if (distance > highScore) highScore = distance; highScoreTxt.setText('En Yüksek: ' + highScore); } updateHighScore(); // Sürükleme için var dragStartX = null; var dragStartLane = null; // Oyun bitti mi? var isGameOver = false; // Oyun hareketleri function movePlayerToLane(lane) { if (lane < 0) lane = 0; if (lane > LANE_COUNT - 1) lane = LANE_COUNT - 1; if (lane !== player.lane) { player.lane = lane; // Yumuşak geçiş animasyonu tween(player, { x: LANE_X[lane] }, { duration: 120, easing: tween.cubicOut }); } } // Dokunma ile sağ/sola bir şerit hareket game.down = function (x, y, obj) { // Oyun alanının ortasına göre sağ/sol tespit et if (x > GAME_WIDTH / 2) { // Sağ tıklandı, sağa bir şerit movePlayerToLane(player.lane + 1); } else { // Sol tıklandı, sola bir şerit movePlayerToLane(player.lane - 1); } }; game.move = function (x, y, obj) { // Hareket gerekmez, tap ile kontrol }; game.up = function (x, y, obj) { // Gerekli değil, tap ile kontrol }; // Çarpışma kontrolü function checkCollision(a, b) { // Basit dikdörtgen çarpışma return Math.abs(a.x - b.x) < (a.width + b.width) / 2 - 20 && Math.abs(a.y - b.y) < (a.height + b.height) / 2 - 20; } // Oyun güncelleme game.update = function () { if (isGameOver) return; // Skor: mesafe arttıkça artar distance += 1; scoreTxt.setText(distance); updateHighScore(); // Yol çizgilerini hareket ettir for (var i = 0; i < roadLines.length; i++) { var line = roadLines[i]; line.update(); if (line.y > GAME_HEIGHT + 100) { line.y -= 8 * 400; } } // Engelleri hareket ettir for (var i = enemyCars.length - 1; i >= 0; i--) { var enemy = enemyCars[i]; enemy.update(); // Ekrandan çıktıysa sil if (enemy.direction === 1 && enemy.y > GAME_HEIGHT + 200 || enemy.direction === -1 && enemy.y < -200) { enemy.destroy(); enemyCars.splice(i, 1); continue; } // Çarpışma kontrolü if (checkCollision(player, enemy)) { isGameOver = true; LK.effects.flashScreen(0xff0000, 800); LK.showGameOver(); return; } } // Yeni engel oluştur enemySpawnTick++; var currentSpawnInterval = getEnemySpawnInterval(); if (enemySpawnTick >= currentSpawnInterval) { enemySpawnTick = 0; // Rastgele bir veya iki şeride engel koy var lanes = [0, 1, 2, 3]; // %60 tek araba, %40 iki araba var count = Math.random() < 0.6 ? 1 : 2; for (var j = 0; j < count; j++) { if (lanes.length === 0) break; var idx = Math.floor(Math.random() * lanes.length); var lane = lanes[idx]; lanes.splice(idx, 1); var enemy = new EnemyCar(); enemy.x = LANE_X[lane]; // Soldaki iki şerit (0 ve 1) için de aşağı doğru giden araba oluştur enemy.y = -200; enemy.direction = 1; // Aşağı hareket game.addChild(enemy); enemyCars.push(enemy); } } }; // Oyun yeniden başlatıldığında sıfırla game.on('reset', function () { // Arabaları ve çizgileri sil for (var i = 0; i < enemyCars.length; i++) { enemyCars[i].destroy(); } enemyCars = []; distance = 0; scoreTxt.setText('0'); isGameOver = false; player.lane = 1; player.x = LANE_X[1]; player.y = GAME_HEIGHT - 500; updateHighScore(); });
===================================================================
--- original.js
+++ change.js
@@ -143,13 +143,13 @@
/****
* Game Code
****/
-// 10 yeni çeşit için ek varlıklar
-// Oyun alanı boyutları
-// Oyuncu arabası (kırmızı kutu)
-// Engeller (gri kutu)
// Yol çizgisi (beyaz ince kutu)
+// Engeller (gri kutu)
+// Oyuncu arabası (kırmızı kutu)
+// Oyun alanı boyutları
+// 10 yeni çeşit için ek varlıklar
var GAME_WIDTH = 2048;
var GAME_HEIGHT = 2732;
// Yolun genişliği ve şeritler
var ROAD_WIDTH = 1200;
@@ -158,40 +158,148 @@
// Şerit sayısı ve pozisyonları
var LANE_COUNT = 4;
var LANE_WIDTH = ROAD_WIDTH / LANE_COUNT;
var LANE_X = [ROAD_LEFT + LANE_WIDTH * 0.5, ROAD_LEFT + LANE_WIDTH * 1.5, ROAD_LEFT + LANE_WIDTH * 2.5, ROAD_LEFT + LANE_WIDTH * 3.5];
-// Yol çizgileri
-var roadLines = [];
-function spawnRoadLines() {
- // Her şeridin ortasına, aralıklı çizgiler
- for (var lane = 0; lane < LANE_COUNT; lane++) {
- for (var i = 0; i < 8; i++) {
- var line = new RoadLine();
- line.x = ROAD_LEFT + LANE_WIDTH * (lane + 0.5);
- line.y = i * 400;
- roadLines.push(line);
- game.addChild(line);
- }
+// --- MENU STATE ---
+var menuContainer = new Container();
+var menuBg = LK.getAsset('roadLine', {
+ width: 900,
+ height: 900,
+ color: 0x222222,
+ anchorX: 0.5,
+ anchorY: 0.5
+});
+menuBg.x = GAME_WIDTH / 2;
+menuBg.y = GAME_HEIGHT / 2;
+menuContainer.addChild(menuBg);
+var titleTxt = new Text2('Araba Oyunu', {
+ size: 160,
+ fill: 0xffffff
+});
+titleTxt.anchor.set(0.5, 0.5);
+titleTxt.x = GAME_WIDTH / 2;
+titleTxt.y = GAME_HEIGHT / 2 - 300;
+menuContainer.addChild(titleTxt);
+var playBtn = new Text2('Oyna', {
+ size: 120,
+ fill: 0x00ff00
+});
+playBtn.anchor.set(0.5, 0.5);
+playBtn.x = GAME_WIDTH / 2;
+playBtn.y = GAME_HEIGHT / 2 - 40;
+menuContainer.addChild(playBtn);
+var selectCarBtn = new Text2('Araba Seç', {
+ size: 100,
+ fill: 0x0099ff
+});
+selectCarBtn.anchor.set(0.5, 0.5);
+selectCarBtn.x = GAME_WIDTH / 2;
+selectCarBtn.y = GAME_HEIGHT / 2 + 120;
+menuContainer.addChild(selectCarBtn);
+game.addChild(menuContainer);
+// Menu state
+var inMenu = true;
+var carSelectionContainer = null;
+var selectedCarType = 'playerCar';
+// --- CAR SELECTION STATE ---
+function showCarSelection() {
+ if (carSelectionContainer) {
+ carSelectionContainer.visible = true;
+ return;
}
+ carSelectionContainer = new Container();
+ var bg = LK.getAsset('roadLine', {
+ width: 1200,
+ height: 1000,
+ color: 0x222222,
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ bg.x = GAME_WIDTH / 2;
+ bg.y = GAME_HEIGHT / 2;
+ carSelectionContainer.addChild(bg);
+ var selTitle = new Text2('Araba Seç', {
+ size: 120,
+ fill: 0xffffff
+ });
+ selTitle.anchor.set(0.5, 0.5);
+ selTitle.x = GAME_WIDTH / 2;
+ selTitle.y = GAME_HEIGHT / 2 - 350;
+ carSelectionContainer.addChild(selTitle);
+ // Show all available player car types (for now, just one)
+ var carTypes = ['playerCar'];
+ for (var i = 0; i < carTypes.length; i++) {
+ var carAsset = LK.getAsset(carTypes[i], {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ carAsset.x = GAME_WIDTH / 2 + (i - 0.5) * 400;
+ carAsset.y = GAME_HEIGHT / 2 - 40;
+ carAsset.scaleX = carAsset.scaleY = 1.2;
+ carSelectionContainer.addChild(carAsset);
+ // Select on tap
+ (function (type, asset) {
+ asset.interactive = true;
+ asset.down = function (x, y, obj) {
+ selectedCarType = type;
+ // Highlight selection
+ for (var j = 0; j < carSelectionContainer.children.length; j++) {
+ var ch = carSelectionContainer.children[j];
+ if (ch !== asset && ch.tint !== undefined) ch.tint = 0xffffff;
+ }
+ if (asset.tint !== undefined) asset.tint = 0x00ff00;
+ };
+ })(carTypes[i], carAsset);
+ }
+ var okBtn = new Text2('Tamam', {
+ size: 100,
+ fill: 0x00ff00
+ });
+ okBtn.anchor.set(0.5, 0.5);
+ okBtn.x = GAME_WIDTH / 2;
+ okBtn.y = GAME_HEIGHT / 2 + 300;
+ carSelectionContainer.addChild(okBtn);
+ okBtn.interactive = true;
+ okBtn.down = function (x, y, obj) {
+ carSelectionContainer.visible = false;
+ menuContainer.visible = true;
+ };
+ game.addChild(carSelectionContainer);
}
-spawnRoadLines();
-// Oyuncu arabası
-var player = new PlayerCar();
-player.lane = 1; // Ortadaki şerit
-player.x = LANE_X[player.lane];
-player.y = GAME_HEIGHT - 500;
-game.addChild(player);
-// Engeller
-var enemyCars = [];
-var ENEMY_SPAWN_INTERVAL_BASE = 60; // Başlangıçta 60 tickte bir (1 sn)
-var ENEMY_SPAWN_INTERVAL_MIN = 18; // Minimum 0.3 sn (18 tick)
-var enemySpawnTick = 0;
-function getEnemySpawnInterval() {
- // Mesafe arttıkça interval azalır, minimuma kadar iner
- // 0-1000 arası 60, 1000'den sonra 30'a kadar iner, 3000'den sonra 18'e kadar iner
- if (distance < 1000) return ENEMY_SPAWN_INTERVAL_BASE;
- if (distance < 3000) return Math.max(ENEMY_SPAWN_INTERVAL_BASE - Math.floor((distance - 1000) / 40), 30);
- return ENEMY_SPAWN_INTERVAL_MIN;
+// Menu button events
+playBtn.interactive = true;
+playBtn.down = function (x, y, obj) {
+ menuContainer.visible = false;
+ inMenu = false;
+ startGame();
+};
+selectCarBtn.interactive = true;
+selectCarBtn.down = function (x, y, obj) {
+ menuContainer.visible = false;
+ showCarSelection();
+};
+// --- GAME STATE ---
+function startGame() {
+ // Everything below here is the original game setup
+ spawnRoadLines();
+ // Oyuncu arabası
+ player = new PlayerCar();
+ player.lane = 1; // Ortadaki şerit
+ player.x = LANE_X[player.lane];
+ player.y = GAME_HEIGHT - 500;
+ game.addChild(player);
+ // Engeller
+ enemyCars = [];
+ ENEMY_SPAWN_INTERVAL_BASE = 60; // Başlangıçta 60 tickte bir (1 sn)
+ ENEMY_SPAWN_INTERVAL_MIN = 18; // Minimum 0.3 sn (18 tick)
+ enemySpawnTick = 0;
+ distance = 0;
+ scoreTxt.setText('0');
+ isGameOver = false;
+ player.lane = 1;
+ player.x = LANE_X[1];
+ player.y = GAME_HEIGHT - 500;
+ updateHighScore();
}
// Skor
var distance = 0;
var scoreTxt = new Text2('0', {
Peugeot pars arkasi ama yukaridan. In-Game asset. 2d. High contrast. No shadows
Bmw e60 arkasi ama yukaridan. In-Game asset. 2d. High contrast. No shadows
Renault l90 arkasi ama yukaridan. In-Game asset. 2d. High contrast. No shadows
Gri Dodge challenger 2014 arkasi ama yukaridan. In-Game asset. 2d. High contrast. No shadows
Beyaz Peugeot 405 arkasi ama yukaridan. In-Game asset. 2d. High contrast. No shadows
Kirmizi Irankhodro samand arkasi ama yukaridan. In-Game asset. 2d. High contrast. No shadows
Beyaz saipa pride 131 arkasi ama yukaridan. In-Game asset. 2d. High contrast. No shadows
Turuncu mazda rx7 arkasi ama yukaridan In-Game asset. 2d. High contrast. No shadows
Cheverleot camaro ss arkasi ama yukaridan In-Game asset. 2d. High contrast. No shadows
Yeni porche 911 arkasi ama yukaridan In-Game asset. 2d. High contrast. No shadows
Yeni ford mustang arkasi ama yukaridan In-Game asset. 2d. High contrast. No shadows
Citroen xantia arkasi ama yukaridan In-Game asset. 2d. High contrast. No shadows
Zamyad neysan arkasi ama yukaridan In-Game asset. 2d. High contrast. No shadows
Lambirghini aventador arkasi ama yukaridan In-Game asset. 2d. High contrast. No shadows
Gri mercedes benz cls arkasi ama yukaridan In-Game asset. 2d. High contrast. No shadows
Acik mavi Bmw m4 arkasi ama yukaridan In-Game asset. 2d. High contrast. No shadows
Usntunde play yazan araba temali mavi bir dugme. In-Game asset. 2d. High contrast. No shadows
Car yazili araba temali turuncu ve daire bir dugme. In-Game asset. 2d. High contrast. No shadows
Mavi ve asiri Spor olarak ozellestirilmis bir peugeot 206 arkasi ama yukaridan. In-Game asset. 2d. High contrast. No shadows
Tam olarak yukaridan gorunen seritsiz duz bir yol. In-Game asset. 2d. High contrast. No shadows
Modern sokak lambasi. In-Game asset. 2d. High contrast. No shadows
Nitro. In-Game asset. 2d. High contrast. No shadows