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.update = function () { if (self.state === 'idle') { // 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; break; } } // Check for ready food if (self.state === 'idle' && foodReady && !foodBeingDelivered) { self.state = 'goingToKitchen'; } } 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 { 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.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
@@ -14,20 +14,30 @@
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 && currentOrderTableIndex >= 0) {
+ 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;
- // Food is ready for the specific order
+ // 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;
@@ -42,8 +52,9 @@
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;
@@ -89,8 +100,9 @@
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;
@@ -111,8 +123,9 @@
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';
}
}
};
@@ -140,8 +153,9 @@
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);
@@ -152,8 +166,10 @@
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.update = function () {
if (self.state === 'idle') {
// Check for tables with orders
for (var i = 0; i < tables.length; i++) {
@@ -176,11 +192,11 @@
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;
- currentOrderTableIndex = self.targetTableIndex; // Track which order is being prepared
}
} else if (self.state === 'goingToKitchen') {
var dx = kitchenX - self.x;
var dy = kitchenY - self.y;
@@ -188,23 +204,29 @@
if (dist > 5) {
self.x += dx / dist * waiterSpeed;
self.y += dy / dist * waiterSpeed;
} else {
- if (foodReady && !self.hasFood && currentOrderTableIndex >= 0) {
+ // 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
+ y: -40,
+ tint: foodColors[self.carryingFoodType] // Color based on food type
});
- // Deliver to the table that placed the order
- if (currentOrderTableIndex < tables.length && tables[currentOrderTableIndex].occupied) {
- self.targetTable = tables[currentOrderTableIndex];
+ // 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';
- orderTaken[currentOrderTableIndex] = false; // Clear order taken status
- currentOrderTableIndex = -1; // Reset current order
}
} else {
self.state = 'idle';
}
@@ -226,9 +248,10 @@
self.targetTable.foodDelivered = true;
self.targetTable.food = self.targetTable.attachAsset('food', {
anchorX: 0.5,
anchorY: 0.5,
- y: -20
+ y: -20,
+ tint: foodColors[self.carryingFoodType] // Show correct food color
});
if (self.targetTable.customer) {
self.targetTable.customer.state = 'eating';
}
@@ -254,8 +277,11 @@
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
@@ -265,9 +291,10 @@
var orderTaken = [];
var chefHasOrder = false;
var foodReady = false;
var foodBeingDelivered = false;
-var currentOrderTableIndex = -1; // Track which table's order is being prepared
+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;
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