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 () { // Son pozisyonları sakla if (self.lastX === undefined) self.lastX = self.x; if (self.lastY === undefined) self.lastY = self.y; // Son pozisyonları sakla if (self.lastX === undefined) self.lastX = self.x; if (self.lastY === undefined) self.lastY = self.y; self.x += self.dirX * self.speed; self.y += self.dirY * self.speed; // Kenara çarptı mı kontrol et (ekran dışına çıktıysa yok et) var margin = 40; var outLeft = self.lastX >= margin && self.x < margin; var outRight = self.lastX <= 2048 - margin && self.x > 2048 - margin; var outTop = self.lastY >= 200 && self.y < 200; var outBottom = self.lastY <= 2732 - margin && self.y > 2732 - margin; // Boar ve Deer için kenara çarpınca yok olmasın, sadece yön değiştir if (self.assetId === 'boar' || self.assetId === 'deer') { if (outLeft || outRight || outTop || outBottom) { self.bounceIfNeeded(); } } else { if (outLeft || outRight || outTop || outBottom) { // Kendini yok et ve yeni bir hayvan doğur (sadece fare ve tavşan için) if (typeof animals !== "undefined" && typeof game !== "undefined") { for (var i = animals.length - 1; i >= 0; i--) { if (animals[i] === self) { animals.splice(i, 1); break; } } self.destroy(); var margin2 = 200; var newAnimal; if (self.assetId === 'rabbit') { newAnimal = new Rabbit(); newAnimal.x = margin2 + Math.random() * (2048 - 2 * margin2); newAnimal.y = 1200 + Math.random() * 600; } else { newAnimal = new Mouse(); newAnimal.x = margin2 + Math.random() * (2048 - 2 * margin2); newAnimal.y = 1500 + Math.random() * 600; } animals.push(newAnimal); game.addChild(newAnimal); } return; } } self.bounceIfNeeded(); self.lastX = self.x; self.lastY = self.y; self.lastX = self.x; self.lastY = self.y; }; return self; }); // Tavşan (Rabbit) var Rabbit = Animal.expand(function () { var self = Animal.call(this); self.assetId = 'rabbit'; self.point = 2; 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 = 1; 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 ****/ // Hayvan ve ok görselleri kullanıcı tarafından eklenecektir. Şimdilik placeholder şekiller kullanıyoruz. // Skor göstergesi 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() { // Her türden bir tane başlat, toplam 4 hayvan var margin = 200; var deer = new Deer(); deer.x = margin + Math.random() * (2048 - 2 * margin); deer.y = 600 + Math.random() * 600; animals.push(deer); game.addChild(deer); var boar = new Boar(); boar.x = margin + Math.random() * (2048 - 2 * margin); boar.y = 900 + Math.random() * 600; animals.push(boar); game.addChild(boar); var rabbit = new Rabbit(); rabbit.x = margin + Math.random() * (2048 - 2 * margin); rabbit.y = 1200 + Math.random() * 600; animals.push(rabbit); game.addChild(rabbit); 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(); // Hayvanı yok et ve yenisini oluştur animal.destroy(); animals.splice(i, 1); // Yeni hayvanı aynı türden ekle var newAnimal; if (animal.assetId === 'deer') { newAnimal = new Deer(); } else if (animal.assetId === 'boar') { newAnimal = new Boar(); } else if (animal.assetId === 'rabbit') { newAnimal = new Rabbit(); } else { newAnimal = new Mouse(); } // Rastgele konum var margin = 200; newAnimal.x = margin + Math.random() * (2048 - 2 * margin); newAnimal.y = 400 + Math.random() * 1800; animals.push(newAnimal); game.addChild(newAnimal); // 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.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
@@ -44,51 +44,40 @@
var outLeft = self.lastX >= margin && self.x < margin;
var outRight = self.lastX <= 2048 - margin && self.x > 2048 - margin;
var outTop = self.lastY >= 200 && self.y < 200;
var outBottom = self.lastY <= 2732 - margin && self.y > 2732 - margin;
- if (outLeft || outRight || outTop || outBottom) {
- // Kendini yok et ve yeni bir Boar doğur
- if (typeof animals !== "undefined" && typeof game !== "undefined") {
- for (var i = animals.length - 1; i >= 0; i--) {
- if (animals[i] === self) {
- animals.splice(i, 1);
- break;
- }
- }
- self.destroy();
- var margin2 = 200;
- var newBoar = new Boar();
- newBoar.x = margin2 + Math.random() * (2048 - 2 * margin2);
- newBoar.y = 900 + Math.random() * 600;
- animals.push(newBoar);
- game.addChild(newBoar);
+ // Boar ve Deer için kenara çarpınca yok olmasın, sadece yön değiştir
+ if (self.assetId === 'boar' || self.assetId === 'deer') {
+ if (outLeft || outRight || outTop || outBottom) {
+ self.bounceIfNeeded();
}
- return;
- }
- // Kenara çarptı mı kontrol et (ekran dışına çıktıysa yok et)
- var margin = 40;
- var outLeft = self.lastX >= margin && self.x < margin;
- var outRight = self.lastX <= 2048 - margin && self.x > 2048 - margin;
- var outTop = self.lastY >= 200 && self.y < 200;
- var outBottom = self.lastY <= 2732 - margin && self.y > 2732 - margin;
- if (outLeft || outRight || outTop || outBottom) {
- // Kendini yok et ve yeni bir Deer doğur
- if (typeof animals !== "undefined" && typeof game !== "undefined") {
- for (var i = animals.length - 1; i >= 0; i--) {
- if (animals[i] === self) {
- animals.splice(i, 1);
- break;
+ } else {
+ if (outLeft || outRight || outTop || outBottom) {
+ // Kendini yok et ve yeni bir hayvan doğur (sadece fare ve tavşan için)
+ if (typeof animals !== "undefined" && typeof game !== "undefined") {
+ for (var i = animals.length - 1; i >= 0; i--) {
+ if (animals[i] === self) {
+ animals.splice(i, 1);
+ break;
+ }
}
+ self.destroy();
+ var margin2 = 200;
+ var newAnimal;
+ if (self.assetId === 'rabbit') {
+ newAnimal = new Rabbit();
+ newAnimal.x = margin2 + Math.random() * (2048 - 2 * margin2);
+ newAnimal.y = 1200 + Math.random() * 600;
+ } else {
+ newAnimal = new Mouse();
+ newAnimal.x = margin2 + Math.random() * (2048 - 2 * margin2);
+ newAnimal.y = 1500 + Math.random() * 600;
+ }
+ animals.push(newAnimal);
+ game.addChild(newAnimal);
}
- self.destroy();
- var margin2 = 200;
- var newDeer = new Deer();
- newDeer.x = margin2 + Math.random() * (2048 - 2 * margin2);
- newDeer.y = 600 + Math.random() * 600;
- animals.push(newDeer);
- game.addChild(newDeer);
+ return;
}
- return;
}
self.bounceIfNeeded();
self.lastX = self.x;
self.lastY = self.y;
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