Загрузка данных
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;
}
}
}