Advertisement
Guest User

Untitled

a guest
Nov 16th, 2019
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 20.06 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 bidloCodVZdanii
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             int namber;
  14.             string command;
  15.             Renderer renderer = new Renderer();
  16.             Map map = new Map();
  17.  
  18.             Сarp[] carp = new Сarp[0];
  19.             NotCarp[] notCarp = new NotCarp[0];
  20.             DefinitelyNotCarp[] definitelyNotCarp = new DefinitelyNotCarp[0];
  21.  
  22.             ListCarp listCarp = new ListCarp(carp,3);
  23.             ListNotCarp listNotCarp = new ListNotCarp(notCarp,3);
  24.             ListDefinitelyNotCarp listDefinitelyNotCarp = new ListDefinitelyNotCarp(definitelyNotCarp,3);
  25.            
  26.             Console.CursorVisible = false;
  27.  
  28.             while (true)
  29.             {
  30.  
  31.                 Console.Clear();
  32.  
  33.                 renderer.WriteMap();
  34.  
  35.                 renderer.WriteListCarp(listCarp);
  36.                 renderer.WriteFishList2(listNotCarp);
  37.                 renderer.WriteFishList3(listDefinitelyNotCarp);
  38.  
  39.                 renderer.WriteFish1(listCarp.Carps);
  40.                 renderer.WriteFish2(listNotCarp.NotCarp);
  41.                 renderer.WriteFish3(listDefinitelyNotCarp.DefinitelyNotCarp);
  42.  
  43.                 listCarp.Demeanor();
  44.                 listNotCarp.Demeanor();
  45.                 listDefinitelyNotCarp.Demeanor();
  46.  
  47.                 Console.SetCursorPosition(51, 00);
  48.  
  49.                 Console.Write("1. Достать рыбку 2. Забрать рыбку 3. Выход");
  50.                 command = Console.ReadLine();
  51.  
  52.                 if (command == "1")
  53.                 {
  54.                     Console.SetCursorPosition(51, 01);
  55.                     Console.Write("Какую?");
  56.  
  57.                     command = Console.ReadLine();
  58.  
  59.                     switch (command)
  60.                     {
  61.                         case "1":
  62.                             listCarp.AddNewCarp();
  63.                             break;
  64.                         case "2":
  65.                             listNotCarp.AddNotCarp();
  66.                             break;
  67.                         case "3":
  68.                             listDefinitelyNotCarp.AddNewDNC();
  69.                             break;
  70.                     }
  71.                 }
  72.                 else if (command == "2")
  73.                 {
  74.                     Console.SetCursorPosition(51, 01);
  75.                     Console.Write("Какой тип и номер ");
  76.  
  77.                     command = Console.ReadLine();
  78.  
  79.                     Console.SetCursorPosition(72, 01);
  80.                     namber = Convert.ToInt32(Console.ReadLine());
  81.  
  82.                     switch (command)
  83.                     {
  84.                         case "1":
  85.                             listCarp.RemoveCarp(namber-1);
  86.                             break;
  87.  
  88.                         case "2":
  89.                             listNotCarp.RemoveNotCarp(namber-1);
  90.                             break;
  91.  
  92.                         case "3":
  93.                             listDefinitelyNotCarp.RemoveDNC(namber-1);
  94.                             break;
  95.                     }
  96.                 }
  97.                 else if (command == "3")
  98.                 {
  99.                     break;
  100.                 }
  101.             }
  102.         }
  103.     }
  104.  
  105.     class Fish
  106.     {
  107.         protected int _pozitionX;
  108.         protected int _pozitionY;
  109.         protected int _hp;
  110.         protected char _symbol;
  111.         protected Random _random = new Random();
  112.  
  113.         public int PozitionX
  114.         {
  115.             get
  116.             {
  117.                 return _pozitionX;
  118.             }
  119.         }
  120.  
  121.         public int PozitionY
  122.         {
  123.             get
  124.             {
  125.                 return _pozitionY;
  126.             }
  127.         }
  128.  
  129.         public int Hp
  130.         {
  131.             get
  132.             {
  133.                 return _hp;
  134.             }
  135.         }
  136.  
  137.         public char Symbol
  138.         {
  139.             get
  140.             {
  141.                 return _symbol;
  142.             }
  143.         }
  144.  
  145.         public Fish(int pozitionX, int pozitionY, int hp, char simvol)
  146.         {
  147.             _pozitionX = pozitionX;
  148.             _pozitionY = pozitionY;
  149.             _hp = hp;
  150.             _symbol = simvol;
  151.         }
  152.     }
  153.  
  154.     class Сarp : Fish
  155.     {
  156.        
  157.         public Сarp(int pozitionX = 5, int pozitionY = 1 , int hp=400, char simbol= '@') : base(pozitionX, pozitionY, hp, simbol)
  158.         {
  159.            
  160.         }
  161.         public void Demeanor()
  162.         {
  163.             Move move = new Move(_pozitionX, _pozitionY);
  164.            
  165.             _hp -= 2;
  166.  
  167.             switch (_random.Next(1,9))
  168.             {
  169.                 case 1:
  170.                     move.MoveDown();
  171.                     break;
  172.  
  173.                 case 2:
  174.                     move.MoveDownLeft();
  175.                     break;
  176.  
  177.                 case 3:
  178.                     move.MoveDownRight();
  179.                     break;
  180.  
  181.                 case 4:
  182.                     move.MoveLeft();
  183.                     break;
  184.  
  185.                 case 5:
  186.                     move.MoveUP();
  187.                     break;
  188.  
  189.                 case 6:
  190.                     move.MoveUPLeft();
  191.                     break;
  192.  
  193.                 case 7:
  194.                     move.MoveUPRight();
  195.                     break;
  196.  
  197.                 case 8:
  198.                     move.MoveRight();
  199.                     break;
  200.             }
  201.  
  202.             _pozitionX = move.PozitionX;
  203.             _pozitionY = move.PozitionY;
  204.         }
  205.     }
  206.  
  207.     class NotCarp : Fish
  208.     {
  209.         public NotCarp(int pozitionX= 10, int pozitionY = 1, int hp = 500, char simbol = '%') : base(pozitionX, pozitionY, hp, simbol)
  210.         {
  211.  
  212.         }
  213.         public void Demeanor()
  214.         {
  215.             Move move = new Move(_pozitionX, _pozitionY);
  216.            
  217.             _hp -= 5;
  218.  
  219.             switch (_random.Next(1, 5))
  220.             {
  221.                 case 1:
  222.                     move.MoveDown();
  223.                     break;
  224.  
  225.                 case 2:
  226.                     move.MoveLeft();
  227.                     break;
  228.  
  229.                 case 3:
  230.                     move.MoveRight();
  231.                     break;
  232.  
  233.                 case 4:
  234.                     move.MoveUP();
  235.                     break;
  236.             }
  237.  
  238.             _pozitionX = move.PozitionX;
  239.             _pozitionY = move.PozitionY;
  240.         }
  241.     }
  242.  
  243.     class DefinitelyNotCarp : Fish
  244.     {
  245.         public DefinitelyNotCarp(int pozitionX = 1, int pozitionY = 1, int hp = 200, char simbol = '&') : base(pozitionX, pozitionY, hp, simbol)
  246.         {
  247.  
  248.         }
  249.         public void Demeanor()
  250.         {
  251.             Move move = new Move(_pozitionX, _pozitionY);
  252.            
  253.             _hp -= 2;
  254.  
  255.             switch (_random.Next(1, 5))
  256.             {
  257.                 case 1:
  258.                     move.MoveDownLeft();
  259.                     break;
  260.                 case 2:
  261.                     move.MoveDownRight();
  262.                     break;
  263.                 case 3:
  264.                     move.MoveUPLeft();
  265.                     break;
  266.                 case 4:
  267.                     move.MoveUPRight();
  268.                     break;
  269.             }
  270.  
  271.             _pozitionX = move.PozitionX;
  272.             _pozitionY = move.PozitionY;
  273.         }
  274.     }
  275.  
  276.     class ListCarp
  277.     {
  278.         public Сarp[] Carps { get; private set; }
  279.         public int MaxCarps { get; private set; }
  280.  
  281.         public ListCarp(Сarp[] carps, int maxCarps)
  282.         {
  283.             Carps = carps;
  284.             MaxCarps = maxCarps;
  285.         }
  286.  
  287.         public void AddNewCarp()
  288.         {
  289.             Сarp newCarp = new Сarp();
  290.             Сarp[] localCarps = new Сarp[Carps.Length + 1];
  291.  
  292.             if (localCarps.Length <= MaxCarps)
  293.             {
  294.                 for (int i = 0; i < Carps.Length; i++)
  295.                 {
  296.                     localCarps[i] = Carps[i];
  297.                 }
  298.  
  299.                 localCarps[localCarps.Length - 1] = newCarp;
  300.  
  301.                 Carps = localCarps;
  302.             }
  303.         }
  304.  
  305.         public void RemoveCarp(int namber)
  306.         {
  307.             if (Carps.Length > 0 && namber< Carps.Length)
  308.             {
  309.                 Сarp[] localCarps = new Сarp[Carps.Length - 1];
  310.  
  311.                 int j = 0;
  312.  
  313.                 for (int i = 0; i < Carps.Length; i++)
  314.                 {
  315.                     if (i != namber)
  316.                     {
  317.                         localCarps[j] = Carps[i];
  318.  
  319.                         j++;
  320.                     }
  321.                 }
  322.  
  323.                 Carps = localCarps;
  324.             }
  325.            
  326.         }
  327.  
  328.         public void Demeanor()
  329.         {
  330.             for (int i = 0; i < Carps.Length; i++)
  331.             {
  332.                 if(Carps[i].Hp <= 0)
  333.                 {
  334.                     RemoveCarp(i);
  335.                 }
  336.                 else
  337.                 {
  338.                     Carps[i].Demeanor();
  339.                 }
  340.             }
  341.         }
  342.     }
  343.  
  344.     class ListNotCarp
  345.     {
  346.         public NotCarp[] NotCarp { get; private set; }
  347.         public int MaxNotCarp { get; private set; }
  348.         public ListNotCarp(NotCarp[] fish2, int maxNotCarp)
  349.         {
  350.             NotCarp = fish2;
  351.             MaxNotCarp = maxNotCarp;
  352.         }
  353.  
  354.         public void AddNotCarp()
  355.         {
  356.             NotCarp newNotCarp = new NotCarp();
  357.             NotCarp[] localNotCarp = new NotCarp[NotCarp.Length + 1];
  358.  
  359.             if (localNotCarp.Length <= MaxNotCarp)
  360.             {
  361.                 for (int i = 0; i < NotCarp.Length; i++)
  362.                 {
  363.                     localNotCarp[i] = NotCarp[i];
  364.                 }
  365.  
  366.                 localNotCarp[localNotCarp.Length - 1] = newNotCarp;
  367.  
  368.                 NotCarp = localNotCarp;
  369.             }
  370.            
  371.         }
  372.  
  373.         public void RemoveNotCarp(int namber)
  374.         {
  375.             NotCarp[] localNotCarp = new NotCarp[NotCarp.Length - 1];
  376.             int j = 0;
  377.  
  378.             for (int i = 0; i < NotCarp.Length; i++)
  379.             {
  380.                 if (i != namber)
  381.                 {
  382.                     localNotCarp[j] = NotCarp[i];
  383.                     j++;
  384.                 }
  385.             }
  386.  
  387.             NotCarp = localNotCarp;
  388.         }
  389.  
  390.         public void Demeanor()
  391.         {
  392.             for (int i = 0; i < NotCarp.Length; i++)
  393.             {
  394.                 if (NotCarp[i].Hp <= 0)
  395.                 {
  396.                     RemoveNotCarp(i);
  397.                 }
  398.                 else
  399.                 {
  400.                     NotCarp[i].Demeanor();
  401.                 }
  402.  
  403.             }
  404.         }
  405.     }
  406.  
  407.     class ListDefinitelyNotCarp
  408.     {
  409.         public DefinitelyNotCarp[] DefinitelyNotCarp { get; private set; }
  410.         public int MaxDNC { get; private set; }
  411.         public ListDefinitelyNotCarp(DefinitelyNotCarp[] definitelyNotCarp, int maxDNC)
  412.         {
  413.             DefinitelyNotCarp = definitelyNotCarp;
  414.             MaxDNC = maxDNC;
  415.         }
  416.  
  417.         public void AddNewDNC()
  418.         {
  419.             DefinitelyNotCarp newDNC = new DefinitelyNotCarp();
  420.             DefinitelyNotCarp[] localDNC = new DefinitelyNotCarp[DefinitelyNotCarp.Length + 1];
  421.  
  422.             if (localDNC.Length <= MaxDNC)
  423.             {
  424.                 for (int i = 0; i < DefinitelyNotCarp.Length; i++)
  425.                 {
  426.                     localDNC[i] = DefinitelyNotCarp[i];
  427.                 }
  428.  
  429.                 localDNC[localDNC.Length - 1] = newDNC;
  430.  
  431.                 DefinitelyNotCarp = localDNC;
  432.             }
  433.            
  434.         }
  435.  
  436.         public void RemoveDNC(int namber)
  437.         {
  438.             DefinitelyNotCarp[] localDNC = new DefinitelyNotCarp[DefinitelyNotCarp.Length - 1];
  439.  
  440.             int j = 0;
  441.  
  442.             for (int i = 0; i < DefinitelyNotCarp.Length; i++)
  443.             {
  444.                 if (i != namber)
  445.                 {
  446.                     localDNC[j] = DefinitelyNotCarp[i];
  447.  
  448.                     j++;
  449.                 }
  450.             }
  451.  
  452.             DefinitelyNotCarp = localDNC;
  453.         }
  454.         public void Demeanor()
  455.         {
  456.             for (int i = 0; i < DefinitelyNotCarp.Length; i++)
  457.             {
  458.                 if (DefinitelyNotCarp[i].Hp <= 0)
  459.                 {
  460.                     RemoveDNC(i);
  461.                 }
  462.                 else
  463.                 {
  464.                     DefinitelyNotCarp[i].Demeanor();
  465.                 }
  466.             }
  467.         }
  468.     }
  469.  
  470.     class Move
  471.     {
  472.         public int PozitionX { get; protected set; }
  473.         public int PozitionY { get; protected set; }
  474.  
  475.         private Map _map = new Map();
  476.  
  477.         public Move(int pozitionX, int pozitionY)
  478.         {
  479.             PozitionX = pozitionX;
  480.             PozitionY = pozitionY;
  481.         }
  482.  
  483.         public void MoveUP()
  484.         {
  485.             if (_map.GetMap[PozitionY, PozitionX - 1] != '#')
  486.             {
  487.                 PozitionX--;
  488.             }
  489.         }
  490.  
  491.         public void MoveDown()
  492.         {
  493.             if (_map.GetMap[PozitionY, PozitionX + 1] != '#')
  494.             {
  495.                 PozitionX++;
  496.             }
  497.         }
  498.  
  499.         public void MoveRight()
  500.         {
  501.             if (_map.GetMap[PozitionY + 1, PozitionX] != '#')
  502.             {
  503.                 PozitionY++;
  504.             }
  505.         }
  506.  
  507.         public void MoveLeft()
  508.         {
  509.             if (_map.GetMap[PozitionY - 1, PozitionX] != '#')
  510.             {
  511.                 PozitionY--;
  512.             }
  513.         }
  514.  
  515.         public void MoveUPRight()
  516.         {
  517.             if (_map.GetMap[PozitionY + 1, PozitionX - 1] != '#')
  518.             {
  519.                 PozitionX--;
  520.                 PozitionY++;
  521.             }
  522.         }
  523.  
  524.         public void MoveUPLeft()
  525.         {
  526.             if (_map.GetMap[PozitionY - 1, PozitionX - 1] != '#')
  527.             {
  528.                 PozitionX--;
  529.                 PozitionY--;
  530.             }
  531.         }
  532.  
  533.         public void MoveDownRight()
  534.         {
  535.             if (_map.GetMap[PozitionY + 1, PozitionX + 1] != '#')
  536.             {
  537.                 PozitionX++;
  538.                 PozitionY++;
  539.             }
  540.         }
  541.  
  542.         public void MoveDownLeft()
  543.         {
  544.             if (_map.GetMap[PozitionY - 1, PozitionX + 1] != '#')
  545.             {
  546.                 PozitionX++;
  547.                 PozitionY--;
  548.             }
  549.         }
  550.     }
  551.  
  552.     class Map
  553.     {
  554.         private char[,] _map =
  555.         {
  556.                 {'#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#' },
  557.                 {'#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','#' },
  558.                 {'#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','#' },
  559.                 {'#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','#' },
  560.                 {'#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','#' },
  561.                 {'#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','#' },
  562.                 {'#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','#' },
  563.                 {'#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','#' },
  564.                 {'#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','#' },
  565.                 {'#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','#' },
  566.                 {'#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','#' },
  567.                 {'#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#' },
  568.         };
  569.  
  570.         public char[,] GetMap
  571.         {
  572.             get
  573.             {
  574.                 return _map;
  575.             }
  576.         }
  577.  
  578.         public int LengthMap
  579.         {
  580.             get
  581.             {
  582.                 return _map.GetLength(0);
  583.             }
  584.         }
  585.  
  586.         public int HeightMap
  587.         {
  588.             get
  589.             {
  590.                 return _map.GetLength(1);
  591.             }
  592.         }
  593.     }
  594.  
  595.     class Renderer
  596.     {
  597.         public void WriteMap()
  598.         {
  599.             Map map = new Map();
  600.  
  601.             Console.SetCursorPosition(0, 0);
  602.  
  603.             for (int i = 0; i < map.LengthMap; i++)
  604.             {
  605.                 for (int j = 0; j < map.HeightMap; j++)
  606.                 {
  607.                     Console.Write(map.GetMap[i, j]);
  608.                 }
  609.  
  610.                 Console.WriteLine();
  611.             }
  612.         }
  613.         public void WriteListCarp(ListCarp listCarp)
  614.         {
  615.             Console.SetCursorPosition(0, 12);
  616.             Console.WriteLine("Караси:");
  617.  
  618.             if (listCarp.Carps.Length == 0)
  619.             {
  620.                 Console.WriteLine("Их нет");
  621.             }
  622.  
  623.             for (int i = 0; i < listCarp.Carps.Length; i++)
  624.             {
  625.                 Console.WriteLine($"Номер: {i + 1}; Жизни: {listCarp.Carps[i].Hp}; Вид: {listCarp.Carps[i].Symbol}");
  626.             }
  627.         }
  628.         public void WriteFishList2(ListNotCarp ListFish2)
  629.         {
  630.             Console.SetCursorPosition(0, 17);
  631.             Console.WriteLine("Не караси:");
  632.  
  633.             if (ListFish2.NotCarp.Length == 0)
  634.             {
  635.                 Console.WriteLine("Инвентарь пусть");
  636.             }
  637.  
  638.             for (int i = 0; i < ListFish2.NotCarp.Length; i++)
  639.             {
  640.                 Console.WriteLine($"Номер: {i + 1}; Жизни: {ListFish2.NotCarp[i].Hp}; Вид: {ListFish2.NotCarp[i].Symbol}");
  641.             }
  642.         }
  643.         public void WriteFishList3(ListDefinitelyNotCarp ListFish3)
  644.         {
  645.             Console.SetCursorPosition(0, 22);
  646.             Console.WriteLine("Совсем не караси:");
  647.  
  648.             if (ListFish3.DefinitelyNotCarp.Length == 0)
  649.             {
  650.                 Console.WriteLine("Инвентарь пусть");
  651.             }
  652.  
  653.             for (int i = 0; i < ListFish3.DefinitelyNotCarp.Length; i++)
  654.             {
  655.                 Console.WriteLine($"Номер: {i + 1}; Жизни: {ListFish3.DefinitelyNotCarp[i].Hp}; Вид: {ListFish3.DefinitelyNotCarp[i].Symbol}");
  656.             }
  657.         }
  658.         public void WriteFish1(Сarp[] Fish1)
  659.         {
  660.  
  661.             if (Fish1.Length == 0)
  662.             {
  663.                 Console.WriteLine("");
  664.             }
  665.  
  666.             for (int i = 0; i < Fish1.Length; i++)
  667.             {
  668.                 Console.SetCursorPosition(Fish1[i].PozitionX, Fish1[i].PozitionY);
  669.                 Console.WriteLine(Fish1[i].Symbol);
  670.             }
  671.         }
  672.         public void WriteFish2(NotCarp[] Fish2)
  673.         {
  674.  
  675.             if (Fish2.Length == 0)
  676.             {
  677.                 Console.WriteLine("");
  678.             }
  679.  
  680.             for (int i = 0; i < Fish2.Length; i++)
  681.             {
  682.                 Console.SetCursorPosition(Fish2[i].PozitionX, Fish2[i].PozitionY);
  683.                 Console.WriteLine(Fish2[i].Symbol);
  684.             }
  685.         }
  686.         public void WriteFish3(DefinitelyNotCarp[] Fish3)
  687.         {
  688.  
  689.             if (Fish3.Length == 0)
  690.             {
  691.                 Console.WriteLine("");
  692.             }
  693.  
  694.             for (int i = 0; i < Fish3.Length; i++)
  695.             {
  696.                 Console.SetCursorPosition(Fish3[i].PozitionX, Fish3[i].PozitionY);
  697.                 Console.WriteLine(Fish3[i].Symbol);
  698.             }
  699.         }
  700.     }
  701. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement