Привет, друзья! 👋 Рад снова видеть вас в блоге. Если вы следите за моим путём в C#, то знаете: на прошлом уроке мы создали статичного героя — просто вывели его характеристики на экран. А сегодня… мы дали ему жизнь! Теперь игрок может сам выбрать класс и получить разные стартовые статы. И всё это — с помощью ввода данных и условных операторов.
🗣 Программа научилась «слушать»
На уроке мой ИИ‑наставник объяснил, что если Console.WriteLine() — это «рот» программы (она говорит), то Console.ReadLine() — это её «уши». Эта команда останавливает выполнение кода и ждёт, пока игрок введёт текст и нажмёт Enter.
Самое важное, что я усвоил сразу: ReadLine() всегда возвращает строку (string). Даже если игрок вводит цифру «1», программа видит это как текст "1". Поэтому сравнивать нужно именно с текстом: if (heroClas == "1"), а не if (heroClas == 1).
🤔 И принимать решения
Чтобы программа реагировала на выбор, мы использовали конструкцию if, else if и else. Это как разветвление сюжета в RPG:
- Если игрок выбрал «1» — он Воин: много здоровья, мало маны.
- Если «2» — Маг: наоборот.
- А если ввёл что-то не то — получает средние статы и сообщение об ошибке.
И тут наставник сделал важный акцент: в условии нужно использовать два знака равно (==) — это сравнение. Один знак (=) — это присваивание. Если перепутать, программа либо выдаст ошибку, либо будет вести себя странно. Сначала было непривычно, но теперь я это чётко держу в голове.
💻 Мой код: генератор персонажа для RPG
Вот что у меня получилось по заданию:
using System; //Эта строчка подключает базовые инструменты C#. Она должна быть сверху.
namespace MyFirstRPG // Это название нашего проекта, как название папки с заключениями
{
class Program // Главный класс. Пока просто знай, что он нужен.
{
// Это точка входа. С этой строчки начинает выполняться наш код.
static void Main(string[] args)
{
// Создаем коробочки (переменные) для нашего героя и кладем в них данные
int heroLevel = 1; // Уровень героя (число)
int heroHealth = 100; // Здоровье героя (число)
int heroMana = 50; // Мана героя (число)
// Знакомство с игроком
Console.WriteLine("Добро пожаловать в мою первую RPG!");
Console.WriteLine("Как тебя зовут?");
string heroName = Console.ReadLine(); // Программа ждет ввода и сохранит его в переменную
Console.WriteLine("Привет, " + heroName + "!");
// Выбираем класс и выведем информацию
Console.WriteLine("Выбери класс за который будешь играть: 1 - Воин (много здоровья), 2 - Маг (много маны)");
string heroClass = Console.ReadLine(); // Вводим класс героя и сохраняем в переменную
// Начало условия
if (heroClass == "1") // Условия для выбора класса героя
{
heroHealth = 150;
heroMana = 20;
heroClass = "Воин";
Console.WriteLine("Вы выброли воина");
}
else if (heroClass == "2")
{
heroHealth = 80;
heroMana = 150;
heroClass = "Маг";
Console.WriteLine("Вы выбрали мага");
}
else
{
Console.WriteLine("Такого класса нет!!! Получи стандартные хр-ки");
}
// Конец условия
// Вывод результата
Console.WriteLine("Герой: [" + heroName + "] готов к бою!");
Console.WriteLine("Класс: " + heroClass);
Console.WriteLine("Здоровье: " + heroHealth);
Console.WriteLine("Мана: " + heroMana);
Console.WriteLine("Уровень: " + heroLevel);
// Эта команда ждет нажатия любой клавиши, чтобы окно не закрылось мгновенно
Console.ReadKey();
}
}
}
Когда я запустил этот код, впервые почувствовал, что создаю именно игру, а не просто вывод текста. Игрок вводит имя, выбирает класс — и получает разный результат. Это уже похоже на настоящий игровой процесс! 🤩
🧠 Что было сложно и как я с этим справился
Сначала я по привычке написал if (heroClas = "1") — и получил ошибку. Наставник сразу подсказал, где подвох: перепутал присваивание и сравнение. После этого я специально проговаривал вслух: «Один равно — кладу значение, два равно — сравниваю». Так лучше запоминается.
Ещё я немного поэкспериментировал: добавил вывод сообщения о классе сразу после выбора. Это мелочь, но она делает взаимодействие приятнее.
🚀 Что дальше?
Впереди — циклы, массивы и работа с коллекциями. Они понадобятся, чтобы реализовать инвентарь, список врагов, диалоги и прокачку. А потом будем переносить эту логику в игровой движок (скорее всего, Unity).
А вы когда-нибудь делали интерактивные консольные программы? Может, у вас есть свои лайфхаки, как не путать = и ==, или любимые приёмы для обработки ввода? Поделитесь в комментариях — мне очень интересно! 👇
И ещё вопрос: какой класс вы бы выбрали для своего героя в RPG — Воина или Мага? Или придумали бы свой? Ваши идеи могут вдохновить меня на новые механики! 💡
#Csharp #Программирование #Геймдев #РазработкаИгр #МойПуть #RPG #Интерактивность #Условия #ВводДанных