User prompt
oku attığım yere doğru eğimli gitsin
User prompt
skor eksi 25 olduğunda oyun kaybedilsin
User prompt
fare ve tavşan, geyik ve domuzdan daha fazla olsun
User prompt
fare ve tavşan geyik ve domuzdan 3 kat fazla spawn olsun
User prompt
Please fix the bug: 'TypeError: Cannot read properties of undefined (reading '__colorFlash_current_tick')' in or related to this line: 'LK.effects.flashObject(newAnimal, 0xffffff, 200);' Line Number: 329
User prompt
Please fix the bug: 'TypeError: Cannot read properties of undefined (reading '__colorFlash_current_tick')' in or related to this line: 'LK.effects.flashObject(newAnimal, 0xffffff, 200);' Line Number: 329
User prompt
4 tane fare, 3 tane tavşan oluşsun
User prompt
fare ve tavşan geyik ve domuzdan fazla daha fazla sayıda spawn olsun
User prompt
score 50 olduğunda kazan_mak sesini çal
User prompt
score 50 olduğunda kazanma sesini çal
User prompt
fare ve tavşan vurulduğunda fare_vurma sesi çalın
User prompt
aynısını geyik için yap
User prompt
domuzu vuruduğumda domuz_vurma sesini oynat
User prompt
arka plan ayarlamak istiyorum
User prompt
fare eksi 2 puan , tavşan eksi 1 puan olsun
User prompt
fare eksi 1 puan , tavşan eksi 2 puan olsun
User prompt
son iki komutumu geri al
User prompt
geyik ve domuz kenarlara çarptığında yok olmasın
User prompt
geyik ve domuz kenarlara çarptığında yok olsun
User prompt
ok sınırsız olsun her tıkladığımda yenisi atılsın
User prompt
yay görünsün
User prompt
oku tıkladığım yere atsın
Code edit (1 edits merged)
Please save this source code
Initial prompt
Okçu Avcı: Ormanda Hayvan Avı
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Hayvan Sınıfı (Base) var Animal = Container.expand(function () { var self = Container.call(this); // Bu sınıf doğrudan kullanılmaz, alt sınıflar kullanır. self.speed = 6; self.dirX = 0; self.dirY = 0; self.point = 1; self.assetId = ''; self.asset = null; // Hareket yönünü rastgele ayarla self.setRandomDirection = function () { var angle = Math.random() * Math.PI * 2; self.dirX = Math.cos(angle); self.dirY = Math.sin(angle); }; // Ekran kenarına çarptığında yön değiştir self.bounceIfNeeded = function () { var margin = 40; if (self.x < margin) self.dirX = Math.abs(self.dirX); if (self.x > 2048 - margin) self.dirX = -Math.abs(self.dirX); if (self.y < 200) self.dirY = Math.abs(self.dirY); if (self.y > 2732 - margin) self.dirY = -Math.abs(self.dirY); }; self.update = function () { self.x += self.dirX * self.speed; self.y += self.dirY * self.speed; self.bounceIfNeeded(); }; return self; }); // Tavşan (Rabbit) var Rabbit = Animal.expand(function () { var self = Animal.call(this); self.assetId = 'rabbit'; self.point = -1; // Tavşan vurunca -1 puan// DEĞİŞTİ self.speed = 8 + Math.random() * 2; self.asset = self.attachAsset('rabbit', { anchorX: 0.5, anchorY: 0.5 }); self.setRandomDirection(); return self; }); // Fare (Mouse) var Mouse = Animal.expand(function () { var self = Animal.call(this); self.assetId = 'mouse'; self.point = -2; // Fare vurunca -2 puan// DEĞİŞTİ self.speed = 10 + Math.random() * 2; self.asset = self.attachAsset('mouse', { anchorX: 0.5, anchorY: 0.5 }); self.setRandomDirection(); return self; }); // Ceylan (Deer) var Deer = Animal.expand(function () { var self = Animal.call(this); self.assetId = 'deer'; self.point = 4; self.speed = 7 + Math.random() * 2; self.asset = self.attachAsset('deer', { anchorX: 0.5, anchorY: 0.5 }); self.setRandomDirection(); return self; }); // Domuz (Boar) var Boar = Animal.expand(function () { var self = Animal.call(this); self.assetId = 'boar'; self.point = 3; self.speed = 6 + Math.random() * 2; self.asset = self.attachAsset('boar', { anchorX: 0.5, anchorY: 0.5 }); self.setRandomDirection(); return self; }); // Ok (Arrow) Sınıfı var Arrow = Container.expand(function () { var self = Container.call(this); var arrowAsset = self.attachAsset('arrow', { anchorX: 0.5, anchorY: 1 }); self.speed = -32; // Okun yukarıya hızı self.update = function () { // Okun yönü ve hızı atanmışsa onları kullan if (typeof self.vx === "number" && typeof self.vy === "number") { self.x += self.vx; self.y += self.vy; } else { self.y += self.speed; } }; return self; }); // Yay (Bow) Sınıfı var Bow = Container.expand(function () { var self = Container.call(this); // Yay görseli için placeholder: kahverengi kutu ve yay şekli // Kullanıcı kendi görselini ekleyebilir, burada basit bir kutu ile gösteriyoruz self.asset = self.attachAsset('bow', { anchorX: 0.5, anchorY: 1 }); return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x2e4d1b // Orman yeşili }); /**** * Game Code ****/ // Skor göstergesi // Hayvan ve ok görselleri kullanıcı tarafından eklenecektir. Şimdilik placeholder şekiller kullanıyoruz. var scoreTxt = new Text2('0', { size: 120, fill: 0xFFF700 }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // Yay (bow) sabit pozisyonu var bowStartX = 2048 / 2; var bowStartY = 2732 - 80; var bow = null; // Ok (arrow) sabit pozisyonu var arrowStartX = 2048 / 2; var arrowStartY = 2732 - 180; // Ok objeleri dizisi (birden fazla ok olabilir) var arrows = []; // Hayvanlar dizisi var animals = []; // Hayvanları başlat function spawnAnimals() { // Fare ve tavşan daha fazla, geyik ve domuz daha az spawn olacak şekilde ayarlandı var margin = 200; // 1 geyik for (var i = 0; i < 1; i++) { var deer = new Deer(); deer.x = margin + Math.random() * (2048 - 2 * margin); deer.y = 600 + Math.random() * 600; animals.push(deer); game.addChild(deer); } // 1 domuz for (var i = 0; i < 1; i++) { var boar = new Boar(); boar.x = margin + Math.random() * (2048 - 2 * margin); boar.y = 900 + Math.random() * 600; animals.push(boar); game.addChild(boar); } // 3 tavşan for (var i = 0; i < 3; i++) { var rabbit = new Rabbit(); rabbit.x = margin + Math.random() * (2048 - 2 * margin); rabbit.y = 1200 + Math.random() * 600; animals.push(rabbit); game.addChild(rabbit); } // 4 fare for (var i = 0; i < 4; i++) { var mouse = new Mouse(); mouse.x = margin + Math.random() * (2048 - 2 * margin); mouse.y = 1500 + Math.random() * 600; animals.push(mouse); game.addChild(mouse); } } // Ok objesini başlat function resetArrow() { // Artık tek bir ok yok, bu fonksiyon kullanılmayacak. } // Skoru güncelle function updateScoreText() { scoreTxt.setText(LK.getScore()); } // Oyun başlangıcı spawnAnimals(); // Yay objesini başlat ve ekle if (bow) { bow.destroy(); bow = null; } bow = new Bow(); bow.x = bowStartX; bow.y = bowStartY; game.addChild(bow); resetArrow(); updateScoreText(); // Ok atma işlemi (ekrana dokununca) game.down = function (x, y, obj) { // Yeni bir ok oluştur ve diziye ekle var newArrow = new Arrow(); newArrow.x = arrowStartX; newArrow.y = arrowStartY; // Hedef noktaya vektör hesapla var dx = x - newArrow.x; var dy = y - newArrow.y; var length = Math.sqrt(dx * dx + dy * dy); var speed = 32; if (length > 0) { newArrow.vx = dx / length * speed; newArrow.vy = dy / length * speed; } else { newArrow.vx = 0; newArrow.vy = -speed; } game.addChild(newArrow); arrows.push(newArrow); LK.getSound('arrow_shot').play(); }; // Oyun güncelleme döngüsü game.update = function () { // Hayvanları güncelle for (var i = 0; i < animals.length; i++) { animals[i].update(); } // Tüm okları güncelle for (var a = arrows.length - 1; a >= 0; a--) { var arrowObj = arrows[a]; arrowObj.update(); // Ok ekran dışına çıktıysa yok et if (arrowObj.y < -100) { arrowObj.destroy(); arrows.splice(a, 1); continue; } // Ok ve hayvan çarpışması kontrolü for (var i = animals.length - 1; i >= 0; i--) { var animal = animals[i]; if (arrowObj.intersects(animal)) { // Skoru artır LK.setScore(LK.getScore() + animal.point); updateScoreText(); // Domuz vurulduysa sesi çal if (animal.assetId === 'boar') { LK.getSound('domuz_vurma').play(); } // Geyik vurulduysa sesi çal if (animal.assetId === 'deer') { LK.getSound('domuz_vurma').play(); } // Fare veya tavşan vurulduysa sesi çal if (animal.assetId === 'mouse' || animal.assetId === 'rabbit') { LK.getSound('fare_vurma').play(); } // Hayvanı yok et ve yenisini oluştur animal.destroy(); animals.splice(i, 1); // Yeni hayvanı tekrar eklerken: fare ve tavşan daha fazla, geyik ve domuz daha az olacak şekilde var margin = 200; if (animal.assetId === 'deer') { // 1 geyik spawnla var newAnimal = new Deer(); newAnimal.x = margin + Math.random() * (2048 - 2 * margin); newAnimal.y = 400 + Math.random() * 1800; animals.push(newAnimal); game.addChild(newAnimal); } else if (animal.assetId === 'boar') { // 1 domuz spawnla var newAnimal = new Boar(); newAnimal.x = margin + Math.random() * (2048 - 2 * margin); newAnimal.y = 400 + Math.random() * 1800; animals.push(newAnimal); game.addChild(newAnimal); } else if (animal.assetId === 'rabbit') { // 2 tavşan spawnla for (var ri = 0; ri < 2; ri++) { var newRabbit = new Rabbit(); newRabbit.x = margin + Math.random() * (2048 - 2 * margin); newRabbit.y = 400 + Math.random() * 1800; animals.push(newRabbit); game.addChild(newRabbit); } } else { // 2 fare spawnla for (var mi = 0; mi < 2; mi++) { var newMouse = new Mouse(); newMouse.x = margin + Math.random() * (2048 - 2 * margin); newMouse.y = 400 + Math.random() * 1800; animals.push(newMouse); game.addChild(newMouse); } } // Vurulan hayvanı kısa bir renk efektiyle göster LK.effects.flashObject(newAnimal, 0xffffff, 200); // Oku yok et arrowObj.destroy(); arrows.splice(a, 1); // Skor 50 veya üstü ise oyunu bitir if (LK.getScore() >= 50) { LK.getSound('kazan_mak').play(); LK.showYouWin(); return; } break; // Bu ok başka hayvanı vuramaz, döngüden çık } } } }; // Okun sabit pozisyonda görünmesi için move/up eventlerine gerek yok. // Oyun sadece dokunma ile ok fırlatıyor ve ok uçarken tekrar atılamıyor.
===================================================================
--- original.js
+++ change.js
@@ -168,18 +168,18 @@
boar.y = 900 + Math.random() * 600;
animals.push(boar);
game.addChild(boar);
}
- // 2 tavşan
- for (var i = 0; i < 2; i++) {
+ // 3 tavşan
+ for (var i = 0; i < 3; i++) {
var rabbit = new Rabbit();
rabbit.x = margin + Math.random() * (2048 - 2 * margin);
rabbit.y = 1200 + Math.random() * 600;
animals.push(rabbit);
game.addChild(rabbit);
}
- // 2 fare
- for (var i = 0; i < 2; i++) {
+ // 4 fare
+ for (var i = 0; i < 4; i++) {
var mouse = new Mouse();
mouse.x = margin + Math.random() * (2048 - 2 * margin);
mouse.y = 1500 + Math.random() * 600;
animals.push(mouse);
ok istiyorum eski zamanlarda hayvan avalrken kullanılan oklardan. In-Game asset. 2d. High contrast. No shadows
tatlı bir pembe domuz. In-Game asset. 2d. High contrast. No shadows
avcılıkta kullanılan yay. In-Game asset. 2d. High contrast. No shadows
tatlı bir ceylan. In-Game asset. 2d. High contrast. No shadows
tatlı bir beyaz fare. In-Game asset. 2d. High contrast. No shadows
tatli bir siyah beyaz tavşan. In-Game asset. 2d. High contrast. No shadows