Advertisement
RedFlys

Error

Dec 8th, 2019
238
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 11.76 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 Lesson5._4_v3
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             string userValue;
  14.             int userNumber;
  15.             int userQuality;
  16.  
  17.             Render render = new Render();
  18.             DataBaseItems dataBaseItems = new DataBaseItems();
  19.             Item[] item = dataBaseItems.Items();
  20.  
  21.             while (true)
  22.             {
  23.                 Console.WriteLine("Вы стоите перед торговцем. \n1. Торговать. \n2. Уйти.");
  24.                 userValue = Console.ReadLine();
  25.                
  26.                 Console.Clear();
  27.                 if (TryNumber1or2(userValue))
  28.                 {
  29.                     userNumber = Convert.ToInt32(userValue);
  30.  
  31.                     if (userNumber == 1)
  32.                     {
  33.                         while (true)
  34.                         {
  35.                             render.RenderTradeList(item);
  36.                             userValue = Console.ReadLine();
  37.  
  38.                             if (TryNumber1or2or3(userValue))
  39.                             {
  40.                                 userNumber = Convert.ToInt32(userValue);
  41.  
  42.                                 if (userNumber == 1)
  43.                                 {
  44.                                     Console.WriteLine("Укажите номер предмета, который хотите купить: ");
  45.                                     userNumber = Convert.ToInt32(Console.ReadLine());
  46.                                     Console.WriteLine("Укажите количество, которое хотите купить: ");
  47.                                     userQuality = Convert.ToInt32(Console.ReadLine());
  48.  
  49.                                     if (dataBaseItems.TryBuy(item, userNumber, userQuality))
  50.                                     {
  51.                                         item = dataBaseItems.BuyItem(item, userNumber, userQuality);
  52.                                     }
  53.                                     else
  54.                                     {
  55.                                         render.Error();
  56.                                     }
  57.                                     Console.Clear();
  58.                                 }
  59.                                 else if (userNumber == 2)
  60.                                 {
  61.                                     Console.WriteLine("Укажите номер предмета, который хотите продать: ");
  62.                                     userNumber = Convert.ToInt32(Console.ReadLine());
  63.                                     Console.WriteLine("Укажите количество, которое хотите продать: ");
  64.                                     userQuality = Convert.ToInt32(Console.ReadLine());
  65.  
  66.                                     if (dataBaseItems.TrySell(item, userNumber, userQuality))
  67.                                     {
  68.                                         item = dataBaseItems.SellItem(item, userNumber, userQuality);
  69.                                     }
  70.                                     else
  71.                                     {
  72.                                         render.Error();
  73.                                     }
  74.                                     Console.Clear();
  75.                                 }
  76.                                 else if (userNumber == 3)
  77.                                 {
  78.                                     Console.Clear();
  79.                                     break;
  80.                                 }
  81.                             }
  82.                         }
  83.                     }
  84.                     else if (userNumber == 2)
  85.                     {
  86.                         break;
  87.                     }
  88.                 }
  89.             }
  90.         }
  91.  
  92.         static bool TryNumber1or2 (string userNumber)
  93.         {
  94.             if (userNumber == "1" || userNumber == "2")
  95.                 return true;
  96.             else
  97.                 return false;
  98.         }
  99.  
  100.         static bool TryNumber1or2or3(string userNumber)
  101.         {
  102.             if (userNumber == "1" || userNumber == "2" || userNumber == "3")
  103.                 return true;
  104.             else
  105.                 return false;
  106.         }
  107.     }
  108.  
  109.     class Item
  110.     {
  111.         public string Name;
  112.         public int Cost;
  113.         public int UserQuanity;
  114.         public int TraderQuanity;
  115.  
  116.         public Item(string name = "none", int cost = 1, int userQuanity = 0, int traderQuanity = 0)
  117.         {
  118.             Name = name;
  119.             Cost = cost;
  120.             UserQuanity = userQuanity;
  121.             TraderQuanity = traderQuanity;
  122.         }
  123.     }
  124.  
  125.     class DataBaseItems
  126.     {
  127.         public Item[] Items()
  128.         {
  129.             Item[] items =
  130.             {
  131.                 new Item("Золото", 1, 5000, 99999),
  132.                 new Item("Бита", 1000, 1, 1),
  133.                 new Item("Мамино кольцо", 10000, 1, 0),
  134.                 new Item("Авакадо", 30, 0, 10),
  135.                 new Item("Банан", 10, 0, 40),
  136.                 new Item("Яблоко", 4, 0, 200),
  137.                 new Item("Дыня", 30, 0, 2)
  138.             };
  139.  
  140.             return items;
  141.         }
  142.  
  143.         public Item[] BuyItem(Item[] item,int userNumber, int userQuanity)
  144.         {
  145.             int i = 0;
  146.             int y = 0;
  147.  
  148.             while (y != userNumber)
  149.             {
  150.                 if (item[i+1].TraderQuanity > 0)
  151.                 {
  152.                     y++;
  153.                 }
  154.                 i++;
  155.             }
  156.  
  157.             item[i].UserQuanity += userQuanity;
  158.             item[i].TraderQuanity -= userQuanity;
  159.  
  160.             item[0].UserQuanity -= (userQuanity * item[i].Cost);
  161.             item[0].TraderQuanity += (userQuanity * item[i].Cost);
  162.  
  163.             return item;
  164.         }        
  165.  
  166.         public Item[] SellItem(Item[] item, int userNumber, int userQuanity)
  167.         {
  168.             int i = 0;
  169.             int y = 0;
  170.  
  171.             while (y != userNumber)
  172.             {
  173.                 if (item[i+1].UserQuanity > 0)
  174.                 {
  175.                     y++;
  176.                 }
  177.                 i++;
  178.             }
  179.  
  180.             item[i].UserQuanity -= userQuanity;
  181.             item[i].TraderQuanity += userQuanity;
  182.  
  183.             item[0].UserQuanity += (userQuanity * item[i].Cost);
  184.             item[0].TraderQuanity -= (userQuanity * item[i].Cost);
  185.            
  186.             return item;
  187.         }
  188.  
  189.         public bool TryBuy(Item[] item, int userNumber, int userQuanity)
  190.         {
  191.             int i = 0;
  192.             int y = 0;
  193.  
  194.             while (y != userNumber)
  195.             {
  196.                 if (item[i+1].TraderQuanity > 0)
  197.                 {
  198.                     y++;
  199.                 }
  200.                 i++;
  201.             }
  202.  
  203.             if (item[i].TraderQuanity - userQuanity >= 0 && item[0].UserQuanity - (userQuanity * item[i].Cost) >= 0)
  204.                 return true;
  205.             else
  206.                 return false;
  207.         }
  208.  
  209.         public bool TrySell(Item[] item, int userNumber, int userQuanity)
  210.         {
  211.             int i = 0;
  212.             int y = 0;
  213.  
  214.             while (y != userNumber)
  215.             {
  216.                 if (item[i+1].TraderQuanity > 0)
  217.                 {
  218.                     y++;
  219.                 }
  220.                 i++;
  221.             }
  222.  
  223.             if (item[i].UserQuanity - userQuanity >= 0 && item[0].TraderQuanity - (userQuanity * item[i].Cost) >= 0)
  224.                 return true;
  225.             else
  226.                 return false;
  227.         }
  228.     }
  229.  
  230.     class Render
  231.     {
  232.         public void RenderTradeList(Item[] item)
  233.         {
  234.             RenderNameTradeLIst();
  235.             RenderTrade(item);
  236.             RenderCommandTrade();
  237.         }
  238.  
  239.         public void RenderNameTradeLIst()
  240.         {
  241.             Console.SetCursorPosition(0, 0);
  242.             Console.WriteLine("Ваш инвентарь:");
  243.  
  244.             Console.SetCursorPosition(60, 0);
  245.             Console.WriteLine("Предметы торговца:");
  246.         }
  247.  
  248.         public void RenderTrade(Item[] item)
  249.         {
  250.             RenderTradeName();
  251.             RenderInventer(item);
  252.             RenderGold(item);
  253.         }
  254.  
  255.         public void RenderTradeName()
  256.         {
  257.             Console.SetCursorPosition(0, 2);
  258.             Console.WriteLine("Название            | Кол-во | Стоимость |");
  259.             Console.SetCursorPosition(60, 2);
  260.             Console.WriteLine("Название            | Кол-во | Стоимость |");
  261.         }
  262.  
  263.         public void RenderInventer(Item[] item)
  264.         {
  265.             int y = 4;
  266.             int j = 1;
  267.             RenderUserInventer(item, y, j);
  268.             RenderTraderInveter(item, y, j);
  269.         }
  270.  
  271.         public void RenderUserInventer(Item[] item, int y, int j)
  272.         {
  273.             string name;
  274.             string quanity;
  275.             string cost;
  276.  
  277.             for (int i = 0; i < item.Length; i++)
  278.             {
  279.                 if (i == 0)
  280.                     continue;
  281.  
  282.                 if (item[i].UserQuanity == 0)
  283.                     continue;
  284.  
  285.                 Console.SetCursorPosition(0, y);
  286.  
  287.                 name = Name(item[i].Name);
  288.                 quanity = Quanity(item[i].UserQuanity);
  289.                 cost = Cost(item[i].Cost);
  290.  
  291.                 Console.WriteLine(j + ". " + name + quanity + cost);
  292.  
  293.                 y++;
  294.                 j++;
  295.             }
  296.         }
  297.  
  298.         public void RenderTraderInveter(Item[] item, int y, int j)
  299.         {
  300.             string name;
  301.             string quanity;
  302.             string cost;
  303.  
  304.             for (int i = 0; i < item.Length; i++)
  305.             {
  306.                 if (i == 0)
  307.                     continue;
  308.  
  309.                 if (item[i].TraderQuanity == 0)
  310.                     continue;
  311.  
  312.                 Console.SetCursorPosition(60, y);
  313.  
  314.                 name = Name(item[i].Name);
  315.                 quanity = Quanity(item[i].TraderQuanity);
  316.                 cost = Cost(item[i].Cost);
  317.  
  318.                 Console.WriteLine(j + ". " + name + quanity + cost);
  319.  
  320.                 y++;
  321.                 j++;
  322.             }
  323.         }
  324.  
  325.         public void RenderGold(Item[] item)
  326.         {
  327.             Console.SetCursorPosition(0, 10);
  328.             Console.WriteLine("Ваше золото: " + item[0].UserQuanity);
  329.             Console.SetCursorPosition(60, 10);
  330.             Console.WriteLine("Золото торговца: " + item[0].TraderQuanity);
  331.         }
  332.                
  333.         public string Name(string name)
  334.         {
  335.             while (name.Length < 16)
  336.             {
  337.                 name += " ";
  338.             }
  339.             name += " | ";
  340.  
  341.             return name;
  342.         }
  343.  
  344.         public string Quanity(int quanity)
  345.         {
  346.             string quanityItem = " " + quanity;
  347.  
  348.             while (quanityItem.Length < 6)
  349.             {
  350.                 quanityItem = " " + quanityItem;
  351.             }
  352.             quanityItem += " | ";
  353.  
  354.             return quanityItem;
  355.         }
  356.  
  357.         public string Cost(int cost)
  358.         {
  359.             string costItem = " " + cost;
  360.  
  361.             while (costItem.Length < 9)
  362.             {
  363.                 costItem = " " + costItem;
  364.             }
  365.             costItem += " |";
  366.  
  367.             return costItem;
  368.         }
  369.  
  370.         public void RenderCommandTrade()
  371.         {
  372.             Console.SetCursorPosition(0, 14);
  373.  
  374.             Console.WriteLine("1. Купить. \n2. Продать. \n3. Уйти.");
  375.         }
  376.  
  377.         public void Error()
  378.         {
  379.             Console.WriteLine("Нужно построить зиккурат... Или правильно ввести данные.");
  380.             Console.ReadKey();
  381.         }
  382.     }
  383. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement