User prompt
arkaya şarkı ekle
User prompt
ayarlar kısmı ekle
User prompt
şu ateşi sil ya alttan çıkan ve rekor paneli ekle en çok puanı kim yapmış diye ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
ateşe ben assets eklicem ekler misin
User prompt
Please fix the bug: 'Uncaught TypeError: tween.to is not a function' in or related to this line: 'tween.to(greenFire, {' Line Number: 185 ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
3 cu zıpala olsun altından böyle yeşil bir ateş çıksın üç kere tıklıyınca yani
User prompt
game over geri getir
User prompt
game over yazan yere güzel bir tema yap güzel ölme ekranı yap
User prompt
Yukardaki puan şablonunu geri getir
User prompt
Üste puan sayması için bi şey ekler misin
User prompt
sayaç koy sayaç puan sayacı
User prompt
kanka sayacı da güzel bir şey yapsana sana zahmet
User prompt
karakterin ayakları da oynasını birde yukarda sadece imaj için uçan kuşlar olsun ve sadece hayvan aslan olmasın kanka kaplan falan da ekle 2 3 tane daha ekle
User prompt
hedefler biraz daha aralı olsun çok yakın olmasın ileri seviyelerde hızlansın ama bu kadar yakın olmasın ve karakterin hitboxu deymese bile karakter ölüyor
User prompt
arkaya hızlı bir şarkı ekle ve arka planı orman yap
User prompt
iki kere tıklayınca duble jump olsun
Code edit (1 edits merged)
Please save this source code
User prompt
Orman Zıplama Macerası
Initial prompt
Bir ormandayız ve sadece zıplayarak engellerin üstünden atlıyoruz bazen kaplan tarzı saldırgan hayvanlar çıkarsa onların da üstünden zıplıyoruz ormanda geçicek map ona göre tample run un 2d versiyonu tek tık ile sadece zıplayarak puan topluyoruz engellerden zıplayarak
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1"); /**** * Classes ****/ // Saldırgan hayvan (düşman) - çoklu tür desteği var Enemy = Container.expand(function (type) { var self = Container.call(this); // Tür seçimi: yoksa rastgele seç var types = ['lion', 'tiger', 'leopard', 'bear']; if (!type || types.indexOf(type) === -1) { type = types[Math.floor(Math.random() * types.length)]; } var assetId = 'enemy_' + type; var enemyAsset = self.attachAsset(assetId, { anchorX: 0.5, anchorY: 1 }); self.type = type; self.speed = 26; // px/frame self.getHitbox = function () { // Düşmanın hitbox'ı assetten biraz küçük olsun var w = enemyAsset.width * 0.7; var h = enemyAsset.height * 0.7; var x = self.x - w / 2; var y = self.y - h; return { x: x, y: y, width: w, height: h }; }; self.update = function () { self.x -= self.speed; }; return self; }); // Engeller (kütük) var Obstacle = Container.expand(function () { var self = Container.call(this); var obsAsset = self.attachAsset('obstacle', { anchorX: 0.5, anchorY: 1 }); self.speed = 22; // px/frame self.getHitbox = function () { // Engelin hitbox'ı assetten biraz küçük olsun var w = obsAsset.width * 0.7; var h = obsAsset.height * 0.7; var x = self.x - w / 2; var y = self.y - h; return { x: x, y: y, width: w, height: h }; }; self.update = function () { self.x -= self.speed; }; return self; }); // Koşucu karakter (ayak animasyonu eklendi) var Runner = Container.expand(function () { var self = Container.call(this); var runnerAsset = self.attachAsset('runner', { anchorX: 0.5, anchorY: 1 }); // Ayak animasyonu için parametreler var feetAnimTime = 0; var feetAnimSpeed = 0.25 + Math.random() * 0.1; var feetAnimAmplitude = 18; // px // Zıplama parametreleri self.isJumping = false; self.jumpVelocity = 0; self.gravity = 3.2; self.jumpPower = -54; self.groundY = 0; // Oyun başında ayarlanacak // Triple jump için sayaç ve efekt self.jumpCount = 0; self.maxJumps = 3; // Daha adil çarpışma için hitbox fonksiyonu self.getHitbox = function () { // Assetin ortasından, assetten biraz küçük bir dikdörtgen döndür var w = runnerAsset.width * 0.55; var h = runnerAsset.height * 0.7; var x = self.x - w / 2; var y = self.y - h; return { x: x, y: y, width: w, height: h }; }; // intersects fonksiyonunu override et self.intersects = function (obj) { var a = self.getHitbox(); var b; if (typeof obj.getHitbox === "function") { b = obj.getHitbox(); } else { // fallback: obj'nin x,y,width,height'i varsa kullan b = { x: obj.x - (obj.width || 0) / 2, y: obj.y - (obj.height || 0), width: obj.width || 0, height: obj.height || 0 }; } // Basit AABB çarpışma return a.x < b.x + b.width && a.x + a.width > b.x && a.y < b.y + b.height && a.y + a.height > b.y; }; // Güncelleme fonksiyonu self.update = function () { // Ayak animasyonu: zıplamıyorsa veya havadaysa farklı if (!self.isJumping && self.y === self.groundY) { feetAnimTime += feetAnimSpeed; // Koşarken ayaklar yukarı-aşağı oynar (sinüs hareketi) runnerAsset.y = Math.sin(feetAnimTime) * feetAnimAmplitude; } else { // Havada ise ayaklar sabit (hafif yukarıda) runnerAsset.y = -feetAnimAmplitude * 0.5; } if (self.isJumping) { self.y += self.jumpVelocity; self.jumpVelocity += self.gravity; // Yere inme kontrolü if (self.y >= self.groundY) { self.y = self.groundY; self.isJumping = false; self.jumpVelocity = 0; self.jumpCount = 0; // Yere inince tekrar sıfırla } } }; // Zıplama fonksiyonu self.jump = function () { if (self.jumpCount < self.maxJumps) { self.isJumping = true; self.jumpVelocity = self.jumpPower; self.jumpCount++; // 3. zıplamada ekstra efekt yok (ateş kaldırıldı) } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x7ec850 // Orman yeşili }); /**** * Game Code ****/ // Alevin üst kısmı // Alevin orta kısmı // Alevin tabanı // Ateş efektleri için örnek assetler (id'leri kendi ekleyeceğin görsellere göre değiştir) // Orman arka planı (örnek: orman görseli, tam ekran) // Karakter (oyuncu) // Zemin // Engeller (kütük) // Saldırgan hayvan (örnek: ayı) // Puan göstergesi için // (Text2 kullanılacak, ayrıca asset gerek yok) // Orman arka planı için tam ekran bir görsel asseti (örnek id, uygun bir orman görseliyle değiştirilebilir) // Hızlı tempolu arka plan müziği (örnek id, uygun bir müzikle değiştirilebilir) var forestBg = LK.getAsset('forestBg', { anchorX: 0, anchorY: 0, x: 0, y: 0, width: 2048, height: 2732 }); game.addChild(forestBg); // Uçan kuşlar (sadece görsel, çarpışma yok) var flyingBirds = []; function spawnBird() { var birdTypes = ['bird1', 'bird2', 'bird3']; var birdType = birdTypes[Math.floor(Math.random() * birdTypes.length)]; var bird = LK.getAsset(birdType, { anchorX: 0.5, anchorY: 0.5, x: 2048 + 100 + Math.random() * 200, y: 120 + Math.random() * 180, scaleX: 0.8 + Math.random() * 0.5, scaleY: 0.8 + Math.random() * 0.5 }); bird.speed = 6 + Math.random() * 4; flyingBirds.push(bird); game.addChild(bird); } // Başlangıçta birkaç kuş oluştur for (var i = 0; i < 3; i++) { spawnBird(); } // Zemin var ground = LK.getAsset('ground', { anchorX: 0, anchorY: 1, x: 0, y: 2732 - 0 }); game.addChild(ground); // Hızlı tempolu arka plan müziği başlat LK.playMusic('fastForestMusic'); // Runner karakteri var runner = new Runner(); runner.x = 420; runner.groundY = 2732 - 120; // Zemin yüksekliği kadar yukarıda runner.y = runner.groundY; game.addChild(runner); // Puan var score = 0; // Basit skor metni (üstte, ortada) var scoreTxt = new Text2('0', { size: 150, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // En yüksek skor paneli (üstte, sağda) var highScore = storage.highScore || 0; var highScoreTxt = new Text2('Rekor: ' + highScore, { size: 80, fill: 0xffe066 }); highScoreTxt.anchor.set(1, 0); highScoreTxt.x = LK.gui.width - 40; highScoreTxt.y = 10; LK.gui.top.addChild(highScoreTxt); // Ayarlar butonu (sağ üstte, rekorun yanında) var settingsBtn = new Text2('⚙️', { size: 90, fill: 0xffffff }); settingsBtn.anchor.set(1, 0); settingsBtn.x = LK.gui.width - 160; settingsBtn.y = 10; LK.gui.top.addChild(settingsBtn); // Ayarlar paneli (basit, ortada) var settingsPanel = new Container(); var panelBg = LK.getAsset('Puan', { anchorX: 0.5, anchorY: 0, x: LK.gui.width / 2, y: 120, width: 800, height: 600 }); panelBg.alpha = 0.96; settingsPanel.addChild(panelBg); var settingsTitle = new Text2('Ayarlar', { size: 100, fill: 0x222222 }); settingsTitle.anchor.set(0.5, 0); settingsTitle.x = LK.gui.width / 2; settingsTitle.y = 150; settingsPanel.addChild(settingsTitle); var closeBtn = new Text2('Kapat', { size: 70, fill: 0xb00b28 }); closeBtn.anchor.set(0.5, 0); closeBtn.x = LK.gui.width / 2; closeBtn.y = 600; settingsPanel.addChild(closeBtn); settingsPanel.visible = false; LK.gui.top.addChild(settingsPanel); // Ayarlar butonuna basınca paneli aç settingsBtn.interactive = true; settingsBtn.down = function () { settingsPanel.visible = true; }; // Kapat butonuna basınca paneli kapat closeBtn.interactive = true; closeBtn.down = function () { settingsPanel.visible = false; }; // Engeller ve düşmanlar var obstacles = []; var enemies = []; // Oyun durumu var isGameOver = false; // Rastgele engel/düşman oluşturma zamanlayıcıları var nextObstacleTick = 60 + Math.floor(Math.random() * 60); // 1-2 sn arası var nextEnemyTick = 180 + Math.floor(Math.random() * 120); // 3-5 sn arası // Oyun alanı sınırları var groundY = 2732 - 120; // Oyun kontrolleri (tek dokunuşla zıplama) game.down = function (x, y, obj) { if (!isGameOver) { runner.jump(); } }; // Oyun güncelleme fonksiyonu game.update = function () { if (isGameOver) return; // Uçan kuşları güncelle for (var b = flyingBirds.length - 1; b >= 0; b--) { var bird = flyingBirds[b]; bird.x -= bird.speed; // Hafif yukarı-aşağı dalgalanma efekti bird.y += Math.sin(LK.ticks * 0.04 + b) * 0.7; if (bird.x < -200) { bird.destroy(); flyingBirds.splice(b, 1); } } // Belirli aralıklarla yeni kuş ekle (her 120 tickte bir, ekranda 4'ten az varsa) if (LK.ticks % 120 === 0 && flyingBirds.length < 4) { spawnBird(); } // Runner güncelle runner.update(); // Engelleri güncelle var _loop = function _loop() { obs = obstacles[i]; obs.update(); // Çarpışma kontrolü if (runner.intersects(obs)) { isGameOver = true; LK.effects.flashScreen(0xff0000, 800); LK.showGameOver(); return { v: void 0 }; } // Ekran dışına çıktıysa sil if (obs.x < -200) { obs.destroy(); obstacles.splice(i, 1); // Puanı artır (engel başarıyla geçildi) score++; scoreTxt.setText(score); // Rekor güncelle if (score > highScore) { highScore = score; storage.highScore = highScore; highScoreTxt.setText('Rekor: ' + highScore); } } }, obs, _ret; for (var i = obstacles.length - 1; i >= 0; i--) { _ret = _loop(); if (_ret) return _ret.v; } // Düşmanları güncelle for (var j = enemies.length - 1; j >= 0; j--) { var enemy = enemies[j]; enemy.update(); // Çarpışma kontrolü if (runner.intersects(enemy)) { isGameOver = true; LK.effects.flashScreen(0xff0000, 800); LK.showGameOver(); return; } // Ekran dışına çıktıysa sil if (enemy.x < -220) { enemy.destroy(); enemies.splice(j, 1); // Puanı artır (düşman başarıyla geçildi) score++; scoreTxt.setText(score); // Rekor güncelle if (score > highScore) { highScore = score; storage.highScore = highScore; highScoreTxt.setText('Rekor: ' + highScore); } } } // Yeni engel oluşturma if (LK.ticks % nextObstacleTick === 0) { var obs = new Obstacle(); obs.x = 2048 + 100; obs.y = groundY; obstacles.push(obs); game.addChild(obs); // Sonraki engel için yeni zaman: skor arttıkça daha kısa aralık, ama minimum mesafe korunur var minObstacleTick = 80 + Math.floor(score * 0.7); // skor arttıkça min aralık artar if (minObstacleTick > 300) minObstacleTick = 300; // çok açılmasın nextObstacleTick = minObstacleTick + Math.floor(Math.random() * 80) + 60; } // Yeni düşman oluşturma if (LK.ticks % nextEnemyTick === 0) { // Rastgele hayvan türüyle düşman oluştur var enemyTypes = ['lion', 'tiger', 'leopard', 'bear']; var type = enemyTypes[Math.floor(Math.random() * enemyTypes.length)]; var enemy = new Enemy(type); enemy.x = 2048 + 180; enemy.y = groundY; enemies.push(enemy); game.addChild(enemy); // Sonraki düşman için yeni zaman: skor arttıkça daha kısa aralık, ama minimum mesafe korunur var minEnemyTick = 220 + Math.floor(score * 1.2); if (minEnemyTick > 500) minEnemyTick = 500; nextEnemyTick = minEnemyTick + Math.floor(Math.random() * 120) + 100; } // Hız arttırma: skor arttıkça engel ve düşmanlar hızlanır var baseObsSpeed = 22; var baseEnemySpeed = 26; var speedIncrease = Math.floor(score / 10) * 2; // her 10 puanda 2px/frame hızlanır for (var i = 0; i < obstacles.length; i++) { obstacles[i].speed = baseObsSpeed + speedIncrease; } for (var j = 0; j < enemies.length; j++) { enemies[j].speed = baseEnemySpeed + speedIncrease; } }; // Oyun yeniden başlatıldığında sıfırlama game.on('reset', function () { // Tüm engelleri ve düşmanları sil for (var i = 0; i < obstacles.length; i++) { obstacles[i].destroy(); } for (var j = 0; j < enemies.length; j++) { enemies[j].destroy(); } obstacles = []; enemies = []; score = 0; scoreTxt.setText(score); // Rekoru güncelle (oyun başında göster) highScore = storage.highScore || 0; highScoreTxt.setText('Rekor: ' + highScore); isGameOver = false; runner.x = 420; runner.y = runner.groundY; runner.isJumping = false; runner.jumpVelocity = 0; runner.jumpCount = 0; // Yeşil ateş efektini sıfırla (artık gerek yok, ateş kaldırıldı) nextObstacleTick = 60 + Math.floor(Math.random() * 60); nextEnemyTick = 180 + Math.floor(Math.random() * 120); });
===================================================================
--- original.js
+++ change.js
Safarici bir runner yeşil üstlü. In-Game asset. 2d. High contrast. No shadows
Aslan. In-Game asset. 2d. High contrast. No shadows
Orman. In-Game asset. 2d. High contrast. No shadows
orman toprağı olsun zemin. In-Game asset. 2d. High contrast. No shadows
kuş. In-Game asset. 2d. High contrast. No shadows
Leopar. In-Game asset. 2d. High contrast. No shadows
ayı. In-Game asset. 2d. High contrast. No shadows
green fire. In-Game asset. 2d. High contrast. No shadows