Загрузка данных


using System;

namespace ClassTesting
{
    class Program
    {
        static void Main(string[] args)
        {
            // Переменная для хранения команды пользователя
            string userCommand = "";
            
            // Бесконечный цикл для обработки команд
            bool infinity = true;
            
            // Пустой экземпляр класса Man (равный null)
            Man someMan = null;
            
            while (infinity) // Пока infinity равно true
            {
                // Приглашение ввести команду
                Console.WriteLine("Пожалуйста, введите команду");
                
                // Получение строки (команды) от пользователя
                userCommand = Console.ReadLine();
                
                // Обработка команды с помощью оператора ветвления
                switch (userCommand)
                {
                    case "exit":
                        infinity = false; // Завершаем цикл и программу
                        Console.WriteLine("Программа завершена.");
                        break;
                        
                    case "help":
                        Console.WriteLine("Список команд:");
                        Console.WriteLine("---");
                        Console.WriteLine("create_man : команда создает человека (экземпляр класса Man)");
                        Console.WriteLine("kill_man : команда убивает человека");
                        Console.WriteLine("talk : команда заставляет человека говорить (если создан экземпляр класса)");
                        Console.WriteLine("go : команда заставляет человека идти (если создан экземпляр класса)");
                        Console.WriteLine("is_alive : проверяет, жив ли человек");
                        Console.WriteLine("---");
                        break;
                        
                    case "create_man":
                        // Проверяем, создан ли уже какой-либо человек
                        if (someMan != null)
                        {
                            // Человек уже существует
                            Console.WriteLine($"{someMan.GetName()} уже существует и будет заменен.");
                            someMan.Kill(); // "Убиваем" предыдущего человека
                        }
                        
                        // Просим ввести имя человека
                        Console.WriteLine("Пожалуйста, введите имя создаваемого человека:");
                        
                        // Получаем строку, введенную пользователем
                        string name = Console.ReadLine();
                        
                        if (!string.IsNullOrWhiteSpace(name))
                        {
                            // Создаем нового человека с введенным именем
                            someMan = new Man(name);
                            Console.WriteLine($"Человек по имени {name} успешно создан!");
                            Console.WriteLine($"Возраст: {someMan.GetAge()}, Здоровье: {someMan.GetHealth()}");
                        }
                        else
                        {
                            Console.WriteLine("Имя не может быть пустым!");
                        }
                        break;
                        
                    case "kill_man":
                        if (someMan != null)
                        {
                            if (someMan.IsAlive())
                            {
                                someMan.Kill();
                                Console.WriteLine($"{someMan.GetName()} был убит.");
                            }
                            else
                            {
                                Console.WriteLine($"{someMan.GetName()} уже мертв.");
                            }
                        }
                        else
                        {
                            Console.WriteLine("Сначала создайте человека командой create_man!");
                        }
                        break;
                        
                    case "talk":
                        if (someMan != null && someMan.IsAlive())
                        {
                            someMan.Talk();
                        }
                        else if (someMan != null && !someMan.IsAlive())
                        {
                            Console.WriteLine($"{someMan.GetName()} не может говорить, он умер.");
                        }
                        else
                        {
                            Console.WriteLine("Сначала создайте человека командой create_man!");
                        }
                        break;
                        
                    case "go":
                        if (someMan != null && someMan.IsAlive())
                        {
                            someMan.Go();
                        }
                        else if (someMan != null && !someMan.IsAlive())
                        {
                            Console.WriteLine($"{someMan.GetName()} не может идти, он умер.");
                        }
                        else
                        {
                            Console.WriteLine("Сначала создайте человека командой create_man!");
                        }
                        break;
                        
                    case "is_alive":
                        if (someMan != null)
                        {
                            if (someMan.IsAlive())
                            {
                                Console.WriteLine($"{someMan.GetName()} жив.");
                            }
                            else
                            {
                                Console.WriteLine($"{someMan.GetName()} мертв.");
                            }
                        }
                        else
                        {
                            Console.WriteLine("Человек еще не создан!");
                        }
                        break;
                        
                    default:
                        Console.WriteLine("Ваша команда не определена, пожалуйста, повторите снова");
                        Console.WriteLine("Для вывода списка команд введите команду help");
                        Console.WriteLine("Для завершения программы введите команду exit");
                        break;
                }
                
                Console.WriteLine(); // Пустая строка для лучшей читаемости
            }
        }
    }
    
    public class Man
    {
        // Закрытые члены класса
        private string name;
        private uint age;
        private uint health;
        private bool isLife;
        
        // Экземпляр класса Random для генерации случайных чисел
        private Random rnd = new Random();
        
        // Конструктор класса
        public Man(string _name)
        {
            // Получаем имя человека из входного параметра конструктора класса
            name = _name;
            
            // Экземпляр жив
            isLife = true;
            
            // Генерируем возраст от 15 до 50
            age = (uint)rnd.Next(15, 51);
            
            // Генерируем здоровье от 10 до 100%
            health = (uint)rnd.Next(10, 101);
        }
        
        // Методы для доступа к приватным полям (добавлены для удобства)
        public string GetName() { return name; }
        public uint GetAge() { return age; }
        public uint GetHealth() { return health; }
        
        // Функция "говорить"
        public void Talk()
        {
            // Генерируем случайное число от 1 до 3
            int randomTalk = rnd.Next(1, 4);
            
            // Объявляем переменную, в которой мы будем хранить строку
            string tmpStr = "";
            
            // В зависимости от случайного значения randomTalk
            switch (randomTalk)
            {
                case 1: // Если 1 - называем свое имя
                    // Генерируем текст сообщения
                    tmpStr = "Привет, меня зовут " + name + ", рад познакомиться";
                    break;
                    
                case 2: // Возраст
                    // Генерируем текст сообщения
                    tmpStr = "Мне " + age + ". А тебе?";
                    break;
                    
                case 3: // Говорим о своем здоровье
                    // В зависимости от параметра здоровья
                    if (health > 50)
                        tmpStr = "Да я здоров как бык!";
                    else
                        tmpStr = "Со здоровьем у меня хреново, дожить бы до " + (age + 10).ToString();
                    break;
            }
            
            // Выводим в консоль сгенерированное сообщение
            Console.WriteLine(tmpStr);
        }
        
        // Функция "идти"
        public void Go()
        {
            // Если объект жив
            if (isLife == true)
            {
                // Если показатель здоровья более 40 - считаем объект здоровым
                if (health > 40)
                {
                    // Генерируем строку текста
                    string outString = name + " мирно прогуливается по городу";
                    // Выводим в консоль
                    Console.WriteLine(outString);
                }
                else
                {
                    // Генерируем строку текста
                    string outString = name + " болен и не может гулять по городу";
                    // Выводим в консоль
                    Console.WriteLine(outString);
                }
            }
            else
            {
                // Генерируем строку текста
                string outString = name + " не может идти, он умер";
                Console.WriteLine(outString);
            }
        }
        
        // Функция, которая убивает нашего человека
        public void Kill()
        {
            // Устанавливаем значение isLife (жив) в false
            isLife = false;
        }
        
        // Функция, возвращающая показатель - жив ли данный человек
        public bool IsAlive()
        {
            // Возвращаем значение, к которому мы не можем
            // обратиться напрямую извне класса,
            // так как оно имеет статус private
            return isLife;
        }
    }
}