Code edit (2 edits merged)
Please save this source code
User prompt
Tamam şimdi geri eski hâline alabilirsin
User prompt
Şimdilik müşteri doğma hızını 9 katına çıkarabilir misin
Code edit (3 edits merged)
Please save this source code
User prompt
Hâlâ bir sıkıntı var gibi. Yerlerinde hiçbir değişiklik olmuyor. Hep eski queue arenın olduğu yere gidiyorlar
Code edit (1 edits merged)
Please save this source code
User prompt
Şunu fark ettim müşteriler queue area ya gitmiyor ki. Müşterilerin sıraya girme konumlarını queue ara yapabilir misin
User prompt
Queue areyı yine görünür yapabilir misin
Code edit (1 edits merged)
Please save this source code
User prompt
Biraz daha sola
User prompt
Hiçbir değişiklik olmuyor. Müçteriler hep aynı yerde duruyorlar. Ben daha sılda durmalarını istiyorum
User prompt
Queue area ile birlikte mğşterilerin durduğu yer de değişsin
User prompt
Biraz daha sola
User prompt
Queue area'yı birazcık sola alabilir misin
User prompt
Qeue area'nın gözükmesini istemiyorum
User prompt
Biraz daha aşağıya
User prompt
Biraz daha aşağıya ve sola
User prompt
Müşteriler ürünlerini yatay değil onun yerine dikey bıraksın. Aşağıya doğru yani
Code edit (1 edits merged)
Please save this source code
User prompt
Olmadı. Galiba upset müşterilerin titremesi dışında hareket etmesini engelleyen bir kod var
User prompt
Bir müşteri upset ise ve ürünleri upset olduktan sonra ödenmişse rengi aynı kalsın ama titremeyi bıraksın ve normal bir şekilde marketten çıksın ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Öncelikle şunu ekle: bir müşterinin ürünleri ödendikten sonra upset olamasın
User prompt
Bu son yaptığın değişiklikleri geri alabilir misin
User prompt
Birde müşterilere şunu ekle: customer.leave gibi. Bu; müşterinin ürünleri ödendikten true olsun. Bu true olduğunda yani müşteri dışarı doğru ilerlemeye başladığında upset olamasın.
User prompt
Ürünlere tıkladıktan sonra renklerinin saydam olmasını istiyorum (şuan tıkladığımda yeşil oluyor) ↪💡 Consider importing and using the following plugins: @upit/tween.v1
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Customer = Container.expand(function () { var self = Container.call(this); var graphics = self.attachAsset('customer', { anchorX: 0.5, anchorY: 1 }); self.items = []; self.currentItemIndex = 0; self.isBeingServed = false; self.patience = 100; self.maxPatience = 100; self.waitTime = 0; self.isShopping = true; self.targetShelf = null; self.itemsToCollect = Math.floor(Math.random() * 3) + 2; self.upset = false; self.angry = false; self.upsetStartTime = 0; self.paid = false; self.placeItemsOnCounter = function () { var startX = 1024 - self.items.length * 100 / 2; for (var i = 0; i < self.items.length; i++) { var item = self.items[i]; item.x = startX + i * 100; item.y = counterY - 150; // Place items on top of cash register game.addChild(item); } }; self.allItemsScanned = function () { for (var i = 0; i < self.items.length; i++) { if (!self.items[i].scanned) { return false; } } return true; }; self.getTotalValue = function () { var total = 0; for (var i = 0; i < self.items.length; i++) { total += self.items[i].value; } return total; }; self.completeTransaction = function () { // Mark customer as paid self.paid = true; // If customer was upset, stop shaking animation if (self.upset) { tween.stop(self, { x: true }); self.x = self.originalX; } // Remove items from counter for (var i = 0; i < self.items.length; i++) { if (self.items[i].parent) { self.items[i].destroy(); } } // Add to score LK.setScore(LK.getScore() + self.getTotalValue()); scoreTxt.setText('Score: ' + LK.getScore()); // Play sound LK.getSound('cashRegister').play(); // Move customer out tween(self, { x: -200 }, { duration: 1000, onFinish: function onFinish() { self.destroy(); } }); }; self.collectItemFromShelf = function () { if (self.items.length < self.itemsToCollect && self.targetShelf) { if (self.targetShelf.takeProduct()) { var product = new Product(); self.items.push(product); // Visual feedback tween(graphics, { scaleX: 1.2, scaleY: 1.2 }, { duration: 200, onFinish: function onFinish() { tween(graphics, { scaleX: 1, scaleY: 1 }, { duration: 200 }); } }); } } }; self.update = function () { // Track wait time for customers being served if (self.isBeingServed && !self.upset && !self.angry && !self.paid) { self.waitTime++; // Check if customer should become upset (5 seconds = 300 frames at 60fps) if (self.waitTime >= 300) { self.upset = true; self.upsetStartTime = 0; // Change color to indicate upset state (slightly darker) graphics.tint = 0x888888; // Start shaking animation self.originalX = self.x; self.shakeAnimation = function () { if (self.upset && !self.angry && !self.paid) { tween(self, { x: self.originalX + (Math.random() - 0.5) * 20 }, { duration: 100, onFinish: function onFinish() { if (self.upset && !self.angry && !self.paid) { self.shakeAnimation(); } } }); } }; self.shakeAnimation(); } } // Track upset time and transition to angry (only if not paid) if (self.upset && !self.angry && !self.paid) { self.upsetStartTime++; // Check if customer should become angry (3 seconds = 180 frames at 60fps) if (self.upsetStartTime >= 180) { self.angry = true; // Stop shaking animation tween.stop(self, { x: true }); self.x = self.originalX; // Change color to red when angry graphics.tint = 0xFF0000; // Remove items from counter when angry customer leaves for (var i = 0; i < self.items.length; i++) { if (self.items[i].parent) { self.items[i].destroy(); } } // Make angry customer leave the store tween(self, { x: -200 }, { duration: 1000, onFinish: function onFinish() { self.destroy(); } }); } } }; return self; }); var Product = Container.expand(function () { var self = Container.call(this); var graphics = self.attachAsset('product', { anchorX: 0.5, anchorY: 0.5 }); self.scanned = false; self.value = Math.floor(Math.random() * 5) + 1; // Random value 1-5 // Visual feedback for scanned items self.scan = function () { if (!self.scanned) { self.scanned = true; graphics.alpha = 0.5; // Make transparent when scanned LK.getSound('itemScan').play(); } }; self.down = function (x, y, obj) { self.scan(); }; return self; }); var Shelf = Container.expand(function () { var self = Container.call(this); var graphics = self.attachAsset('shelf', { anchorX: 0.5, anchorY: 0.5 }); self.products = []; // Create products on shelf self.createProducts = function () { var rows = 3; var cols = 3; var spacing = 80; var startX = -100; var startY = -120; for (var row = 0; row < rows; row++) { for (var col = 0; col < cols; col++) { var product = self.attachAsset('product', { anchorX: 0.5, anchorY: 0.5 }); product.x = startX + col * spacing; product.y = startY + row * spacing; product.available = true; self.products.push(product); } } }; self.createProducts(); self.takeProduct = function () { for (var i = 0; i < self.products.length; i++) { if (self.products[i].available) { self.products[i].available = false; self.products[i].visible = false; return true; } } return false; }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0xfffca1 }); /**** * Game Code ****/ var customers = []; var customerQueue = []; var currentCustomer = null; var spawnTimer = 0; var spawnDelay = 540; // 9 seconds at 60fps (3x slower than original) var counterY = 2300; // Bottom of screen // No changes needed - the code already ensures only the customer being served gets angry var shelves = []; var shelfPositions = [{ x: 400, y: 800 }, { x: 800, y: 800 }, { x: 1200, y: 800 }, { x: 1600, y: 800 }]; for (var i = 0; i < shelfPositions.length; i++) { var shelf = new Shelf(); shelf.x = shelfPositions[i].x; shelf.y = shelfPositions[i].y; shelves.push(shelf); game.addChild(shelf); } // Create cash register at bottom center var cashRegister = game.addChild(LK.getAsset('cashRegister', { anchorX: 0.5, anchorY: 0.5 })); cashRegister.x = 1024; // Center of screen cashRegister.y = counterY; // Bottom position // Create queue area just above cash register var queueArea = game.addChild(LK.getAsset('queueArea', { anchorX: 0.5, anchorY: 0.5 })); queueArea.x = 1024; queueArea.y = counterY - 300; // Position above cash register // Create score display var scoreTxt = new Text2('Score: 0', { size: 60, fill: 0x000000 }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // Create instructions var instructionsTxt = new Text2('Tap items to scan them!', { size: 40, fill: 0x0000 }); instructionsTxt.anchor.set(0.5, 0); instructionsTxt.y = 80; LK.gui.top.addChild(instructionsTxt); function spawnCustomer() { var customer = new Customer(); customer.x = 1024; // Center of screen customer.y = -200; // Above screen customers.push(customer); game.addChild(customer); // Customer shopping sequence var shelfIndex = 0; var _visitShelf = function visitShelf() { if (shelfIndex < shelves.length && customer.items.length < customer.itemsToCollect) { var targetShelf = shelves[Math.floor(Math.random() * shelves.length)]; tween(customer, { x: targetShelf.x, y: targetShelf.y + 250 }, { duration: 1500, onFinish: function onFinish() { customer.targetShelf = targetShelf; customer.collectItemFromShelf(); shelfIndex++; LK.setTimeout(function () { if (customer.items.length < customer.itemsToCollect) { _visitShelf(); } else { // Done shopping, join queue customer.isShopping = false; customerQueue.push(customer); var queuePosition = 1224 - (customerQueue.length - 1) * 150; // Start from right, go left tween(customer, { x: queuePosition, y: counterY - 300 }, { duration: 1500 }); } }, 500); } }); } }; // Start shopping by entering store tween(customer, { y: 400 }, { duration: 1000, onFinish: function onFinish() { _visitShelf(); } }); } function serveNextCustomer() { if (customerQueue.length > 0 && !currentCustomer) { currentCustomer = customerQueue.shift(); currentCustomer.isBeingServed = true; // Move customer to cash register tween(currentCustomer, { x: 1024, y: counterY - 200 }, { duration: 1500, onFinish: function onFinish() { currentCustomer.placeItemsOnCounter(); } }); // Move other customers forward in queue (right to left) for (var i = 0; i < customerQueue.length; i++) { var queuePos = 1224 - i * 150; // Reposition from right to left tween(customerQueue[i], { x: queuePos }, { duration: 1000 }); } } } game.update = function () { spawnTimer++; // Spawn new customers if (spawnTimer >= spawnDelay) { spawnCustomer(); spawnTimer = 0; // Gradually increase spawn rate if (spawnDelay > 120) { spawnDelay -= 2; } } // Check if current customer transaction is complete if (currentCustomer && currentCustomer.isBeingServed) { // Shaking effect is now handled by tween animations instead of direct position manipulation // Only check for scanned items if customer hasn't left if (currentCustomer.parent && currentCustomer.allItemsScanned()) { currentCustomer.completeTransaction(); // Remove from customers array for (var i = customers.length - 1; i >= 0; i--) { if (customers[i] === currentCustomer) { customers.splice(i, 1); break; } } currentCustomer = null; // Serve next customer after a short delay LK.setTimeout(function () { serveNextCustomer(); }, 500); } // Check if customer left angry if (currentCustomer && !currentCustomer.parent) { // Remove from customers array for (var i = customers.length - 1; i >= 0; i--) { if (customers[i] === currentCustomer) { customers.splice(i, 1); break; } } currentCustomer = null; // Serve next customer after a short delay LK.setTimeout(function () { serveNextCustomer(); }, 500); } } // Serve next customer if none is being served if (!currentCustomer) { serveNextCustomer(); } // Game over condition - too many customers waiting if (customerQueue.length >= 5) { LK.showGameOver(); } }; // Initial customer spawn LK.setTimeout(function () { spawnCustomer(); }, 1000); // No changes required - the current implementation already makes angry customers walk out normally through the store entrance using tween animations
===================================================================
--- original.js
+++ change.js
@@ -115,15 +115,15 @@
graphics.tint = 0x888888;
// Start shaking animation
self.originalX = self.x;
self.shakeAnimation = function () {
- if (self.upset && !self.angry) {
+ if (self.upset && !self.angry && !self.paid) {
tween(self, {
x: self.originalX + (Math.random() - 0.5) * 20
}, {
duration: 100,
onFinish: function onFinish() {
- if (self.upset && !self.angry) {
+ if (self.upset && !self.angry && !self.paid) {
self.shakeAnimation();
}
}
});
@@ -131,9 +131,9 @@
};
self.shakeAnimation();
}
}
- // Track upset time and transition to angry
+ // Track upset time and transition to angry (only if not paid)
if (self.upset && !self.angry && !self.paid) {
self.upsetStartTime++;
// Check if customer should become angry (3 seconds = 180 frames at 60fps)
if (self.upsetStartTime >= 180) {
A shiny blue ball. In-Game asset. 2d. High contrast. No shadows
Üzerinde meyve, sebze gibi ürün bulundurmayan; market kasa bankosu. Üstten görünüm.. In-Game asset. 2d. High contrast. No shadows
Shiny apple. In-Game asset. 2d. High contrast. No shadows
Koparılmamış ve ayrılmamış, bir tutam muz. In-Game asset. 2d. High contrast. No shadows
Cheese. In-Game asset. 2d. High contrast. No shadows
Milk. In-Game asset. 2d. High contrast. No shadows
Orange. In-Game asset. 2d. High contrast. No shadows
Shelf. In-Game asset. 2d. High contrast. No shadows
Bread. In-Game asset. 2d. High contrast. No shadows
Continue button. In-Game asset. 2d. High contrast. No shadows
Cut this
Shop button. In-Game asset. 2d. High contrast. No shadows
A green Open button. In-Game asset. 2d. High contrast. No shadows
Rectangle red close button with "close" title. In-Game asset. 2d. High contrast. No shadows
Buy button. In-Game asset. 2d. High contrast. No shadows
Yiyecek kategorisi butonu. In-Game asset. 2d. High contrast. No shadows
Eşya kategorisi butonu. Üstünde "furniture" yazsın. In-Game asset. 2d. High contrast. No shadows
Kişiselleştirme kategorisi butonu. Boyutu 250x125 olsun. Çekiç sembolü olabilir. Rengi turuncu olsun. Yazı ingilizce olsun. Duş çerçevesi siyah olsun.. In-Game asset. 2d. High contrast. No shadows
İtem çerçevesi. In-Game asset. 2d. High contrast. No shadows