Advertisement
ZhongNi

Train dispatcher (2)

Sep 12th, 2024
21
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.03 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace Classes
  5. {
  6.     internal class Program
  7.     {
  8.         static void Main(string[] args)
  9.         {
  10.             TrainDispatcher dispatcher = new TrainDispatcher();
  11.             dispatcher.WorkMenu();
  12.         }
  13.     }
  14.  
  15.     class TrainDispatcher
  16.     {
  17.         private List<Train> trains = new List<Train>();
  18.         private Random random = new Random();
  19.  
  20.         public void WorkMenu()
  21.         {
  22.             Console.CursorVisible = false;
  23.             Console.WriteLine($"To create a train press anything...\nTo exit press 0.");
  24.  
  25.             while (Console.ReadKey().Key != ConsoleKey.D0)
  26.             {
  27.                 Console.Clear();
  28.                 CreateTrain();
  29.                 Console.WriteLine($"\nTo create a train press anything...\nTo exit press 0.\n");
  30.                 ShowTrains();
  31.             }
  32.         }
  33.  
  34.         private string CreateDirection()
  35.         {
  36.             char[] points = new char[] { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J' };
  37.             char pointStart = points[random.Next(points.Length)];
  38.             string direction = null;
  39.  
  40.             bool isEqual = true;
  41.  
  42.             while (isEqual)
  43.             {
  44.                 char pointFinish = points[random.Next(points.Length)];
  45.                 direction = pointStart + " - " + pointFinish;
  46.  
  47.                 isEqual = pointFinish == pointStart ? true : false;
  48.             }
  49.  
  50.             Console.WriteLine($"{direction} train created\n");
  51.             return direction;
  52.         }
  53.  
  54.         private int SellTickets()
  55.         {
  56.             int maxPassengers = 101;
  57.             int minPassengers = 1;
  58.             int numberPassengers = random.Next(minPassengers, maxPassengers);
  59.             Console.WriteLine($"{numberPassengers} tickets sold\n");
  60.             return numberPassengers;
  61.         }
  62.  
  63.         private List<Car> AttachCars()
  64.         {
  65.             List<Car> cars = new List<Car>();
  66.             int numberPassengers = SellTickets();
  67.             int index = 1;
  68.             int capacityCar = 10;
  69.  
  70.             while (numberPassengers > 0)
  71.             {
  72.                 int maxPassengerInCar = capacityCar + 1;
  73.                 int minPassengerInCar = 5;
  74.                 int passengerInCar = random.Next(minPassengerInCar, maxPassengerInCar);
  75.  
  76.                 passengerInCar = numberPassengers - passengerInCar < 0 ? numberPassengers : passengerInCar;
  77.  
  78.                 numberPassengers -= passengerInCar;
  79.                 Console.WriteLine($"in {index} car added {passengerInCar} passengers");
  80.                 index++;
  81.                 cars.Add(new Car(passengerInCar, capacityCar));
  82.             }
  83.  
  84.             Console.WriteLine($"\n{cars.Count} attached cars");
  85.             return cars;
  86.         }
  87.  
  88.         private void CreateTrain()
  89.         {
  90.             trains.Add(new Train(CreateDirection(), AttachCars()));
  91.         }
  92.  
  93.         private void ShowTrains()
  94.         {
  95.             string train = null;
  96.             string trainSign = ">>";
  97.  
  98.             for (int i = 0; i < 10; i++)
  99.             {
  100.                 int index = trains.Count - 1 - i;
  101.  
  102.                 i = trains.Count - 1 - (i + 1) >= 0 ? i : 10;
  103.  
  104.                 for (int j = trains[index].Cars.Count - 1; j >= 0; j--)
  105.                 {
  106.                     train += trains[index].Cars[j].Content + ".";
  107.                 }
  108.  
  109.                 Console.WriteLine(trains[index].Direction + "  " + train + trainSign);
  110.                 train = null;
  111.             }
  112.         }
  113.     }
  114.  
  115.     class Train
  116.     {
  117.         public Train(string direction, List<Car> cars)
  118.         {
  119.             Direction = direction;
  120.             Cars = cars;
  121.         }
  122.  
  123.         public string Direction { get; private set; }
  124.         public List<Car> Cars { get; private set; }
  125.     }
  126.  
  127.     class Car
  128.     {
  129.         public Car(int content, int capacity)
  130.         {
  131.             Capacity = capacity;
  132.             Content = content;
  133.         }
  134.  
  135.         public int Capacity { get; private set; }
  136.         public int Content { get; private set; }
  137.     }
  138. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement