Учебный пример на Си++, Игра Виселица: Определение начальных свойств и методов механизма игры, или как правильно начать строить механику программы с нуля.

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

При этом, в прошлой статье мы лишь затронули умение «читать программный код», а также его противоположное умение «писать программный код», применяя при этом разные подходы. И да, все это вкратце, т.к. на все детали, вы, насмотритесь еще при своей практике, без меня.

Однако, учтя программный код, стоит заметить, что во второй статье завершилась подготовка каркасного алгоритма, выраженного «Линейным» способом в исходном программном коде, но не произошло ожидаемых изменений в нем самом.

Это, нормально, т.к. изменения программного кода пойдут с этой статьи и закончатся пятой статьей, т.е. в течении трех статей. А шестая, внесет ощутимые изменения в визуальной части программы-игры «Виселица».

В данной статье, мы затронем основы и азы движкостроения, которые помогут переделать код программы уже на уровень Си++ и его возможностей, а не простого Си с элементами Си++, как это было видно в листингах исходного кода программы-игры «Виселица». Эти знания вам помогут не только писать игры, а также научиться понять зачем вообще это применяется в качестве основы для современных программ. И разумеется, об этом будет вкратце.

Где у программы двигатель или почему нет стартера?!

Как всем известно, программы, которые имеют движок, почему-то лишены стартеров и прочей приблуды механики. Возникает разумный вопрос: «Как же так?!». Почему эти, варвары, взяли только движок, однако остальное оставили механикам?! Ответ также прост, как и сам, наш, родной мир. Механика была для них преемственной системой определений и информации, поэтому они спокойно переняли то, что им было нужно, а остальное отбросили. Ровно, по этой причине, я не стремлюсь для вас описывать все более понятным языком, т.к. отбрасываю то, что вы можете найти самостоятельно потому, что знаю, вам, это по силам. А то, что стоит передать, в плане накопленного опыта, есть те информации и определения, которыми обмениваюсь с другими, это мой вклад. Теже, кто говорят, что автор днище, по сути сами заявляют, что они — днища. Я намеренно, не убрал эти строки, потому что частью моих обязательств, быть самим собою. Однако, это не мешает мне меняться в своих взглядах и поступать правильно, это один из путей развития со своими ошибками. А теперь, давайте прочтем другой абзац.

Каждая система в той или иной мере является предтечей для других систем, поэтому нет ничего удивительного в таком странном названии, как «движок». И разумеется с моей стороны весьма занятно будет, описывать, что движок должен «Дрынь-Дрынь-Дрынь-Та-ТА-Та….», чтобы он работал. Т.е. мое объяснение, будет в таком случае, соответствовать канонам западного феншуя, когда знание таскают в материальной форме со всеми извратами, как неведомую хулу, а потом выбрасывают. В этой статье пойдем, нормальным путем. Задаваясь, нормальными вопросами. Вы готовы? Тогда, пойдем дальше.

Механизм программы — это механика движения, выраженная логикой исполнения компьютером. Это основа, которую всегда стоит применять отправной точкой, при условии, что хотите написать Программу, а не поделку. Разумеется есть еще одно понимание, механика — это система, состоящая из элементарных деталей и/или более простых механизмов. Заметьте, представлять все это системой нормальней, чем совокупностью фиг знает чего. Не тратьте свое время и силы на ерунду, вы не обязаны воображать, это само обязано быть понятным. Вы, не вечный двигатель строите и не метафизику со всеми абстракциями, а конкретный механизм, систему логики, которую исполняет компьютер. Наверняка, вы не задумывались о том, что на разные вещи и определения можно посмотреть столь интересным образом? Если так, то зря, много упустили.

Что ж, теперь вы знаете то, что раньше вам не говорили. А теперь, обратите внимание на то, что каждый элемент программы в этом цикле статей, по сути, элементарная деталь или простейший механизм (дополнения), а корпус механизма — это каркасный алгоритм. Все это, механизм, по сути. Однако, еще есть и смысл. Хе-хе, чего ждете, про смысл было сказано в предыдущем абзаце. 😉 Ладно, про суть и смысл механизма, что имело смысл сказать, сказал. Теперь, пойдем по самой программе.

Как механизм программы выражается на практике языком программирования в исходном коде программы

Здесь все проще паренной репы. Достаточно обратить внимание на исходный код с комментариями и блоки, которые выложены в конце второй статьи. Учитывая все ранее сказанное, в том что механизм программы — это механика движения, выраженная логикой исполнения компьютером, а также то, что механика — это система, состоящая из элементарных деталей или более простых механизмов. То, не трудно будет сказать, где что в исходном коде программы ниже.

Как видите из исходного кода стоит выделить несколько моментов, относящихся к самому механизму программы-игры «Виселица». Проверка игровых условий по любому стоит вынести в отдельную механику, как и игровой процесс. Остальное, либо дополнения, либо части других механик. Ответ на вопрос: «Почему так?», прост и понятен, потому что первым переносится в класс механизма то, что очевидно. А потом, дополняется тем, чего не было в начале.

Помните, первый пример и что он выражает? Правильно, он выражает саму суть игры. Остальное лишь детали. Когда научитесь выделять одно от другого, тогда поймете саму крамольную суть созидания механизма программы. В каждой материальности, ценность имеет лишь то, малое, что этой материальностью выражено.

Однако слова, словами, а дело практикой. Теперь реализуем в нашем случае класс, который будет являться механизмом игры. Будет простым и понятным. В этом случае также учтем, что переменные нужные для сравнения будут частью этого механизма. Они будут его элементарными деталями. А более простых механизмов пока не будет. Однако они появятся в следующих статьях. Так что наш класс будет выглядеть, так.

Как видите, ничего сложного в этом процессе нету. Все просто и понятно. От себя только добавлю, что взял вместо wchar_t* класс строк wstring, который оперирует символами wchar_t. Для того, чтобы убрать из примера возврат функций в виде wchar_t*, т.к. класс wstring создан не только для более легкой работы с wchar_t*, а также для большей читабельности программного кода, что в данном случае уместней. Остальные разъяснения  по поводу wstring можно найти в интернете, т.к. тема о wstring находится вне рамок темы статьи.

А теперь, давайте посмотрим на исходный код первоначальной программы-игры «Виселица», применяющей, представленный выше, класс «MechanismViselica».

Тут, как видите сами, нету сильных изменений, только перенесена та часть программного кода, о которой ранее говорилось в этой статье. Причем, отмечу, что исполнение кода, каким было, таким и осталось. Т.е. ничем не отличается от программ-игр «viselica-1» и «viselica-2«, в исполнении самой программы. Что было, целью, в данной статье по части исходного кода, помимо переноса и выделения определенной части программного кода в отдельный класс «MechanismViselica«, для последующего его развития от первоначального в полный варианты, что будет происходить в течении данного цикла статей.

Понятное дело, вам, захочется опробовать на практике исполнение вышеприведенной программы. Для этого потребуется скомпилировать и собрать программу-игру «Виселица» из нескольких файлов, чего до этого не было в цикле статей. Однако, в таких случаях для применения компиляторов GNU GCC и GNU G++ по отношению к нескольким файлам стоит применять make. Нижеприведенный, листинг файла Makefile, показывает простой способ записи данного файла для компиляции и сборки всех файлов с исходным кодом программы в один исполняемый файл, который запускается также, как предыдущие исполняемые файлы в данном цикле статей.

Если же, возникают какие-то вопросы или сложности с воспроизведением программного кода программы-игры «Виселица», то в этом репозитории можно будет скачать выкладываемые мною папки по всем статьям данного цикла.

В заключение

В данной статье, нами был рассмотрен вопрос азов и основ по части сути и смысла самого механизма программы-игры, который был создан в виде каркаса середины программы в двух первых статьях. Теперь, данный алгоритм будет развиваться в представленном направлении более подробно и конкретнее в двух следующих статьях. А данная статья, служит своего рода, мостом, между двумя последующими статьями и двумя первыми, которая отражает тот самый простой и так мало описываемый момент: переход от примитивной к нормальной программе, где просто и понятно «что?», «где?», «куда?» и «как?» по части программного кода происходит в плане его изменений по мере наработки самого проекта с нуля.

 

Loading

Один комментарий к “Учебный пример на Си++, Игра Виселица: Определение начальных свойств и методов механизма игры, или как правильно начать строить механику программы с нуля.”

  1. Внесены, некоторые поправки, в том числе по орфографии и пунктуации, для нормализации восприятия статьи, читателями.

Обсуждение закрыто.