Advertisement
OldBeliver

NewYearParty_01

Apr 22nd, 2021
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.31 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 NewYearParty_01
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             Santa santa = new Santa(new List<Gift>());
  14.             Beggar beggar = new Beggar(new List<Gift>());
  15.  
  16.             bool isOpen = true;
  17.             string userInput;
  18.  
  19.             while (isOpen)
  20.             {
  21.                 Console.WriteLine($"Новогодний детский утренник\n");
  22.                 Console.WriteLine($"1 - Заглянуть в мешок Санты\n2 - Клянчить подарок\n3 - Посмотреть свои подарки\n4 - Уйти с ёлки");
  23.                 Console.Write($"\nВведите номер команды: ");
  24.                 userInput = Console.ReadLine();
  25.  
  26.                 switch (userInput)
  27.                 {
  28.                     case "1":
  29.                         Console.WriteLine($"\nпока Санта отвернулся Вы украдкой заглянули в его мешок...");
  30.                         Console.WriteLine($"надпись на отвороте мешка гласила: спонсор подарков настольная карточная игра \"Манчкин\"\n");
  31.                         santa.ShowInfo();
  32.                         break;
  33.                     case "2":
  34.                         string name;
  35.                         santa.GiveGift(out name);
  36.                         beggar.TakeGift(name);
  37.                         break;
  38.                     case "3":
  39.                         beggar.ShowInfo();
  40.                         break;
  41.                     case "4":
  42.                         isOpen = false;
  43.                         break;
  44.                     default:
  45.                         Console.WriteLine($"НЕверная команда");
  46.                         break;
  47.                 }
  48.                 Console.WriteLine($"\nлюбую для продолжения ...");
  49.                 Console.ReadKey();
  50.                 Console.Clear();
  51.             }
  52.         }
  53.     }
  54.  
  55.     class Actor
  56.     {
  57.         protected List<Gift> Gifts;
  58.  
  59.         public Actor(List<Gift> gifts)
  60.         {
  61.             Gifts = gifts;
  62.         }
  63.  
  64.         public void ShowInfo()
  65.         {
  66.             for (int i = 0; i < Gifts.Count; i++)
  67.             {
  68.                 Console.Write($"{i + 1}. ");
  69.                 Gifts[i].ShowTitle();
  70.             }
  71.  
  72.             if (Gifts.Count == 0)
  73.             {
  74.                 Console.WriteLine($"\nэтот мешок пуст");
  75.             }
  76.         }
  77.  
  78.         private bool TryReadInt (out int number)
  79.         {
  80.             Console.WriteLine($"Вы промямлили стишок у ёлки про Деда Мороза, какую-то бороду из ваты и горбатого человека,");
  81.             Console.Write($"после чего с надеждой смотрите на подарок номер: ");
  82.            
  83.             bool result = int.TryParse(Console.ReadLine(), out number);
  84.  
  85.             return result;
  86.         }
  87.  
  88.         public bool TryGetIndex(out int index)
  89.         {
  90.             int number;
  91.             index = 0;
  92.  
  93.             if(TryReadInt(out number))
  94.             {
  95.                 index = number;
  96.             }
  97.  
  98.             bool isLegalRange = (index > 0 && index <= Gifts.Count);
  99.  
  100.             return isLegalRange;
  101.         }
  102.     }
  103.  
  104.     class Santa : Actor
  105.     {
  106.         public Santa(List<Gift> gifts) : base(gifts)
  107.         {
  108.             gifts.Add(new Gift("Шлем бесстрашия"));
  109.             gifts.Add(new Gift("Башмаки могучего Пенделя"));
  110.             gifts.Add(new Gift("Читерский кубик"));
  111.             gifts.Add(new Gift("Боевая стремянка"));
  112.             gifts.Add(new Gift("Зелье ротовой вони"));
  113.             gifts.Add(new Gift("Зелье идиотской храбрости"));
  114.             gifts.Add(new Gift("Меч песни и пляски"));
  115.             gifts.Add(new Gift("Рапира такнечестности"));
  116.             gifts.Add(new Gift("Паленые доспехи"));
  117.         }
  118.  
  119.         public void GiveGift (out string name)
  120.         {
  121.             name = "";
  122.  
  123.             if(TryGetIndex(out int index))
  124.             {
  125.                 name = Gifts[index - 1].Name;
  126.  
  127.                 Console.Write($"\nСанта достал из мешка {name}");
  128.                 Console.WriteLine($"и сказал с одесским говором - подходим деточки, покупаем подарочки");
  129.  
  130.                 Gifts.RemoveAt(index - 1);
  131.             }
  132.             else
  133.             {
  134.                 Console.WriteLine($"ошибка номера подарка");
  135.             }
  136.         }
  137.     }
  138.  
  139.     class Beggar : Actor
  140.     {
  141.         public Beggar(List<Gift> gifts) : base(gifts) { }
  142.  
  143.         public void TakeGift(string name)
  144.         {
  145.             Gifts.Add(new Gift(name));
  146.         }
  147.     }
  148.  
  149.     class Gift
  150.     {
  151.         public string Name { get; private set; }
  152.  
  153.         public Gift(string name)
  154.         {
  155.             Name = name;
  156.         }
  157.  
  158.         public void ShowTitle()
  159.         {
  160.             Console.WriteLine(Name);
  161.         }
  162.     }
  163. }
  164.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement