Мастерство не пропьёшь
Mar. 30th, 2015 10:08 pmПосле почти двадцатилетнего перерыва написал игрушку в три строки на MSX BASIC.
Условное название "Into the Woods"


Игрушка генерирует односвязный лабиринт бесконечной высоты, по которому нужно идти вперёд. Сначала написал как попало, получилось не так чтобы много, но и не так чтобы мало, строчек 50. На вид в три строки ну никак не умещалось. Но решил попробовать всё равно. Выкинул всё к делу не относящееся, типа заставку и экран game over. Посклеивал строки, повыкидывал пробелы. Всё равно много. Переписал один кусок, потом другой, потом что-то куда-то передвинул. В какой-то момент всё стало почти помещаться на одном экране. Строк было ещё многовато (6 что ли), но уже стало видно что может и получиться. Как именно дошло до этой стадии, я так и не понял, но после этого уже было дело техники.
Алгоритм генерации не то чтобы особо сложный, но и не совсем тривиальный. Отдельно генерируются вертикальные и горизонтальные стенки, отслеживается связность клеток текущего ряда в двунаправленных списках, эти списки постоянно сливаются/разделяются. Плюс аватарчик бегает параллельно всему этому, и его нужно задвигать вниз когда стенка на него опускается, опять же, конец игры надо определять. В общем, как это всё в три строки влезло, самому не до конца понятно.
Вспомнил ощущения -- достаточно дзенские ощущения.
С удивлением обнаружил что прекрасно помню многие тонкости и хитрости. А что подзабыл -- очень легко вспоминается, нужен только совсем небольшой хинт. Сравниваю с тем что учил 10/5/1 год назад -- как-то нашёл программу, явно мою, с моими комментариями, так я даже языка не опознал на котором она была написана. Дата -- 2008 г.
Вот так-то, детишки, учите вещи в молодости, потом -- это просто перевод продукта.
Условное название "Into the Woods"


Игрушка генерирует односвязный лабиринт бесконечной высоты, по которому нужно идти вперёд. Сначала написал как попало, получилось не так чтобы много, но и не так чтобы мало, строчек 50. На вид в три строки ну никак не умещалось. Но решил попробовать всё равно. Выкинул всё к делу не относящееся, типа заставку и экран game over. Посклеивал строки, повыкидывал пробелы. Всё равно много. Переписал один кусок, потом другой, потом что-то куда-то передвинул. В какой-то момент всё стало почти помещаться на одном экране. Строк было ещё многовато (6 что ли), но уже стало видно что может и получиться. Как именно дошло до этой стадии, я так и не понял, но после этого уже было дело техники.
Алгоритм генерации не то чтобы особо сложный, но и не совсем тривиальный. Отдельно генерируются вертикальные и горизонтальные стенки, отслеживается связность клеток текущего ряда в двунаправленных списках, эти списки постоянно сливаются/разделяются. Плюс аватарчик бегает параллельно всему этому, и его нужно задвигать вниз когда стенка на него опускается, опять же, конец игры надо определять. В общем, как это всё в три строки влезло, самому не до конца понятно.
Вспомнил ощущения -- достаточно дзенские ощущения.
С удивлением обнаружил что прекрасно помню многие тонкости и хитрости. А что подзабыл -- очень легко вспоминается, нужен только совсем небольшой хинт. Сравниваю с тем что учил 10/5/1 год назад -- как-то нашёл программу, явно мою, с моими комментариями, так я даже языка не опознал на котором она была написана. Дата -- 2008 г.
Вот так-то, детишки, учите вещи в молодости, потом -- это просто перевод продукта.