Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- class Program
- {
- static void Main(string[] args)
- {
- CarService carService = new CarService();
- bool isWorking = true;
- while (isWorking)
- {
- carService.Work();
- }
- }
- }
- class CarService
- {
- private DetailsStorage _detailsStorage;
- private List<Breakage> _listBreakages = new List<Breakage>();
- private int _breakageIndex;
- private int _moneyBalance = 0;
- public CarService()
- {
- _detailsStorage = new DetailsStorage();
- AddBreakage();
- }
- public void Work()
- {
- int sumFine = 10;
- _detailsStorage.ShowDetails();
- _breakageIndex = Utils.GetRandomNumber(_listBreakages.Count - 1);
- string typeBreakage = _listBreakages[_breakageIndex].TypeBreakage;
- int priceForTheBreakage = _listBreakages[_breakageIndex].Price;
- int priceForTheDetails = _detailsStorage.GivePrice(_breakageIndex);
- int priceForTheWork = priceForTheBreakage + priceForTheDetails;
- Console.SetCursorPosition(0, 14);
- Console.WriteLine($"Банк:{_moneyBalance}\nВ автосервис заехал автомобиль.\n\n|Тип поломки:{typeBreakage}\n|Цена:{priceForTheWork} монет\n\nВведите номер детали для починки или если нужной детали нет, введите 404 и заплатите штраф.");
- int usetInput = Utils.ConvertToInt();
- if (usetInput == 404)
- {
- _moneyBalance -= sumFine;
- }
- else
- {
- if (isDetailsSuit(usetInput))
- {
- _detailsStorage.RemoveDetail(usetInput);
- _moneyBalance += priceForTheWork;
- Console.WriteLine($"Починка прошла успешно! Автосервис заработал {priceForTheWork} монет.");
- }
- else
- {
- _detailsStorage.RemoveDetail(usetInput);
- _moneyBalance -= priceForTheDetails;
- Console.WriteLine($"Вы заменили не ту деталь. Вам придется возместить клиенту {priceForTheDetails} монет.");
- }
- }
- Console.ReadKey();
- Console.Clear();
- }
- public void AddBreakage()
- {
- _listBreakages.Add(new Breakage("Сломалось колесо", 20, 0));
- _listBreakages.Add(new Breakage("Сломался кондиционер", 30, 1));
- _listBreakages.Add(new Breakage("Сломалась коробка передач", 60, 2));
- }
- public bool isDetailsSuit(int index)
- {
- if (_listBreakages[index].TypeIndex == _detailsStorage.GiveIndex(_breakageIndex))
- {
- return true;
- }
- return false;
- }
- }
- class DetailsStorage
- {
- private static Random _random = new Random();
- private List<Detail> _details = new List<Detail>();
- public DetailsStorage()
- {
- AddToDetails(new Wheel());
- AddToDetails(new Conditioner());
- AddToDetails(new Transmission());
- }
- public void AddToDetails(Detail detail)
- {
- int minIndex = 1;
- int maxIndex = 5;
- int maxDetails = _random.Next(minIndex, maxIndex);
- for (int i = 0; i < maxDetails; i++)
- {
- _details.Add(detail.Clone());
- }
- }
- public void ShowDetails()
- {
- Console.WriteLine("Кол-во деталей на складе:");
- foreach (var detail in _details)
- {
- detail.ShowInfo();
- }
- }
- public void RemoveDetail(int index)
- {
- Detail detail = null;
- foreach (var item in _details)
- {
- if(item.TypeIndex == index)
- {
- detail = item;
- }
- }
- _details.Remove(detail);
- }
- public int GiveIndex(int index)
- {
- int typeIndex = 0;
- foreach (var detail in _details)
- {
- if (detail.TypeIndex == index)
- {
- typeIndex = detail.TypeIndex;
- break;
- }
- }
- return typeIndex;
- }
- public int GivePrice(int index)
- {
- int price = 0;
- foreach (var detail in _details)
- {
- if (detail.TypeIndex == index)
- {
- price = detail.Price;
- }
- }
- return price;
- }
- }
- class Detail
- {
- public Detail(string name, int price, int typeIndex)
- {
- Name = name;
- Price = price;
- TypeIndex = typeIndex;
- }
- public string Name { get; private set; }
- public int Price { get; private set; }
- public int TypeIndex { get; private set; }
- public virtual Detail Clone()
- {
- return new Detail(Name, Price, TypeIndex);
- }
- public void ShowInfo()
- {
- Console.WriteLine($"{TypeIndex}|{Name}|Цена:{Price}");
- }
- }
- class Wheel : Detail
- {
- public override Detail Clone()
- {
- return new Wheel();
- }
- public Wheel() : base ("Колесо", 10, 0) { }
- }
- class Conditioner : Detail
- {
- public override Detail Clone()
- {
- return new Conditioner();
- }
- public Conditioner() : base("Кондеционер", 15, 1) { }
- }
- class Transmission : Detail
- {
- public override Detail Clone()
- {
- return new Transmission();
- }
- public Transmission() : base("Коробка передач", 30, 2) { }
- }
- class Breakage
- {
- public Breakage(string typeBreakage, int price, int typeIndex)
- {
- TypeBreakage = typeBreakage;
- Price = price;
- TypeIndex = typeIndex;
- }
- public string TypeBreakage { get; private set; }
- public int Price { get; private set; }
- public int TypeIndex { get; private set; }
- }
- class Utils
- {
- private static Random _random = new Random();
- public static int GetRandomNumber(int max)
- {
- return _random.Next(max + 1);
- }
- public static int ConvertToInt()
- {
- int templateNumber;
- string userInput = string.Empty;
- while (int.TryParse(userInput, out templateNumber) == false)
- {
- userInput = Console.ReadLine();
- }
- return templateNumber;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement