Для создания игр на C++ достаточно знать всего 3 ключевых слова и двоеточие!

Почему-то принято считать, что программировать на C++ тяжело, и изучать язык тоже тяжело, у него много особенностей и так далее. Так вот, это все не совсем правда, и даже совсем не правда. Знать все особенности классно, но совершенно не нужно для того, чтобы делать игры…

Для того чтобы делать игры, достаточно знать о самом языке C++ что программы на C++ состоят из строчек, выполняющихся друг за другом. В строчке программы может стоять метка, и на такую метку можно перескочить из любого другого места в программе при помощи goto. А еще в программе могут быть целочисленные переменные, то есть именованные ячейки памяти в которые можно записать число. Ну и самая сложная из необходимых штука — условный оператор, проверяющий условие и выполняющий блок кода в фигурных скобках только если при проверке условия получилась "истина" или "не ноль". И все. Остальное в С++ можно не знать и при этом писать на С++ по несколько игр каждый день.

Единственной сложностью можно считать то, что сам по себе язык C++ не позволяет делать ничего интересного: чтобы узнать какую кнопку жмет пользователь, нарисовать на экране картинку, проиграть звук и так далее нужна библиотека, и в стандартный комплект поставки она не входит. А то что входит кроме как недоразумением назвать никак нельзя.

Итак, если взять хорошую библиотеку, то есть Arctic Engine, то игры на С++ можно делать используя только 3 ключевых слова. Наверное, в это никто не поверит, если я не покажу исходный код пары игр?

Следим за руками, краткий справочник по С++:

goto h;
Оператор безусловного перехода на строку с меткой h.

h:
Метка h.

int x;
Объявление целочисленной переменной x.

if(…) {. . }
Условный оператор, условие ставится в круглых скобках за if, если условие выполняется, то управление передается на оператор (операторы) , стоящий в фигурных скобках за условием. Если же оно не выполняется, то управление переходит к следующей за закрывающейся фигурной скобкой строке программы.

Все слова в приведенных далее программах, не вошедшие в этот справочник — это или имена переменных и меток, или имена функций библиотеки Arctic Engine. Функций библиотеки для создания игр может понадобиться примерно 18 штук, ну и для полного удовольствия еще пригодится строковой тип из стандартной библиотеки C++ (да, в C++ нельзя просто так взять и записать в любую переменную текст, для этого нужно объявить переменную специального библиотечного типа string) . Список нужных функций Arctic Engine с описаниями я опубликую если кто-нибудь попросит в коментариях.

А теперь давайте смотреть на исходный код игр и убеждаться что никакие дополнительные ключевые слова не используются.

Игра «Прыгун через камни»

Код написан исходя из предположения что его будут набирать 1 пальцем люди еще не выучившие английский, поэтому имена переменных однобуквенные. Чтобы как-то компенсировать это приведу описание переменных:
j — счетчик времени до конца прыжка.
b — координата знакоместа камня по горизонтальной оси (направлена слева направо) .
y — координата знакоместа персонажа игрока по вертикальной оси (направлена снизу вверх) .

1 int j = 0 2 int b = 31; 3 s: 4 if (IsKey(" ")) { 5 if (j == 0) { 6 j = 5; 7 } 8 } 9 int y = 0; 10 if (j > 0) { 11 y = 1; 12 j = j - 1; 13 } 14 b = b - 1; 15 if (b < 0) { 16 b = 31; 17 } 18 Cls(); 19 At(15, y); 20 Print("R"); 21 At(b, 0); 22 Print("O"); 23 if (Screen(15, y) == "O") { 24 At(10, 10); 25 Print("Game Over"); 26 Input(); 27 } 28 Sleep(0.05); 29 Show(); 30 goto s;

Всего 30 строчек, из которых 5 состоят только из закрывающейся фигурной скобки! Игра простенькая, однокнопочная, нужно жать пробел чтобы перепрыгивать через камни.

Слишком просто, да? Давайте чуть посложнее игру сделаем! Как насчет игры в которой космический корабль летит слева-направо и уклоняется от метеоритов?

Игра «Метеориты»

p — координата звездолета игрока по вертикальной оси.
x — координата по горизональной оси целевого знакоместа в алгоритме перемещения содержимого экрана справа-налево
y — координата по вертикальной оси целевого знакоместа в алгоритме перемещения содержимого экрана справа-налево

1 int p = 15; 2 b: 3 At(30, Random32(0, 17)); 4 Print("*"); 5 int x = 0; 6 v: 7 int y = 0; 8 h: 9 if (y < 18) { 10 At(x, y); 11 Print(Screen(x + 1, y)); 12 y = y + 1; 13 goto h; 14 } 15 x = x + 1; 16 if (x < 31) { 17 goto v; 18 } 19 if (IsKey(7)) { 20 p = p - 1; 21 } 22 if (IsKey(6)) { 23 p = p + 1; 24 } 25 if (Screen(0, p) == "*") { 26 At(10, 10); 27 Print("Game Over"); 28 Input(); 29 Cls(); 30 } 31 At(0, p); 32 Print(">"); 33 Sleep(0.07); 34 Show(); 35 goto b;

Совсем другое дело, 35 строчек кода! Наверное, тоже слишком простая игра, и управление всего двумя кнопками, давайте что-нибудь впечатляющее сделаем. Например игру, в которой нужно писать программу для робота, а потом этот робот должен программу выполнять. Придумаем для программирования робота новый язык, который будет состоять только из значков, чтобы проще было его учить. Пусть в программе для робота будут символы <^>V которые будут как бы стрелочками указывающими направление в котором робот должен переместиться на один свой размер. Робота нужно довести до места помеченного крестом.

Игра «Программирование робота»

x — координата робота по горизонтальной оси
y — координата робота по вертикальной оси
p — координата указателя выполняемой роботом инструкции по горизонтальной оси
s — выполняемая инструкция программы робота (с 16 по 27 строки) или содержимое знакоместа, на которое собирается переместиться робот (с 28 по 43 строки)
m — смещение новой позиции робота по горизонтальной оси
n — смещение новой позиции робота по вертикальной оси

1 bbb: 2 int x = 3; 3 int y = 10; 4 int p = 0; 5 At(0, 10); 6 Print("#\n#.#####\n#.#...#\n#...#X#"); 7 At(x, y); 8 Print("@"); 9 At(0, 17); 10 Print("Program:\n"); 11 Input(); 12 aaa: 13 string s = Screen(p, 16); 14 int m = 0; 15 int n = 0; 16 if (s == ">") { 17 m = 1; 18 } 19 if (s == "<") { 20 m = -1; 21 } 22 if (s == "V") { 23 n = -1; 24 } 25 if (s == "^") { 26 n = 1; 27 } 28 s = Screen(x + m, y + n); 29 if (s == "@") { 30 At(10, 10); 31 Print("Game Over!"); 32 ddd: 33 Input(); 34 Cls(); 35 goto bbb; 36 } 37 At(p, 15); 38 p = p + 1; 39 if (s == "#") { 40 Print("-"); 41 Beep(1, 0); 42 goto aaa; 43 } 44 Print("+"); 45 At(x, y); 46 Print(" "); 47 x = x + m; 48 y = y + n; 49 At(x, y); 50 Print("@"); 51 Sleep(1); 52 Show(); 53 if (s == "X") { 54 At(10, 10); 55 Print("Victory!"); 56 goto ddd; 57 } 58 goto aaa;

Вышло 58 строк.

Итак, для создания игр на C++ достаточно знать всего 3 ключевых слова и двоеточие! Почему я считаю это важным? Потому, что изучить 3 ключевых слова и научиться пользоваться справочником из 18 функций может не только бородатый программист, с этим отлично справляются даже первоклассники, и в результате вместо занудного изучения непонятно зачем нужных возможностей языка на примере абстрактных и скучных задач, можно изучать язык и алгоритмы программируя одну за другой игры в которых есть геймплей.

3.7K3.7K показов
16K16K открытий
11 репост
162 комментария

Комментарий недоступен

Ответить

конечно goto, пока странные люди не писавшие в жизни goto учат других людей не писать goto и объясняют как работают 3 вида циклов и рекурсия, настоящие разработчики игр уже во всю играют в самостоятельно написанные новые игры, развивают их и постепенно понимают все преимущества и недостатки goto и изучают остальные ключевые слова по мере необходимости

Ответить

Слишком сложно. Любую программу можно написать всего двумя символами - 0 и 1. Не нужны ни компиляторы, ни библиотеки, и скорость программы будет максимальной. Машинный код - лучший выбор! 👍

Ответить

Во первых за goto надо убивать.
Во вторых, здесь в статье нет ни одной строчки кода на С++

Ответить

Расскажи, почему тебе так не нравится goto. У тебя есть какая-то личная история или ты никогда не пользовался goto и просто боишься неведомого?

Ответить

Ага, тоже чистый "c" увидел)

Ответить

Когда тебе говорят про игры, но не уточняют какие игры..

Ответить