User prompt
Please fix the bug: 'CustomerFemale is not defined' in or related to this line: 'customer = new CustomerFemale();' Line Number: 323
User prompt
Please fix the bug: 'CustomerFemale is not defined' in or related to this line: 'customer = new CustomerFemale();' Line Number: 323
User prompt
Please fix the bug: 'Customer is not defined' in or related to this line: 'customer = new Customer();' Line Number: 309
User prompt
Please fix the bug: 'CustomerFemale is not defined' in or related to this line: 'customer = new CustomerFemale();' Line Number: 311
User prompt
Sorunu düzeltir misin
User prompt
Please fix the bug: 'IngredientButton is not defined' in or related to this line: 'var btn = new IngredientButton();' Line Number: 375
User prompt
Yeniden aynı işlemleri yap
User prompt
Assetini oluştur
User prompt
Ve birde oyunda %50 ihtimalle bir kadın %50 ihtimalle bir erkek gelecek onu da yapar mısın zaten ilk normal yaptığını erkek yaptım aynısından bi tane daha oluştur
User prompt
Ve bide malzeme butonlarının altındaki yazıları siyah renkte yaz
User prompt
Pişir butonunun yanına içecek hazırlama butonunu koy
User prompt
Bide sipariş yerinin alt kısmına koy
User prompt
Pişirme butonunu sürenin ve siparişin yazdığı yerin altına koy
User prompt
Hayır o arka kısım kare olacak ve bütün herşeyi içine sığdıracak
User prompt
Ama malzeme , pişirme gibi yerlerin arkasını kahverengş yap
User prompt
Arka planı yeşil yap
User prompt
İçecek hazırlama tuşunu düzelt
User prompt
Hayır içecek hazırlama tuşunu pişir butonunun üst kısmına koy
User prompt
Pişir butonunu içecek hazırlama tuşunun üstüne koy
User prompt
Hayır hem pişirme falan her zaman orada olacak yani pişirilmesi gereken yemek falan geldiginde sadece o zaman pişir çıkmayacak aynısı içecek için geçerli ve içecek hazırlama düğmesini düzelt ve pişirme yarçnin üstüne koy
User prompt
Pişir butonu çalışmıyor
User prompt
Ama mesela nelerin pişirileceğini falan yaz
User prompt
Butonları ekrana daha çok sığdır mesela bazılarını üst üst e koy
/**** * Classes ****/ // --- Customer Sınıfı --- var Customer = Container.expand(function () { var self = Container.call(this); // Erkek müşteri asset'i var asset = self.attachAsset('customer', { anchorX: 0.5, anchorY: 0.5, width: 300, height: 300 }); return self; }); // --- CustomerFemale Sınıfı --- var CustomerFemale = Container.expand(function () { var self = Container.call(this); // Kadın müşteri asset'i var asset = self.attachAsset('customer_female', { anchorX: 0.5, anchorY: 0.5, width: 300, height: 300 }); return self; }); // --- IngredientButton Sınıfı --- var IngredientButton = Container.expand(function () { var self = Container.call(this); self.ingredient = null; self.selected = false; // Malzeme asset'i ve yazısı var asset = null; var label = null; // Malzeme atama fonksiyonu self.setIngredient = function (ingredient) { self.ingredient = ingredient; // Önce eski asset ve label'ı sil if (asset) { self.removeChild(asset); asset.destroy(); } if (label) { self.removeChild(label); label.destroy(); } // Asset oluştur asset = self.attachAsset('ingredient_' + ingredient.id, { anchorX: 0.5, anchorY: 0.5, width: 200, height: 100, color: ingredient.color }); // Malzeme adı (altında, siyah renkte) label = new Text2(ingredient.name, { size: 44, fill: "#111" // Siyah yazı }); label.anchor.set(0.5, 0); label.y = 70; self.addChild(label); }; // Seçili görsel efekti self.update = function () { if (self.selected) { self.alpha = 0.6; } else { self.alpha = 1; } }; // Butona basınca seçili hale getir self.down = function (x, y, obj) { if (!self.ingredient) return; // Seçiliyse kaldır, değilse ekle if (self.selected) { self.selected = false; // Seçili malzemelerden çıkar var idx = selectedIngredients.indexOf(self.ingredient.id); if (idx !== -1) selectedIngredients.splice(idx, 1); } else { self.selected = true; selectedIngredients.push(self.ingredient.id); } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x00ff00 }); /**** * Game Code ****/ // Malzeme ve siparişler için örnek veri // --- Oyun için temel değişkenler ve sınıflar --- var INGREDIENTS = [{ id: 'lettuce', name: 'Marul', color: 0x7ed957 }, { id: 'tomato', name: 'Domates', color: 0xff4b4b }, { id: 'cheese', name: 'Peynir', color: 0xffe066 }, { id: 'meat', name: 'Et', color: 0x8b5c2a }, { id: 'onion', name: 'Soğan', color: 0xe0c97f }, { id: 'cucumber', name: 'Salatalık', color: 0x6ecb63 }, { id: 'egg', name: 'Yumurta', color: 0xf7e7b0 }, { id: 'chicken', name: 'Tavuk', color: 0xf5c16c }, { id: 'bread', name: 'Ekmek', color: 0xf5e6b2 }]; var RECIPES = [{ name: 'Burger', ingredients: ['lettuce', 'tomato', 'cheese', 'meat'], type: 'cook' }, { name: 'Salata', ingredients: ['lettuce', 'tomato', 'cheese'], type: 'normal' }, { name: 'Peynirli Sandviç', ingredients: ['cheese', 'lettuce', 'tomato', 'bread'], type: 'normal' }, { name: 'Etli Sandviç', ingredients: ['meat', 'cheese', 'lettuce', 'bread'], type: 'cook' }, { name: 'Domatesli Salata', ingredients: ['lettuce', 'tomato'], type: 'normal' }, { name: 'Tavuklu Salata', ingredients: ['lettuce', 'tomato', 'chicken', 'cucumber'], type: 'normal' }, { name: 'Yumurtalı Salata', ingredients: ['lettuce', 'egg', 'tomato', 'onion'], type: 'cook' }, { name: 'Tavuklu Sandviç', ingredients: ['chicken', 'cheese', 'lettuce', 'bread'], type: 'cook' }, { name: 'Sebzeli Sandviç', ingredients: ['lettuce', 'tomato', 'cucumber', 'bread'], type: 'normal' }, { name: 'Soğanlı Burger', ingredients: ['meat', 'cheese', 'onion', 'bread'], type: 'cook' }, // Drinks { name: 'Limonata', ingredients: ['lemon', 'water', 'sugar'], type: 'drink' }, { name: 'Soğuk Çay', ingredients: ['tea', 'water', 'sugar', 'lemon'], type: 'drink' }, { name: 'Ayran', ingredients: ['yogurt', 'water', 'salt'], type: 'drink' }]; // Ekstra içecek ve pişirme malzemeleri if (!INGREDIENTS.find(function (i) { return i.id === 'lemon'; })) INGREDIENTS.push({ id: 'lemon', name: 'Limon', color: 0xfff700 }); if (!INGREDIENTS.find(function (i) { return i.id === 'water'; })) INGREDIENTS.push({ id: 'water', name: 'Su', color: 0x8fd3f4 }); if (!INGREDIENTS.find(function (i) { return i.id === 'sugar'; })) INGREDIENTS.push({ id: 'sugar', name: 'Şeker', color: 0xffffff }); if (!INGREDIENTS.find(function (i) { return i.id === 'tea'; })) INGREDIENTS.push({ id: 'tea', name: 'Çay', color: 0x7b3f00 }); if (!INGREDIENTS.find(function (i) { return i.id === 'yogurt'; })) INGREDIENTS.push({ id: 'yogurt', name: 'Yoğurt', color: 0xfafafa }); if (!INGREDIENTS.find(function (i) { return i.id === 'salt'; })) INGREDIENTS.push({ id: 'salt', name: 'Tuz', color: 0xe0e0e0 }); var currentOrder = null; var selectedIngredients = []; var customer = null; var ingredientButtons = []; var score = 0; var orderTimer = null; var orderTimeLimit = 30000; // ms, 30 saniye var orderTimeLeft = orderTimeLimit; var orderText = null; var scoreText = null; var timerText = null; // --- Sipariş oluşturma ve gösterme --- function newOrder() { // Sipariş ve seçili malzemeleri sıfırla selectedIngredients = []; for (var i = 0; i < ingredientButtons.length; i++) { ingredientButtons[i].selected = false; ingredientButtons[i].alpha = 1; } // Rastgele sipariş seç currentOrder = RECIPES[Math.floor(Math.random() * RECIPES.length)]; if (orderText) orderText.destroy(); orderText = new Text2("Sipariş: " + currentOrder.name, { size: 90, fill: "#fff" }); orderText.anchor.set(0.5, 0); // orderText'i deliverBtn'in hemen altına yerleştir orderText.x = 2048 / 2; orderText.y = deliverBtn.y + deliverBtn.height / 2 + 30; game.addChild(orderText); // Pişir ve içecek hazırla butonları her zaman görünür, sadece ilgili siparişlerde aktif olur if (typeof cookBtn !== "undefined" && cookBtn) { cookBtn.visible = true; cookBtn.alpha = currentOrder.type === 'cook' ? 1 : 0.5; cookBtn.interactive = currentOrder.type === 'cook'; } if (typeof drinkBtn !== "undefined" && drinkBtn) { drinkBtn.visible = true; drinkBtn.alpha = currentOrder.type === 'drink' ? 1 : 0.5; drinkBtn.interactive = currentOrder.type === 'drink'; } // Zamanı başlat orderTimeLeft = orderTimeLimit; if (timerText) timerText.destroy(); timerText = new Text2("Süre: " + Math.floor(orderTimeLeft / 1000), { size: 80, fill: "#fff" }); timerText.anchor.set(0.5, 0); // timerText'i orderText'in hemen altına yerleştir timerText.x = 2048 / 2; timerText.y = orderText.y + orderText.height + 10; game.addChild(timerText); // Müşteri oluştur if (customer) customer.destroy(); if (Math.random() < 0.5) { customer = new Customer(); } else { customer = new CustomerFemale(); } customer.x = 2048 / 2; customer.y = 600; game.addChild(customer); // Zamanlayıcı başlat if (orderTimer) LK.clearInterval(orderTimer); orderTimer = LK.setInterval(function () { orderTimeLeft -= 100; if (timerText) timerText.setText("Süre: " + Math.ceil(orderTimeLeft / 1000)); if (orderTimeLeft <= 0) { LK.clearInterval(orderTimer); failOrder(); } }, 100); } // --- Pişir ve içecek hazırla butonları için global değişkenler --- window.cooked = false; window.drinkReady = false; // --- Cook button logic --- // cookBtn, startGame'de oluşturuluyor, bu yüzden fonksiyonu orada atayacağız function setCookBtnHandler() { if (typeof cookBtn !== "undefined" && cookBtn) { cookBtn.down = function (x, y, obj) { if (!currentOrder || currentOrder.type !== 'cook') return; if (selectedIngredients.length !== currentOrder.ingredients.length) { LK.effects.flashScreen(0xffa500, 400); return; } // Sıralı ve tam malzeme kontrolü var correct = true; for (var i = 0; i < currentOrder.ingredients.length; i++) { if (selectedIngredients[i] !== currentOrder.ingredients[i]) { correct = false; break; } } if (correct) { window.cooked = true; LK.effects.flashObject(cookBtn, 0x00ff00, 600); } else { LK.effects.flashObject(cookBtn, 0xff0000, 600); } }; } } // --- Drink button logic --- // (Artık handler sadece startGame içinde atanıyor, burada tekrar atama yok) // --- Siparişi kontrol et --- function checkOrder() { if (!currentOrder) return; // Pişirme veya içecek hazırlama gerektiriyorsa, önce o işlem yapılmalı if (currentOrder.type === 'cook' && !window.cooked) { LK.effects.flashScreen(0xffa500, 400); return; } if (currentOrder.type === 'drink' && !window.drinkReady) { LK.effects.flashScreen(0x8fd3f4, 400); return; } var correct = true; if (selectedIngredients.length !== currentOrder.ingredients.length) correct = false;else { for (var i = 0; i < currentOrder.ingredients.length; i++) { if (selectedIngredients[i] !== currentOrder.ingredients[i]) { correct = false; break; } } } if (correct) { score += 10; if (scoreText) scoreText.setText("Puan: " + score); LK.effects.flashScreen(0x00ff00, 400); LK.clearInterval(orderTimer); window.cooked = false; window.drinkReady = false; LK.setTimeout(newOrder, 800); } else { failOrder(); window.cooked = false; window.drinkReady = false; } } // --- Sipariş başarısız --- function failOrder() { LK.effects.flashScreen(0xff0000, 400); LK.clearInterval(orderTimer); score -= 5; if (score < 0) score = 0; if (scoreText) scoreText.setText("Puan: " + score); LK.setTimeout(newOrder, 800); } // --- Oyun başlat --- function startGame() { // Skor gösterimi if (scoreText) scoreText.destroy(); scoreText = new Text2("Puan: 0", { size: 90, fill: "#fff" }); scoreText.anchor.set(0.5, 0); LK.gui.top.addChild(scoreText); // Malzeme butonlarını oluştur for (var i = 0; i < ingredientButtons.length; i++) { ingredientButtons[i].destroy(); } ingredientButtons = []; // Mobilde ekranın altına ve ortalanmış şekilde butonları 2 satırda yerleştir var buttonAreaY = 2732 - 270; // Alt kısımda, deliverBtn'in üstünde, biraz daha yukarı var buttonSize = 170; // Daha küçük butonlar var spacing = 38; // Daha az boşluk var buttonsPerRow = Math.ceil(INGREDIENTS.length / 2); var totalWidth = buttonsPerRow * buttonSize + (buttonsPerRow - 1) * spacing; var startX = 2048 / 2 - totalWidth / 2 + buttonSize / 2; for (var i = 0; i < INGREDIENTS.length; i++) { var btn = new IngredientButton(); btn.setIngredient(INGREDIENTS[i]); var row = Math.floor(i / buttonsPerRow); var col = i % buttonsPerRow; btn.x = startX + col * (buttonSize + spacing); btn.y = buttonAreaY - row * (buttonSize + 40); // 2. satır yukarıda btn.scaleX = btn.scaleY = buttonSize / 200; // IngredientButton asset boyutu 200, orantılı küçült ingredientButtons.push(btn); game.addChild(btn); } // Pişir ve İçecek Hazırla butonları if (typeof cookBtn !== "undefined" && cookBtn) cookBtn.destroy(); if (typeof drinkBtn !== "undefined" && drinkBtn) drinkBtn.destroy(); // Butonları yan yana, orderText'in hemen altına ortalanmış şekilde yerleştir drinkBtn = new Container(); var drinkAsset = drinkBtn.attachAsset('ingredient_water', { anchorX: 0.5, anchorY: 0.5, width: 200, height: 100, color: 0x8fd3f4 }); var drinkText = new Text2("İçecek Hazırla", { size: 44, fill: "#222" }); drinkText.anchor.set(0.5, 0.5); drinkBtn.addChild(drinkText); cookBtn = new Container(); var cookAsset = cookBtn.attachAsset('ingredient_meat', { anchorX: 0.5, anchorY: 0.5, width: 200, height: 100, color: 0xffa500 }); var cookText = new Text2("Pişir", { size: 54, fill: "#fff" }); cookText.anchor.set(0.5, 0.5); cookBtn.addChild(cookText); // Ortak y koordinatı: orderText'in hemen altı var btnsY = 0; if (orderText && orderText.y !== undefined && orderText.height !== undefined) { btnsY = orderText.y + orderText.height + 40; } else if (timerText && timerText.y !== undefined && timerText.height !== undefined) { btnsY = timerText.y + timerText.height + 40; } else { btnsY = 600 + 150 + 60 + 200; } // Yan yana, ortalanmış şekilde x koordinatları var btnSpacing = 60; var btnWidth = 200; var totalBtnsWidth = btnWidth * 2 + btnSpacing; var startX = 2048 / 2 - totalBtnsWidth / 2 + btnWidth / 2; cookBtn.x = startX; cookBtn.y = btnsY; cookBtn.visible = true; game.addChild(cookBtn); drinkBtn.x = startX + btnWidth + btnSpacing; drinkBtn.y = btnsY; drinkBtn.visible = true; game.addChild(drinkBtn); setCookBtnHandler(); // Drink butonunun handler'ını burada atıyoruz (her zaman çalışır) drinkBtn.down = function (x, y, obj) { if (!currentOrder || currentOrder.type !== 'drink') return; if (selectedIngredients.length !== currentOrder.ingredients.length) { LK.effects.flashScreen(0x8fd3f4, 400); return; } // Sıralı ve tam malzeme kontrolü var correct = true; for (var i = 0; i < currentOrder.ingredients.length; i++) { if (selectedIngredients[i] !== currentOrder.ingredients[i]) { correct = false; break; } } if (correct) { window.drinkReady = true; LK.effects.flashObject(drinkBtn, 0x00ff00, 600); } else { LK.effects.flashObject(drinkBtn, 0xff0000, 600); } }; // Sipariş başlat newOrder(); } // --- Teslim et butonu --- var deliverBtn = new Container(); var deliverAsset = deliverBtn.attachAsset('deliver', { anchorX: 0.5, anchorY: 0.5, width: 300, height: 120, color: 0x4b8cff }); var deliverText = new Text2("Teslim Et", { size: 70, fill: "#fff" }); deliverText.anchor.set(0.5, 0.5); deliverBtn.addChild(deliverText); deliverBtn.x = 2048 / 2; // Müşterinin hemen altına yerleştir (müşteri 600'de, yüksekliği 300, biraz boşluk ekle) deliverBtn.y = 600 + 150 + 60; // customer.y + customer.height/2 + margin deliverBtn.down = function (x, y, obj) { checkOrder(); }; game.addChild(deliverBtn); // --- Tarif Kitabı (Recipe Book) --- // Tarif kitabı paneli (tam ekran, başta gizli) var recipeBookPanel = new Container(); var recipeBookBg = recipeBookPanel.attachAsset('ingredient_lettuce', { anchorX: 0.5, anchorY: 0.5, width: 2048, height: 2732, color: 0xfafafa }); recipeBookPanel.x = 2048 / 2; recipeBookPanel.y = 2732 / 2; recipeBookPanel.visible = false; // Panel başlığı var recipeTitle = new Text2("Tarifler", { size: 110, fill: "#222" }); recipeTitle.anchor.set(0.5, 0); recipeTitle.y = -1100; recipeBookPanel.addChild(recipeTitle); // Tarifleri listele var yStart = recipeTitle.y + 180; var recipeLineSpacing = 100; for (var i = 0; i < RECIPES.length; i++) { var recipe = RECIPES[i]; var recipeStr = recipe.name + ": "; for (var j = 0; j < recipe.ingredients.length; j++) { var ing = INGREDIENTS.find(function (x) { return x.id === recipe.ingredients[j]; }); recipeStr += ing ? ing.name : recipe.ingredients[j]; if (j < recipe.ingredients.length - 1) recipeStr += ", "; } // Pişirme veya içecek gerektiriyorsa belirt if (recipe.type === 'cook') { recipeStr += " [Pişirilmeli]"; } else if (recipe.type === 'drink') { recipeStr += " [İçecek Hazırlanmalı]"; } var recipeLine = new Text2(recipeStr, { size: 80, fill: "#333" }); recipeLine.anchor.set(0.5, 0); recipeLine.y = yStart + i * recipeLineSpacing; recipeBookPanel.addChild(recipeLine); } // Kapatma butonu (büyük, üstte) var closeBtn = new Container(); var closeBtnAsset = closeBtn.attachAsset('ingredient_tomato', { anchorX: 0.5, anchorY: 0.5, width: 160, height: 160, color: 0xff4b4b }); var closeBtnText = new Text2("Kapat", { size: 48, fill: "#fff" }); closeBtnText.anchor.set(0.5, 0.5); closeBtn.addChild(closeBtnText); closeBtn.x = 0; closeBtn.y = -1200; closeBtn.down = function (x, y, obj) { recipeBookPanel.visible = false; }; recipeBookPanel.addChild(closeBtn); // Paneli oyuna ekle (en üstte olacak şekilde) game.addChild(recipeBookPanel); // Her frame'de recipeBookPanel'i en üste taşı game.update = function (origUpdate) { return function () { // Panel görünürse, en üste taşı if (recipeBookPanel && recipeBookPanel.visible) { // En üste taşımak için önce çıkarıp tekrar ekle if (recipeBookPanel.parent) { recipeBookPanel.parent.removeChild(recipeBookPanel); game.addChild(recipeBookPanel); } } if (typeof origUpdate === "function") origUpdate.call(game); }; }(game.update); // Tarif kitabı açma butonu (her zaman görünür, ekranın sağ üstünde, tarif paneli açıkken gizli) var recipeBookBtn = new Container(); var recipeBookBtnAsset = recipeBookBtn.attachAsset('ingredient_cheese', { anchorX: 0.5, anchorY: 0.5, width: 140, height: 140, color: 0xffe066 }); var recipeBookBtnText = new Text2("Tarifler", { size: 44, fill: "#222" }); recipeBookBtnText.anchor.set(0.5, 0.5); recipeBookBtn.addChild(recipeBookBtnText); // Sağ üstte, platform menüsüne çakışmayacak şekilde (ilk 100x100 px boş bırak) recipeBookBtn.x = 2048 - 160; recipeBookBtn.y = 100 + 70; recipeBookBtn.down = function (x, y, obj) { recipeBookPanel.visible = true; recipeBookBtn.visible = false; // Diğer etkileşimli elemanları gizle deliverBtn.visible = false; for (var i = 0; i < ingredientButtons.length; i++) { ingredientButtons[i].visible = false; } if (customer) customer.visible = false; if (orderText) orderText.visible = false; if (timerText) timerText.visible = false; }; // Panel açıldığında kapatma butonuna basınca tekrar göster closeBtn.down = function (x, y, obj) { recipeBookPanel.visible = false; recipeBookBtn.visible = true; // Diğer etkileşimli elemanları tekrar göster deliverBtn.visible = true; for (var i = 0; i < ingredientButtons.length; i++) { ingredientButtons[i].visible = true; } if (customer) customer.visible = true; if (orderText) orderText.visible = true; if (timerText) timerText.visible = true; }; game.addChild(recipeBookBtn); // --- Oyunu başlat --- startGame(); ;
===================================================================
--- original.js
+++ change.js
@@ -12,8 +12,20 @@
height: 300
});
return self;
});
+// --- CustomerFemale Sınıfı ---
+var CustomerFemale = Container.expand(function () {
+ var self = Container.call(this);
+ // Kadın müşteri asset'i
+ var asset = self.attachAsset('customer_female', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ width: 300,
+ height: 300
+ });
+ return self;
+});
// --- IngredientButton Sınıfı ---
var IngredientButton = Container.expand(function () {
var self = Container.call(this);
self.ingredient = null;