Advertisement
viktarb

Магазин

Jan 4th, 2023 (edited)
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.79 KB | Money | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Numerics;
  4.  
  5. class Program
  6. {
  7.     static void Main(string[] args)
  8.     {
  9.         int moneyPlayer = 500;
  10.         int moneySeller = 1000;
  11.  
  12.         Player player = new Player("Bob", moneyPlayer);
  13.         Seller seller = new Seller("Mike", moneySeller);
  14.         Market market = new Market();
  15.  
  16.         market.Work(player, seller);
  17.     }
  18. }
  19.  
  20. class Market
  21. {
  22.     public void Work(Player player, Seller seller)
  23.     {
  24.         const int TradeProductCommand = 1;
  25.         const int ShowAllProductsPlayerCommand = 2;
  26.         const int ShowAllProductsSellerCommand = 3;
  27.         const int ExitForMarket = 9;
  28.  
  29.         string userInput;
  30.         bool isWork = true;
  31.  
  32.         while (isWork)
  33.         {
  34.             Console.WriteLine($"Добро пожаловать в магазин.");
  35.             Console.WriteLine("Что желаете?\n");
  36.             Console.WriteLine($"{TradeProductCommand} - Купить товар у продавца, " +
  37.                 $"\n{ShowAllProductsPlayerCommand} - Показать все товары игрока, " +
  38.                 $"\n{ShowAllProductsSellerCommand} - Показать все товары продавца, " +
  39.                 $"\n{ExitForMarket} - Выход из магазина. " +
  40.                 $"\nУ Вас есть {player.Money} золотых.");
  41.  
  42.             userInput = Console.ReadLine();
  43.             int.TryParse(userInput, out int selectMenu);
  44.  
  45.             switch (selectMenu)
  46.             {
  47.                 case TradeProductCommand:
  48.                     Trade(seller, player);
  49.                     break;
  50.  
  51.                 case ShowAllProductsPlayerCommand:
  52.                     player.ShowAllProduct();
  53.                     break;
  54.  
  55.                 case ShowAllProductsSellerCommand:
  56.                     seller.ShowAllProduct();
  57.                     break;
  58.  
  59.                 case ExitForMarket:
  60.                     isWork = false;
  61.                     break;
  62.  
  63.                 default:
  64.                     Console.WriteLine($"\aМеню выбора {userInput} не существует!");
  65.                     break;
  66.             }
  67.  
  68.             Console.WriteLine("Нажмите любую клавишу для продолжения...");
  69.             Console.ReadKey();
  70.             Console.Clear();
  71.         }
  72.     }
  73.  
  74.     private void Trade(Seller seller, Player player)
  75.     {
  76.         Product product;
  77.  
  78.         if (seller.TryGetProduct(out product) && player.CanPay(product.Price))
  79.         {
  80.             player.Buy(product);
  81.             seller.Sell(product);
  82.             Console.WriteLine("Торговля завершена успешно.");
  83.         }
  84.         else
  85.         {
  86.             Console.WriteLine($"\aТорговля не состоялась.");
  87.         }
  88.     }
  89. }
  90.  
  91. abstract class BaseCharacter
  92. {
  93.     protected List<Product> Products = new List<Product>();
  94.  
  95.     public BaseCharacter(string name, int money)
  96.     {
  97.         Name = name;
  98.         Money = money;
  99.     }
  100.  
  101.     public string Name { get; protected set; }
  102.     public int Money { get; protected set; }
  103.  
  104.     public void ShowAllProduct()
  105.     {
  106.         Console.WriteLine("Показываю продукты:");
  107.  
  108.         int counter = 1;
  109.  
  110.         for (int i = 0; i < Products.Count; i++)
  111.         {
  112.             Console.Write(" " + counter + ": ");
  113.             Products[i].Show();
  114.             counter++;
  115.         }
  116.     }
  117. }
  118.  
  119. class Player : BaseCharacter
  120. {
  121.     public Player(string name, int money) : base(name, money) { }
  122.  
  123.     public void Buy(Product product)
  124.     {
  125.         Products.Add(product);
  126.         Money -= product.Price;
  127.     }
  128.  
  129.     public bool CanPay(int price)
  130.     {
  131.         return Money >= price;
  132.     }
  133. }
  134.  
  135. class Seller : BaseCharacter
  136. {
  137.     public Seller(string name, int money) : base(name, money)
  138.     {
  139.         Products = Fill();
  140.     }
  141.  
  142.     public bool TryGetProduct(out Product product)
  143.     {
  144.         bool isProductInStock;
  145.         string userInput;
  146.         product = null;
  147.  
  148.         Console.WriteLine("Введите порядковый номер товара, который хотите приобрести:");
  149.         userInput = Console.ReadLine();
  150.  
  151.         if (int.TryParse(userInput, out int idUserInput) == false)
  152.         {
  153.             Console.WriteLine("\aНужно вводить число!");
  154.             return false;
  155.         }
  156.  
  157.         isProductInStock = idUserInput > 0 && Products.Count >= idUserInput;
  158.  
  159.         if (isProductInStock)
  160.         {
  161.             product = Products[idUserInput - 1];
  162.         }
  163.         else
  164.         {
  165.             Console.WriteLine($"\aТовара c порядковым номером {userInput} у {Name} нет.");
  166.         }
  167.  
  168.         return isProductInStock;
  169.     }
  170.  
  171.     public void Sell(Product product)
  172.     {
  173.         Money += product.Price;
  174.         Products.Remove(product);
  175.     }
  176.  
  177.     private List<Product> Fill()
  178.     {
  179.         List<Product> products = new List<Product>()
  180.         {
  181.             new Product("Bread", 4, "Nice tasty bread"),
  182.             new Product("Sword", 20, "Sharp, will kill all enemies"),
  183.             new Product("Armor", 35, "Warm and protect"),
  184.             new Product("Shield", 29, "Lightweight and durable"),
  185.             new Product("Arrows", 19, "Sharp regular arrows")
  186.         };
  187.  
  188.         return products;
  189.     }
  190. }
  191.  
  192. class Product
  193. {
  194.     public Product(string name, int price, string description)
  195.     {
  196.         Name = name;
  197.         Price = price;
  198.         Description = description;
  199.     }
  200.  
  201.     public string Name { get; private set; }
  202.     public int Price { get; private set; }
  203.     public string Description { get; private set; }
  204.  
  205.     public void Show()
  206.     {
  207.         Console.WriteLine($"Имя - {Name}, Цена - {Price}, Описание - {Description}");
  208.     }
  209. }
Tags: ijunior
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement