User prompt
Sipariş yapılmıyor. Komple kodu düzelt
User prompt
Düzelt
User prompt
Masalara numara ekle. Bu numaralara göre sipariş takibi yapılsın.
User prompt
Bir garson, yalnızca 1 masanın siparişini tamamlasın. 1 masanın siparişi tamamlandıktan sonra başka masaya yönelsin.
User prompt
Sadece 1 müşteri ile ilgilensin. 1 müşterinin siparişi tamamlanmadan diğer müşteriye gitmesin.
User prompt
Sipariş almak ve sipariş götürmek yalnızca 1 masada olsun. Sipariş teslim etmeden, diğer masanın siparişini bekletsin.
User prompt
Bir Masanın, siparişini teslim etmeden, diğer masanın siparişini teslim etmesin.
User prompt
5 farklı yemek çeşidi oluştur. Her müşteri farklı yemek siparişi versin. Ancak garson ve aşçı hangi yemeğin, kime ait olduğunu unutmasın ve teslim etmeden diğer yemeğe geçmesinler.
User prompt
Otomatik üretimi kapat. Ancak sipariş alındığı zaman yemek üretilsin. Garson elinde yemek kaldı.
User prompt
Neden 1 masaya 2 müşteri yöneliyor?
User prompt
1 masaya 2 müşteri oturmasını engelle.
User prompt
Masada 1 müşteri varken, 2. Müşteri oturmasın, boşalmasını beklesin.
Code edit (1 edits merged)
Please save this source code
User prompt
Restaurant Rush Manager
Initial prompt
Restaurant Mağazası, Idle yönetim oyunu. Müşteri gelir, masaya oturur. Daha sonra sipariş verir. Garson siparişi aşçıya iletir. Aşçı siparişi hazırlayıp, garsona teslim eder. Garson siparişi müşteriye teslim eder. Yemek siparişini yiyen müşteri, daha sonra kasaya parayı ödeyip oradan ayrılır. Hız konusunda ve yeni masa konusunda yükseltme butonları olacak.
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1"); /**** * Classes ****/ var Chef = Container.expand(function () { var self = Container.call(this); var chefGraphics = self.attachAsset('chef', { anchorX: 0.5, anchorY: 0.5 }); self.cooking = false; self.cookTime = 0; self.currentFoodType = -1; // Track which food type is being cooked self.targetTableIndex = -1; // Track which table the food is for self.update = function () { if (chefHasOrder && !self.cooking && !foodReady) { self.cooking = true; self.cookTime = 0; self.currentFoodType = currentOrderFoodType; // Remember which food to cook self.targetTableIndex = currentOrderTableIndex; // Remember which table it's for chefHasOrder = false; } if (self.cooking) { self.cookTime++; if (self.cookTime > cookingSpeed) { self.cooking = false; foodReady = true; // Pass cooked food info back through globals currentOrderFoodType = self.currentFoodType; currentOrderTableIndex = self.targetTableIndex; // Reset order taken for the specific table if (self.targetTableIndex >= 0 && self.targetTableIndex < orderTaken.length) { orderTaken[self.targetTableIndex] = false; } } } }; return self; }); var Customer = Container.expand(function () { var self = Container.call(this); var customerGraphics = self.attachAsset('customer', { anchorX: 0.5, anchorY: 0.5 }); self.targetTable = null; self.targetTableIndex = -1; // Track which table index is reserved self.state = 'entering'; // entering, seated, waiting, eating, paying, leaving self.eatingTime = 0; self.waitTime = 0; self.foodType = Math.floor(Math.random() * foodTypes.length); // Random food type self.update = function () { if (self.state === 'entering') { if (self.targetTable) { var dx = self.targetTable.x - self.x; var dy = self.targetTable.y - self.y; var dist = Math.sqrt(dx * dx + dy * dy); if (dist > 5) { self.x += dx / dist * customerSpeed; self.y += dy / dist * customerSpeed; } else { self.state = 'seated'; self.targetTable.occupied = true; self.targetTable.customer = self; } } else { // Wait in line near entrance if no table available if (self.y < 200) { self.y += customerSpeed; } } } else if (self.state === 'eating') { self.eatingTime++; if (self.eatingTime > 180) { // 3 seconds at 60fps self.state = 'paying'; if (self.targetTable) { self.targetTable.foodDelivered = false; if (self.targetTable.food) { self.targetTable.food.destroy(); self.targetTable.food = null; } } } } else if (self.state === 'paying') { var dx = registerX - self.x; var dy = registerY - self.y; var dist = Math.sqrt(dx * dx + dy * dy); if (dist > 5) { self.x += dx / dist * customerSpeed; self.y += dy / dist * customerSpeed; } else { money += 10; self.state = 'leaving'; if (self.targetTable) { self.targetTable.occupied = false; self.targetTable.customer = null; self.targetTable.orderPlaced = false; self.targetTable.orderedFoodType = -1; // Reset food type } // Clear reservation if (self.targetTableIndex >= 0) { tableReservations[self.targetTableIndex] = false; } } } else if (self.state === 'leaving') { self.y += customerSpeed; if (self.y > 2800) { // Clear reservation before destroying if (self.targetTableIndex >= 0) { tableReservations[self.targetTableIndex] = false; } self.destroy(); var index = customers.indexOf(self); if (index > -1) customers.splice(index, 1); } } else if (self.state === 'seated') { self.waitTime++; if (self.waitTime > 120) { // 2 seconds self.targetTable.orderPlaced = true; self.targetTable.orderedFoodType = self.foodType; // Set the food type on table self.state = 'waiting'; } } }; return self; }); var Table = Container.expand(function () { var self = Container.call(this); var tableGraphics = self.attachAsset('table', { anchorX: 0.5, anchorY: 0.5 }); var chairLeft = self.attachAsset('chair', { anchorX: 0.5, anchorY: 0.5, x: -80, y: 0 }); var chairRight = self.attachAsset('chair', { anchorX: 0.5, anchorY: 0.5, x: 80, y: 0 }); self.occupied = false; self.customer = null; self.food = null; self.orderPlaced = false; self.foodDelivered = false; self.orderedFoodType = -1; // Store which food type was ordered return self; }); var Waiter = Container.expand(function () { var self = Container.call(this); var waiterGraphics = self.attachAsset('waiter', { anchorX: 0.5, anchorY: 0.5 }); self.state = 'idle'; // idle, goingToTable, goingToKitchen, deliveringFood self.targetTable = null; self.hasFood = false; self.food = null; self.carryingFoodType = -1; // Track which food type waiter is carrying self.targetTableIndex = -1; // Track which table the order/food is for self.servingTableIndex = -1; // Track which table is being served until order is complete self.update = function () { if (self.state === 'idle') { // If currently serving a table, check for ready food for that table if (self.servingTableIndex >= 0 && foodReady && !foodBeingDelivered && currentOrderTableIndex === self.servingTableIndex) { self.state = 'goingToKitchen'; } else if (self.servingTableIndex < 0) { // Only take new orders when not serving any table // Check for tables with orders for (var i = 0; i < tables.length; i++) { if (tables[i].orderPlaced && !orderTaken[i]) { self.state = 'goingToTable'; self.targetTable = tables[i]; self.targetTableIndex = i; self.servingTableIndex = i; // Start serving this table break; } } } } else if (self.state === 'goingToTable') { var dx = self.targetTable.x - self.x; var dy = self.targetTable.y - self.y; var dist = Math.sqrt(dx * dx + dy * dy); if (dist > 5) { self.x += dx / dist * waiterSpeed; self.y += dy / dist * waiterSpeed; } else { orderTaken[self.targetTableIndex] = true; self.carryingFoodType = self.targetTable.orderedFoodType; // Remember the food type self.state = 'goingToKitchen'; chefHasOrder = true; } } else if (self.state === 'goingToKitchen') { var dx = kitchenX - self.x; var dy = kitchenY - self.y; var dist = Math.sqrt(dx * dx + dy * dy); if (dist > 5) { self.x += dx / dist * waiterSpeed; self.y += dy / dist * waiterSpeed; } else { // Pass order details to chef through global variables if (chefHasOrder && self.carryingFoodType >= 0) { currentOrderFoodType = self.carryingFoodType; currentOrderTableIndex = self.targetTableIndex; } if (foodReady && !self.hasFood) { self.hasFood = true; foodReady = false; foodBeingDelivered = true; self.carryingFoodType = currentOrderFoodType; // Remember which food type self.targetTableIndex = currentOrderTableIndex; // Remember target table self.food = self.attachAsset('food', { anchorX: 0.5, anchorY: 0.5, y: -40, tint: foodColors[self.carryingFoodType] // Color based on food type }); // Deliver to the specific table that ordered this food if (self.targetTableIndex >= 0 && self.targetTableIndex < tables.length) { self.targetTable = tables[self.targetTableIndex]; self.state = 'deliveringFood'; } } else if (self.servingTableIndex < 0) { // Only go idle if not serving a table self.state = 'idle'; } } } else if (self.state === 'deliveringFood') { var dx = self.targetTable.x - self.x; var dy = self.targetTable.y - self.y; var dist = Math.sqrt(dx * dx + dy * dy); if (dist > 5) { self.x += dx / dist * waiterSpeed; self.y += dy / dist * waiterSpeed; } else { if (self.food) { self.food.destroy(); self.food = null; } self.hasFood = false; foodBeingDelivered = false; self.targetTable.foodDelivered = true; self.targetTable.food = self.targetTable.attachAsset('food', { anchorX: 0.5, anchorY: 0.5, y: -20, tint: foodColors[self.carryingFoodType] // Show correct food color }); if (self.targetTable.customer) { self.targetTable.customer.state = 'eating'; } self.servingTableIndex = -1; // Order complete, can serve another table self.state = 'idle'; self.targetTable = null; } } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0xF5DEB3 }); /**** * Game Code ****/ // Game variables var money = storage.money || 0; var restaurantLevel = storage.restaurantLevel || 1; var tableCount = storage.tableCount || 2; var tableReservations = []; // Track which tables are reserved by customers // Food types var foodTypes = ['pizza', 'burger', 'pasta', 'salad', 'soup']; var foodColors = [0xff6347, 0x8b4513, 0xffa500, 0x32cd32, 0xffd700]; // Speed variables (lower is faster) var customerSpeed = 3; var waiterSpeed = 4; var cookingSpeed = 180; // 3 seconds at 60fps // Game state var tables = []; var customers = []; var orderTaken = []; var chefHasOrder = false; var foodReady = false; var foodBeingDelivered = false; var currentOrderFoodType = -1; // Track current order food type var currentOrderTableIndex = -1; // Track current order table index // Positions var kitchenX = 1024; var kitchenY = 400; var registerX = 1024; var registerY = 2400; // UI Elements var moneyText = new Text2('Money: $0', { size: 60, fill: 0x000000 }); moneyText.anchor.set(0.5, 0); LK.gui.top.addChild(moneyText); // Create kitchen var kitchen = game.addChild(LK.getAsset('kitchen', { anchorX: 0.5, anchorY: 0.5, x: kitchenX, y: kitchenY })); // Create register var register = game.addChild(LK.getAsset('register', { anchorX: 0.5, anchorY: 0.5, x: registerX, y: registerY })); // Create chef var chef = game.addChild(new Chef()); chef.x = kitchenX; chef.y = kitchenY; // Create waiter var waiter = game.addChild(new Waiter()); waiter.x = 1024; waiter.y = 1366; // Create initial tables function createTable(index) { var table = game.addChild(new Table()); var row = Math.floor(index / 2); var col = index % 2; table.x = 600 + col * 400; table.y = 800 + row * 300; tables.push(table); orderTaken.push(false); tableReservations.push(false); // Initialize reservation status } for (var i = 0; i < tableCount; i++) { createTable(i); } // Upgrade speed button var upgradeButton = game.addChild(LK.getAsset('upgradeButton', { anchorX: 0.5, anchorY: 0.5, x: 500, y: 2200 })); var upgradeText = new Text2('Upgrade Speed $50', { size: 40, fill: 0xFFFFFF }); upgradeText.anchor.set(0.5, 0.5); upgradeText.x = 500; upgradeText.y = 2200; game.addChild(upgradeText); upgradeButton.down = function () { if (money >= 50) { money -= 50; restaurantLevel++; customerSpeed = Math.max(2, customerSpeed - 0.5); waiterSpeed = Math.max(2, waiterSpeed - 0.5); cookingSpeed = Math.max(60, cookingSpeed - 20); storage.restaurantLevel = restaurantLevel; storage.money = money; LK.effects.flashObject(upgradeButton, 0x00FF00, 500); } }; // Add table button var addTableButton = game.addChild(LK.getAsset('addTableButton', { anchorX: 0.5, anchorY: 0.5, x: 1500, y: 2200 })); var addTableText = new Text2('Add Table $100', { size: 40, fill: 0xFFFFFF }); addTableText.anchor.set(0.5, 0.5); addTableText.x = 1500; addTableText.y = 2200; game.addChild(addTableText); addTableButton.down = function () { if (money >= 100 && tables.length < 8) { money -= 100; createTable(tables.length); tableCount++; storage.tableCount = tableCount; storage.money = money; LK.effects.flashObject(addTableButton, 0x00FF00, 500); } }; // Customer spawn timer var customerSpawnTimer = 0; // Game update game.update = function () { // Update money display moneyText.setText('Money: $' + money); // Spawn customers customerSpawnTimer++; if (customerSpawnTimer > 300) { // Every 5 seconds customerSpawnTimer = 0; // Check if there are waiting customers first var hasWaitingCustomer = false; for (var j = 0; j < customers.length; j++) { if (customers[j].state === 'entering' && !customers[j].targetTable) { hasWaitingCustomer = true; // Try to assign a table to waiting customer for (var k = 0; k < tables.length; k++) { if (!tables[k].occupied && !tables[k].customer && !tableReservations[k]) { customers[j].targetTable = tables[k]; customers[j].targetTableIndex = k; tableReservations[k] = true; // Reserve the table break; } } break; } } // Only spawn new customer if no one is waiting if (!hasWaitingCustomer) { var customer = game.addChild(new Customer()); customer.x = 1024; customer.y = -50; customers.push(customer); // Try to find available table for (var i = 0; i < tables.length; i++) { if (!tables[i].occupied && !tables[i].customer && !tableReservations[i]) { customer.targetTable = tables[i]; customer.targetTableIndex = i; tableReservations[i] = true; // Reserve the table break; } } // If no table available, customer will wait } } // Save periodically if (LK.ticks % 300 === 0) { storage.money = money; } };
===================================================================
--- original.js
+++ change.js
@@ -168,26 +168,26 @@
self.hasFood = false;
self.food = null;
self.carryingFoodType = -1; // Track which food type waiter is carrying
self.targetTableIndex = -1; // Track which table the order/food is for
+ self.servingTableIndex = -1; // Track which table is being served until order is complete
self.update = function () {
if (self.state === 'idle') {
- // Only take new orders if not busy with another order
- if (!waiterBusy) {
+ // If currently serving a table, check for ready food for that table
+ if (self.servingTableIndex >= 0 && foodReady && !foodBeingDelivered && currentOrderTableIndex === self.servingTableIndex) {
+ self.state = 'goingToKitchen';
+ } else if (self.servingTableIndex < 0) {
+ // Only take new orders when not serving any table
// Check for tables with orders
for (var i = 0; i < tables.length; i++) {
if (tables[i].orderPlaced && !orderTaken[i]) {
self.state = 'goingToTable';
self.targetTable = tables[i];
self.targetTableIndex = i;
- waiterBusy = true; // Mark waiter as busy
+ self.servingTableIndex = i; // Start serving this table
break;
}
}
- // Check for ready food only if we took an order
- if (foodReady && !foodBeingDelivered) {
- self.state = 'goingToKitchen';
- }
}
} else if (self.state === 'goingToTable') {
var dx = self.targetTable.x - self.x;
var dy = self.targetTable.y - self.y;
@@ -214,34 +214,27 @@
currentOrderFoodType = self.carryingFoodType;
currentOrderTableIndex = self.targetTableIndex;
}
if (foodReady && !self.hasFood) {
- // Check if this is the waiter who took the order for this food
- if (currentOrderTableIndex === self.targetTableIndex) {
- self.hasFood = true;
- foodReady = false;
- foodBeingDelivered = true;
- self.carryingFoodType = currentOrderFoodType; // Remember which food type
- self.targetTableIndex = currentOrderTableIndex; // Remember target table
- self.food = self.attachAsset('food', {
- anchorX: 0.5,
- anchorY: 0.5,
- y: -40,
- tint: foodColors[self.carryingFoodType] // Color based on food type
- });
- // Deliver to the specific table that ordered this food
- if (self.targetTableIndex >= 0 && self.targetTableIndex < tables.length) {
- self.targetTable = tables[self.targetTableIndex];
- self.state = 'deliveringFood';
- }
- } else {
- // This food is not for the table this waiter is handling
- self.state = 'idle';
- // Don't reset busy state here - wait for delivery completion
+ self.hasFood = true;
+ foodReady = false;
+ foodBeingDelivered = true;
+ self.carryingFoodType = currentOrderFoodType; // Remember which food type
+ self.targetTableIndex = currentOrderTableIndex; // Remember target table
+ self.food = self.attachAsset('food', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ y: -40,
+ tint: foodColors[self.carryingFoodType] // Color based on food type
+ });
+ // Deliver to the specific table that ordered this food
+ if (self.targetTableIndex >= 0 && self.targetTableIndex < tables.length) {
+ self.targetTable = tables[self.targetTableIndex];
+ self.state = 'deliveringFood';
}
- } else {
+ } else if (self.servingTableIndex < 0) {
+ // Only go idle if not serving a table
self.state = 'idle';
- // Don't reset busy state here - wait for delivery completion
}
}
} else if (self.state === 'deliveringFood') {
var dx = self.targetTable.x - self.x;
@@ -266,12 +259,11 @@
});
if (self.targetTable.customer) {
self.targetTable.customer.state = 'eating';
}
+ self.servingTableIndex = -1; // Order complete, can serve another table
self.state = 'idle';
self.targetTable = null;
- self.targetTableIndex = -1; // Reset target table index
- waiterBusy = false; // Mark waiter as not busy after completing delivery
}
}
};
return self;
@@ -307,9 +299,8 @@
var foodReady = false;
var foodBeingDelivered = false;
var currentOrderFoodType = -1; // Track current order food type
var currentOrderTableIndex = -1; // Track current order table index
-var waiterBusy = false; // Track if waiter is handling an order
// Positions
var kitchenX = 1024;
var kitchenY = 400;
var registerX = 1024;
Chair - Gerçekçi - Yazısız. In-Game asset. 2d. High contrast. No shadows
Chef - Gerçekçi - Yazısız. In-Game asset. 2d. High contrast. No shadows
Müşteri - Gerçekçi - Yazısız. In-Game asset. 2d. High contrast. No shadows
Bayan Müşteri - Gerçekçi - Yazısız. In-Game asset. 2d. High contrast. No shadows
Müşteri - Gerçekçi - Yazısız. In-Game asset. 2d. High contrast. No shadows
Garson - Gerçekçi - Yazısız. In-Game asset. 2d. High contrast. No shadows
Üstten görünüm table - Yazısız - Gerçekçi. In-Game asset. 2d. High contrast. No shadows
Masa ve sandalyesiz - üstten görünüm restaurant gerçekçi - yazısız. In-Game asset. 2d. High contrast. No shadows
Mutfak - üstten görünüm - gerçekçi - yazısız. In-Game asset. 2d. High contrast. No shadows
Üstten Bakış Yazar Kasa - Yazısız - Gerçekçi. In-Game asset. 2d. High contrast. No shadows
Yemek - Gerçekçi - Yazısız. In-Game asset. 2d. High contrast. No shadows
Burger - Gerçekçi - Yazısız. In-Game asset. 2d. High contrast. No shadows
Curry - Gerçekçi - Yazısız. In-Game asset. 2d. High contrast. No shadows
dumpling - Gerçekçi - Yazısız. In-Game asset. 2d. High contrast. No shadows
pasta - Gerçekçi - Yazısız. In-Game asset. 2d. High contrast. No shadows
Pizza - Gerçekçi - Yazısız. In-Game asset. 2d. High contrast. No shadows
salad - Gerçekçi - Yazısız. In-Game asset. 2d. High contrast. No shadows
Soup - Gerçekçi - Yazısız. In-Game asset. 2d. High contrast. No shadows
Steak - Gerçekçi - Yazısız. In-Game asset. 2d. High contrast. No shadows
Tabakta Sushi - Gerçekçi - Yazısız. In-Game asset. 2d. High contrast. No shadows
Tabakta Taco - Gerçekçi - Yazısız. In-Game asset. 2d. High contrast. No shadows
İçindeki içecekler görünen, meşrubat dolabı, gerçekçi - yazısız. In-Game asset. 2d. High contrast. No shadows
Ayran - Gerçekçi - Yazısız. In-Game asset. 2d. High contrast. No shadows
caffee - Gerçekçi - Yazısız. In-Game asset. 2d. High contrast. No shadows
Cola - Gerçekçi - Yazısız. In-Game asset. 2d. High contrast. No shadows
Fanta - Gerçekçi - Yazısız. In-Game asset. 2d. High contrast. No shadows
İcetea - Gerçekçi - Yazısız. In-Game asset. 2d. High contrast. No shadows
OrangeJuice - Gerçekçi - Yazısız. In-Game asset. 2d. High contrast. No shadows
Maden suyu - Gerçekçi - Yazısız. In-Game asset. 2d. High contrast. No shadows
Su şişesi - Gerçekçi - Yazısız. In-Game asset. 2d. High contrast. No shadows