Dr_Max_Experience

Task 6

Feb 27th, 2022 (edited)
1,226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.69 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace ООП
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             bool isOpen = true;
  14.             string userInput;
  15.             const string PlayerName = "player";
  16.             const string SellerName = "seller";
  17.  
  18.             Store store = new Store(new List<Person> { new Person(PlayerName, 500), new Person(SellerName, 1000) });
  19.  
  20.             store.DeliveryToSeller("item0", 60);
  21.             store.DeliveryToSeller("item1", 240);
  22.             store.DeliveryToSeller("item2", 450);
  23.  
  24.             while (isOpen)
  25.             {
  26.                 Console.WriteLine($"Ваше имя: {PlayerName}. Ваши деньги: " + store.ShowPersonMoney("player") + "$" + $"\nПродавцы: {SellerName}. Его деньги: " + store.ShowPersonMoney("seller") + "$");
  27.                 Console.Write("\nДобро пожаловать в магазин!\n\n1. Купить товар\n2. Посмотреть инвентарь\n3. Выход\n\nВыберите действие: ");
  28.  
  29.                 userInput = Console.ReadLine();
  30.  
  31.                 switch (userInput)
  32.                 {
  33.                     case "1":
  34.                         store.BuyItem();
  35.                         break;
  36.  
  37.                     case "2":
  38.                         store.ShowPlayerInventory();
  39.                         break;
  40.  
  41.                     case "3":
  42.                         store.CloseStore();
  43.                         break;
  44.  
  45.                     default:
  46.                         Console.Write("Такого действия нет!");
  47.                         break;
  48.                 }
  49.  
  50.                 Console.ReadKey();
  51.                 Console.Clear();
  52.             }
  53.         }
  54.     }
  55.  
  56.     class Store
  57.     {
  58.         private List<Person> _persons;
  59.  
  60.         public Store(List<Person> persons)
  61.         {
  62.             _persons = persons;
  63.         }
  64.  
  65.         public bool CloseStore()
  66.         {
  67.             Console.Write("До свидания!");
  68.             return false;
  69.         }
  70.  
  71.         public void DeliveryToSeller(string title, int price)
  72.         {
  73.             TryGetPerson("seller").AddItem(title, price);
  74.         }
  75.  
  76.         public string ShowPersonMoney(string name)
  77.         {
  78.             return Convert.ToString(TryGetPerson(name).Money);
  79.         }
  80.  
  81.         public void ShowPlayerInventory()
  82.         {
  83.             TryGetPerson("player").ShowItems();
  84.         }
  85.  
  86.         public void BuyItem()
  87.         {
  88.             Console.Write("Введите имя, у кого вы хотите купить вещь: ");
  89.             string userInput = Console.ReadLine();
  90.  
  91.             if (ShowInventory(userInput))
  92.             {
  93.                 Console.Write("Введите название товара, который хотите купить: ");
  94.                 userInput = Console.ReadLine();
  95.                 Person player = TryGetPerson("player");
  96.                 Person seller = TryGetPerson("seller");
  97.                 Item item = seller.TryGetItem(userInput);
  98.  
  99.                 if (player.TryBuyItem(item, player.Money))
  100.                 {
  101.                     seller.SellItem(item);
  102.                     Console.WriteLine(userInput + " успешно приобретено!");
  103.                 }
  104.                 else
  105.                 {
  106.                     Console.WriteLine("Ошибка покупки!");
  107.                 }
  108.             }
  109.         }
  110.  
  111.         private Person TryGetPerson(string name)
  112.         {
  113.             for (int i = 0; i < _persons.Count; i++)
  114.             {
  115.                 if (_persons[i].Name == name)
  116.                 {
  117.                     return _persons[i];
  118.                 }
  119.             }
  120.  
  121.             return null;
  122.         }
  123.  
  124.         private bool ShowInventory(string title)
  125.         {
  126.             List<Item> inventory = TryGetInventory(title);
  127.  
  128.             if (inventory != null)
  129.             {
  130.                 for (int i = 0; i < inventory.Count; i++)
  131.                 {
  132.                     inventory[i].ShowItem();
  133.                 }
  134.  
  135.                 return true;
  136.             }
  137.             else
  138.             {
  139.                 Console.WriteLine("Такого продавца нет!");
  140.                 return false;
  141.             }
  142.         }
  143.  
  144.         private List<Item> TryGetInventory(string title)
  145.         {
  146.             for (int i = 0; i < _persons.Count; i++)
  147.             {
  148.                 if (_persons[i].Name == title)
  149.                 {
  150.                     return _persons[i].GetListItems();
  151.                 }
  152.             }
  153.  
  154.             return null;
  155.         }
  156.     }
  157.  
  158.     class Item
  159.     {
  160.         public string Title { get; private set; }
  161.         public int Price { get; private set; }
  162.  
  163.         public Item(string title, int price)
  164.         {
  165.             Title = title;
  166.             Price = price;
  167.         }
  168.  
  169.         public void ShowItem()
  170.         {
  171.             Console.WriteLine($"{Title} ={Price}$");
  172.         }
  173.     }
  174.  
  175.     class Person
  176.     {
  177.         private List<Item> _inventory = new List<Item>();
  178.         public string Name { get; private set; }
  179.         public int Money { get; private set; }
  180.  
  181.         public Person(string name, int money = 0)
  182.         {
  183.             Name = name;
  184.             Money = money;
  185.         }
  186.  
  187.         public List<Item> GetListItems()
  188.         {
  189.             List<Item> items = new List<Item> { };
  190.  
  191.             for (int i = 0; i < _inventory.Count; i++)
  192.             {
  193.                 items.Add(_inventory[i]);
  194.             }
  195.  
  196.             return items;
  197.         }
  198.  
  199.         public void ShowItems()
  200.         {
  201.             for (int i = 0; i < _inventory.Count; i++)
  202.             {
  203.                 _inventory[i].ShowItem();
  204.             }
  205.         }
  206.  
  207.         public void AddItem(string title, int price)
  208.         {
  209.             _inventory.Add(new Item(title, price));
  210.         }
  211.  
  212.         public void SellItem(Item item)
  213.         {
  214.             Money += item.Price;
  215.             _inventory.Remove(item);
  216.         }
  217.  
  218.         public Item TryGetItem(string title)
  219.         {
  220.             for (int i = 0; i < _inventory.Count; i++)
  221.             {
  222.                 if (_inventory[i].Title == title)
  223.                 {
  224.                     return _inventory[i];
  225.                 }
  226.             }
  227.             return null;
  228.         }
  229.  
  230.         public bool TryBuyItem(Item item, int money)
  231.         {
  232.             if (item != null && money >= item.Price)
  233.             {
  234.                 Money -= item.Price;
  235.                 _inventory.Add(item);
  236.                 return true;
  237.             }
  238.             else
  239.             {
  240.                 return false;
  241.             }
  242.         }
  243.     }
  244. }
Add Comment
Please, Sign In to add comment