Какая простая скользящая головоломка научила меня программированию.

Все началось в отпуске, где я должен был отдыхать. Я только что закончил работу над сложным проектом для начальства, и последнее, что я был готов сделать, - это заняться инжинирингом. Хотя я никогда не был тем, кто мог просто сидеть и расслабляться в течение длительного периода времени. Мне всегда было чем заняться, и этот отпуск не был исключением. Я понял, что напряженная работа может только продолжаться. Мне быстро стало скучно, не имея никакого отношения к тому, что я делал. Это сводило меня с ума.

Затем пришло решение всех моих проблем. Простая, но отягчающая скользящая головоломка. Цель? Заказывайте числа от 1 до 15, не делая ничего, кроме обмена числами через скользящие блоки через цельный зазор. Это было неприятно, но мне понравился необходимый для этого навык, я решал его не менее 15 раз в день. Я начал разгадывать головоломку на скорость, чтобы определить лучшее время, за которое я смогу ее решить, и набрал числа значительно меньше 2:30. К концу отпуска я знал, что буду делать в своем следующем проекте по кодированию.

Я хотел бросить себе вызов. Я использовал OpenGL на C ++ в течение последних нескольких лет для создания собственных игровых движков - хотя в то время я был очень новичком и не мог изучать структуры дизайна, чтобы спасти свою жизнь. Я хотел сделать что-то в OpenGL, что можно было бы рассматривать как игру. Чтобы усложнить задачу, я решил, что использование C может быть интересной смесью для этого проекта.

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

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

Хотя в моей игре есть только около 10% функций, которые я мог бы надеяться реализовать, с учетом временных рамок она по-прежнему доставляет мне ту же радость, что и оригинальная головоломка. Неуклюжие движения и разочарование, когда вы делаете неправильную замену, - это то же чувство, что и в реальной версии. Это не только развлечение, но и упражнение для мозга.

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

Код: Пятнадцать