1. Основы синтаксиса и переменные
Основы синтаксиса и переменные
Язык программирования C++ — это один из самых мощных и популярных инструментов в мире разработки. На нём написаны операционные системы, браузеры и, что самое интересное для нас, большинство современных высокобюджетных игр. Движок Unreal Engine, на котором созданы Fortnite, The Witcher 4 и S.T.A.L.K.E.R. 2, использует именно C++.
Компьютер не понимает человеческую речь. Он понимает только нули и единицы — машинный код. Язык программирования выступает в роли переводчика: мы пишем понятные нам команды, а специальная программа (компилятор) переводит их в нули и единицы. Чтобы этот переводчик нас понял, мы должны соблюдать строгие правила грамматики и пунктуации. В программировании эти правила называются синтаксисом.
Анатомия первой программы
Любая игра или приложение начинается с базового каркаса. Давайте посмотрим на самую простую программу на C++, которая выводит на экран приветствие для игрока.
На первый взгляд это может выглядеть как случайный набор символов, но у каждой детали здесь есть своя строгая функция. Разберём этот код построчно:
#include <iostream> — это команда подключения библиотеки. Представьте, что вы собираете шкаф. Сами по себе ваши руки не могут закрутить шуруп, вам нужна отвертка. Эта строчка говорит компьютеру: «Возьми из кладовки набор инструментов для ввода и вывода данных (Input/Output Stream)». Без неё программа не сможет ничего написать на экране.int main() { ... } — это главная точка входа в программу. Когда вы запускаете игру (кликаете по иконке), компьютер ищет именно функцию с именем main (главная) и начинает выполнять команды, спрятанные внутри фигурных скобок {}. Фигурные скобки обозначают границы: где начинается и где заканчивается главный блок кода.std::cout << "Hello, Player!"; — это команда вывода текста на экран. std:: указывает, что мы берем инструмент из стандартного набора (standard).
- cout расшифровывается как character output (вывод символов).
- << — это стрелки, которые показывают направление. Мы буквально берем текст "Hello, Player!" и отправляем его в cout (на экран).
- ; (точка с запятой) — это важнейший элемент синтаксиса C++. Она работает как точка в конце обычного предложения. Если её забыть, компилятор выдаст ошибку, потому что не поймет, где закончилась ваша мысль.
return 0; — эта команда сообщает операционной системе, что программа завершила свою работу успешно (вернула ноль ошибок).Переменные: коробки для хранения данных
В любой игре постоянно что-то меняется: здоровье персонажа уменьшается от ударов, количество золота растет после продажи лута, а координаты игрока обновляются каждую миллисекунду. Чтобы компьютер мог запоминать и изменять эти данные, используются переменные.
Переменную проще всего представить как картонную коробку на складе.
!Переменные как коробки для хранения данных
У этой коробки есть три обязательных свойства:
health, score, playerName.Базовые типы данных
В C++ существует строгая типизация. Это значит, что вы должны заранее сказать компьютеру, какого типа данные будут храниться в переменной. Вот основные типы, которые понадобятся вам для создания игр:
| Тип данных | Что хранит | Пример из игр | Пример в коде |
| :--- | :--- | :--- | :--- |
| int | Целые числа (без дробей) | Количество жизней, патроны, уровень | int level = 5; |
| double | Дробные числа | Скорость бега, точные координаты, вес | double speed = 4.5; |
| char | Один символ | Нажатая клавиша на клавиатуре | char moveForward = 'W'; |
| bool | Логическое значение (да/нет) | Жив ли игрок? Открыта ли дверь? | bool isAlive = true; |
| std::string | Текст (строка символов) | Имя персонажа, название локации | std::string name = "Hero"; |
> Важное правило: имена переменных в C++ могут состоять только из латинских букв, цифр и знака подчеркивания _. При этом имя не может начинаться с цифры. Также в C++ имеет значение регистр букв: Score и score — это две совершенно разные переменные.
Создание и использование переменных
Процесс создания переменной называется объявлением. Вы можете сначала создать пустую коробку, а потом положить в неё значение, либо сделать это одновременно (это называется инициализацией).
Знак = в программировании означает не математическое равенство, а команду присваивания. Он работает справа налево: «возьми то, что справа от равно, и положи в коробку, которая указана слева».
Переменные потому и называются переменными, что их значения можно менять по ходу программы. Давайте посмотрим, как персонаж получает урон:
Во второй строчке компьютер сначала смотрит на правую часть: берет текущее значение health (100), вычитает из него 20, получает 80, и затем кладет это новое значение обратно в коробку health. Старое значение стирается навсегда.
Ввод и вывод данных: делаем игру интерактивной
Программа, которая просто выводит текст и завершается, скучна. Настоящая игра должна реагировать на действия пользователя. Мы уже знаем, что std::cout используется для вывода информации на экран (как мегафон). Для получения информации от пользователя с клавиатуры используется его брат-близнец — std::cin (как микрофон).
cin расшифровывается как character input (ввод символов). Обратите внимание, что стрелки для него направлены в другую сторону >>, так как данные текут от клавиатуры внутрь нашей переменной.
Давайте напишем простую программу — экран создания персонажа. Мы спросим у игрока его возраст и желаемый уровень сложности.
В этом примере мы использовали цепочку вывода в 5-м шаге. С помощью нескольких операторов << можно склеивать обычный текст в кавычках и значения переменных в одно длинное сообщение.
Если игрок введет возраст 25 и сложность 2, на экране появится:
Character created! Age: 25. Difficulty level: 2
Математика в C++
Компьютеры создавались для вычислений, поэтому базовые математические операции встроены в язык на самом глубоком уровне. Вы можете использовать стандартные символы:
+-*/Представим ситуацию: игрок нашел сундук с золотом. У него уже было 50 монет, а в сундуке оказалось 3 мешочка по 15 монет в каждом. Как рассчитать итоговое богатство?
Программа выведет Total gold: 95. Как и в обычной математике, в C++ соблюдается приоритет операций (умножение выполняется раньше сложения), а круглые скобки () позволяют этот приоритет изменить или сделать код более читаемым.
Понимание того, как создавать переменные, менять их значения и выводить результат на экран — это фундамент. Любая, даже самая сложная игра вроде Cyberpunk 2077, в своей основе состоит из миллионов таких переменных (координаты пуль, здоровье врагов, скорость машин), которые постоянно пересчитываются и выводятся на экран монитора.