// SPDX-License-Identifier: MIT pragma solidity ^0.4.18; contract PizzaGame { // Variables para almacenar ingredientes uint public cheeseStock = 10; uint public doughStock = 10; uint public tomatoStock = 10; // Precio de cada pizza (en wei, la unidad de menor valor de Ethereum) uint public pizzaPrice = 0.01 ether; // Dirección del dueño del contrato address public owner; // Mapeo para el balance de pizzas de cada jugador mapping(address => uint) public pizzaBalance; // Evento para registrar cada pedido event PizzaOrdered(address indexed player, uint quantity); // Constructor para inicializar el dueño del contrato function PizzaGame() public { owner = msg.sender; } // Modificador para restringir funciones solo al dueño modifier onlyOwner() { require(msg.sender == owner); _; } // Función para pedir una pizza function orderPizza(uint quantity) public payable { require(quantity > 0); require(msg.value >= pizzaPrice * quantity); // Verifica si hay suficientes ingredientes require(cheeseStock >= quantity); require(doughStock >= quantity); require(tomatoStock >= quantity); // Actualiza los ingredientes cheeseStock -= quantity; doughStock -= quantity; tomatoStock -= quantity; // Incrementa el balance de pizzas del jugador pizzaBalance[msg.sender] += quantity; // Emite el evento de orden PizzaOrdered(msg.sender, quantity); } // Función para reabastecer ingredientes, solo para el dueño function restockIngredients(uint cheese, uint dough, uint tomato) public onlyOwner { cheeseStock += cheese; doughStock += dough; tomatoStock += tomato; } // Función para retirar fondos del contrato, solo para el dueño function withdraw() public onlyOwner { owner.transfer(address(this).balance); } // Función para ver el balance de pizzas de un jugador function getPizzaBalance(address player) public view returns (uint) { return pizzaBalance[player]; } }
0.4.18