Advertisement
VodVas

UIElement

Sep 6th, 2023 (edited)
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.58 KB | Software | 0 0
  1. namespace UIElement
  2. {
  3.     internal class Program
  4.     {
  5.         static void Main(string[] args)
  6.         {
  7.             double health = 0;
  8.             double maxHealth = 30;
  9.  
  10.             int healthBarPositionX = 0;
  11.             int healthBarPositionY = 0;
  12.             int percentCalculation = 100;
  13.             int requiredFillRate = 0;
  14.             int minCoordinatePosition = 0;
  15.             int maxCoordinatePosition = 100;
  16.             int minHPValue = 0;
  17.             int maxHPValue = 100;
  18.  
  19.             char coordinateAxisY = 'Y';
  20.             char coordinateAxisX = 'X';
  21.  
  22.             Console.Write($"Задайте позицию отрисовки хп полоски по Y от {minCoordinatePosition} до {maxCoordinatePosition}: ");
  23.  
  24.             healthBarPositionY = Convert.ToInt32(Console.ReadLine());
  25.  
  26.             CheckUserInput(healthBarPositionY,minCoordinatePosition,maxCoordinatePosition, coordinateAxisY);
  27.  
  28.             Console.WriteLine();
  29.             Console.Write($"Задайте позицию отрисовки хп полоски по X от {minCoordinatePosition} до {maxCoordinatePosition}: ");
  30.  
  31.             healthBarPositionX = Convert.ToInt32(Console.ReadLine());
  32.  
  33.             CheckUserInput(healthBarPositionX,minCoordinatePosition,maxCoordinatePosition, coordinateAxisX);
  34.  
  35.             Console.Write("\nСколько процентов хп должно быть выставлено? ");
  36.  
  37.             requiredFillRate = Convert.ToInt32(Console.ReadLine());
  38.  
  39.             while (requiredFillRate < 0 || requiredFillRate > 100)
  40.             {
  41.                 Console.WriteLine();
  42.                 Console.WriteLine($"Значение должно быть от {minHPValue} до {maxHPValue} %\n");
  43.                 Console.Write("Сколько процентов хп должно быть выставлено? ");
  44.                 requiredFillRate = Convert.ToInt32(Console.ReadLine());
  45.             }
  46.  
  47.             health = (maxHealth / percentCalculation) * requiredFillRate;
  48.  
  49.             DrawBar(health, maxHealth, healthBarPositionX, healthBarPositionY);
  50.  
  51.             Console.WriteLine();
  52.         }
  53.  
  54.         static void DrawBar(double health, double maxHealth, int positionY, int positionX, char symbol = '#')
  55.         {
  56.             string bar = "";
  57.  
  58.             FillBar(0,health,'#',ref bar);
  59.  
  60.             Console.SetCursorPosition(positionY, positionX);
  61.             Console.Write("[");
  62.             Console.Write(bar);
  63.  
  64.             bar = "";
  65.  
  66.             FillBar(health,maxHealth,' ',ref bar);
  67.  
  68.             Console.Write(bar + "]");
  69.         }
  70.  
  71.         static string FillBar(double startOfString, double endOfString, char symbol,ref string bar)
  72.         {
  73.             for (double i = startOfString; i < endOfString; i++)
  74.             {
  75.                 bar += symbol;
  76.             }
  77.  
  78.             return bar;
  79.         }
  80.  
  81.         static int CheckUserInput(int requiredCoordinate, int minCoordinatePosition, int maxCoordinatePosition, char coordinateAxis)
  82.         {
  83.             while (requiredCoordinate < 0 || requiredCoordinate > 100)
  84.             {
  85.                 Console.WriteLine();
  86.                 Console.WriteLine($"Значение должно быть от {minCoordinatePosition} до {maxCoordinatePosition} %\n");
  87.                 Console.Write($"Задайте позицию отрисовки хп полоски по {coordinateAxis} от {minCoordinatePosition} до {maxCoordinatePosition}: ");
  88.                 requiredCoordinate = Convert.ToInt32(Console.ReadLine());
  89.             }
  90.  
  91.             return requiredCoordinate;
  92.         }
  93.     }
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement