🎮 Пост №3: Делаем RPG интерактивной — добавляем выбор и реакцию на действия игрока! 🎮

Привет, друзья! 👋 Рад снова видеть вас в блоге. Если вы следите за моим путём в 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 #Интерактивность #Условия #ВводДанных

Оставьте комментарий