Основы синтаксиса и переменные
Основы синтаксиса и переменные
Язык программирования C++ — это один из самых мощных и популярных инструментов в мире разработки. На нём написаны операционные системы, браузеры и, что самое интересное для нас, большинство современных высокобюджетных игр. Движок Unreal Engine, на котором созданы Fortnite, The Witcher 4 и S.T.A.L.K.E.R. 2, использует именно C++.
Компьютер не понимает человеческую речь. Он понимает только нули и единицы — машинный код. Язык программирования выступает в роли переводчика: мы пишем понятные нам команды, а специальная программа (компилятор) переводит их в нули и единицы. Чтобы этот переводчик нас понял, мы должны соблюдать строгие правила грамматики и пунктуации. В программировании эти правила называются синтаксисом.
Анатомия первой программы
Любая игра или приложение начинается с базового каркаса. Давайте посмотрим на самую простую программу на C++, которая выводит на экран приветствие для игрока.
#include <iostream>
int main() {
std::cout << "Hello, Player!";
return 0;
}
На первый взгляд это может выглядеть как случайный набор символов, но у каждой детали здесь есть своя строгая функция. Разберём этот код построчно:
#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. - Тип (форма коробки), который определяет, что именно можно положить внутрь. В коробку для чисел нельзя положить текст.
- Значение (содержимое коробки) — то, что лежит внутри прямо сейчас. Например, число 100.
Базовые типы данных
В 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— это две совершенно разные переменные.
Создание и использование переменных
Процесс создания переменной называется объявлением. Вы можете сначала создать пустую коробку, а потом положить в неё значение, либо сделать это одновременно (это называется инициализацией).
// Вариант 1: Сначала объявляем, потом присваиваем значение
int ammo;
ammo = 30;
// Вариант 2: Объявляем и сразу инициализируем (рекомендуется)
int health = 100;
Знак = в программировании означает не математическое равенство, а команду присваивания. Он работает справа налево: «возьми то, что справа от равно, и положи в коробку, которая указана слева».
Переменные потому и называются переменными, что их значения можно менять по ходу программы. Давайте посмотрим, как персонаж получает урон:
int health = 100; // Начальное здоровье
health = health - 20; // Получили урон
Во второй строчке компьютер сначала смотрит на правую часть: берет текущее значение health (100), вычитает из него 20, получает 80, и затем кладет это новое значение обратно в коробку health. Старое значение стирается навсегда.
Ввод и вывод данных: делаем игру интерактивной
Программа, которая просто выводит текст и завершается, скучна. Настоящая игра должна реагировать на действия пользователя. Мы уже знаем, что std::cout используется для вывода информации на экран (как мегафон). Для получения информации от пользователя с клавиатуры используется его брат-близнец — std::cin (как микрофон).
cin расшифровывается как character input (ввод символов). Обратите внимание, что стрелки для него направлены в другую сторону >>, так как данные текут от клавиатуры внутрь нашей переменной.
Давайте напишем простую программу — экран создания персонажа. Мы спросим у игрока его возраст и желаемый уровень сложности.
#include <iostream>
int main() {
// 1. Создаем пустые коробки для ответов игрока
int age;
int difficulty;
// 2. Задаем вопрос (выводим текст)
std::cout << "Welcome to the game! Enter your age: ";
// 3. Ждем, пока игрок введет число и нажмет Enter
std::cin >> age;
// 4. Задаем второй вопрос
std::cout << "Choose difficulty (1 - Easy, 2 - Hard): ";
std::cin >> difficulty;
// 5. Выводим результат, комбинируя текст и переменные
std::cout << "Character created! Age: " << age << ". Difficulty level: " << difficulty;
return 0;
}
В этом примере мы использовали цепочку вывода в 5-м шаге. С помощью нескольких операторов << можно склеивать обычный текст в кавычках и значения переменных в одно длинное сообщение.
Если игрок введет возраст 25 и сложность 2, на экране появится:
Character created! Age: 25. Difficulty level: 2
Математика в C++
Компьютеры создавались для вычислений, поэтому базовые математические операции встроены в язык на самом глубоком уровне. Вы можете использовать стандартные символы:
- Сложение:
+ - Вычитание:
- - Умножение:
* - Деление:
/
Представим ситуацию: игрок нашел сундук с золотом. У него уже было 50 монет, а в сундуке оказалось 3 мешочка по 15 монет в каждом. Как рассчитать итоговое богатство?
int currentGold = 50;
int bagsFound = 3;
int goldPerBag = 15;
// Сначала выполнится умножение, затем сложение
int totalGold = currentGold + (bagsFound * goldPerBag);
std::cout << "Total gold: " << totalGold;
Программа выведет Total gold: 95. Как и в обычной математике, в C++ соблюдается приоритет операций (умножение выполняется раньше сложения), а круглые скобки () позволяют этот приоритет изменить или сделать код более читаемым.
Понимание того, как создавать переменные, менять их значения и выводить результат на экран — это фундамент. Любая, даже самая сложная игра вроде Cyberpunk 2077, в своей основе состоит из миллионов таких переменных (координаты пуль, здоровье врагов, скорость машин), которые постоянно пересчитываются и выводятся на экран монитора.