Pull to refresh

Comments 53

Это была первая игрушка которую я написал в конце далеких 80-х в рамках своих первых потуг программирования(не именно эта). И как выяснилось позже, таких людей кто писал свой собственный сокобан было не мало. Почти все мои друзья кто нынче является программистом написали по своему сокобану в начале програмерского пути.
Много ли людей тут кто прошел такой же путь?
Было такое. Тоже писал сокобан как минимум три раза на разных языках програмирования :)
Ох сколько людей писало сокобан! Впечатляет! И фраза изобрели еще один велосипед тут будет одновременно как уместна та и не уместна. :) Это скорее учебное пособие.
Я начинал с сапера в текстовом режиме на basic'е, а потом заново начал, уже с пак-мэном на C++ в связке с голым OpenGL. Так что не все, не все… :)
Я писал, в основном, тетрисы и пэкмэна. Над сокобаном думаю сейчас — ни разу не видел его трехмерного варианта, а значит, что-то в этом мире пропущено.
Где-то мне попадалось нечто трехмерное, псевдо 3д еще на 486, но смутно помню. А в целом конечно затея хорошая, как минимум для развития собственных навыков в 3д графике.
этих 3d-сокобанов уже тоже легион — только на андроиде с десяток вариаций встречалось
Они действительно трехмерные, или это 3D-визуализация плоских уровней?
А это классная мысль — вынести в 3D не только интерьер, но и склад сделать многоэтажным, с лифтами и штуками, которыми пользуются пожарники, чтобы быстро спускаться с верхнего этажа. Погрузчиками, чтобы на разные полки склада ставить.
И чтобы можно было грабить корованы

Такой себе симулятор кладовщика.
Боюсь, что это разрушит математическую элегантность игрушки. Я думаю, скорее, над «космическим» складом, без гравитации. Где ящики можно толкать во всех 6 направлениях.
Это основная идея. Но без промежуточного 3D-этапа будет трудно понять, что там можно делать и что придумывать. Например, у того же сапера увеличивать число измерений большого смысла нет (если оставлять окрестность кубической). У пэкмэна, как выяснилось, и подавно — он для любого числа измерений будет казаться нам трехмерным.
На андроиде мне понравился Psychoban 3D.
Он с сюжетом (подаётся между уровнями), проходить интересно.
Так вот что мне нужно написать! :) Спасибо за идею!
Трехмерные варианты есть. Правда, сам геймплей классический — в 2х, а не в 3х измерениях. Есть один по iOS. Еще в блоге Emanuele Feronato был пост с прототипом на Unity. Кстати, прототип получился достаточно симпатичный.
Я тоже начинал с сокобана. На ZX + Basic.
Та же фигня. Севастопольский ZX Spectrum на встроенном Васике
Я писал сокобан в рамках программерского конкурса Caos Construction'09, но у организаторов на компе не оказалось требуемой версии дотнета, так что у меня вместо консольки был отображён диалог с ошибкой :-
Один из первых подобных self-challenge проектов — Тетрис-клон под DOS на Quick C с некоторыми функциями (инициализация графического режима, вывод точки) на ASM. Это была первая курсовая работа в универе. Эх, ностальгия!
А сокобан писал не так давно с целью разобраться с AS3 — практически без документации :) Писал, как если бы писал под DOS, и возможности Флеша практически не заюзал. Но сокобан заколбасил :) С AS3 же так и не разобрался :) Разобрался уже позже…
Да, я первый раз написал сокобан на ZX Spectrum, по-моему. Там был всего один уровень.
Я писал, из «техники молодёжи» брал идею и для Правеца переписывал.
Я писал раза три точно, на разных машинах и языках.

Сокобан очень просто пишется, и при этом сама игра хорошая. В ту же кучу можно засунуть тетрис — тоже просто пишется и хорошо играется. Что-то даже не вспоминается чего-то еще с подобным сочетанием играбельности и простоты реализации.
Арканоид все-таки посложнее — там не такая простая физика. Шарик летает не по клеточкам, надо как-то считать пересечения. В общем да, довольно просто, но не настолько.
Что змейка, что сокобан, что арканоид — игры из разряда тривиальных. Можно на скорость даже соревноваться.
Один из мох знакомых как-то прототип быстренько писал по просьбе заказчика, за 4-е часа успели написать 80% логики финального продукта на удивление безглючную, более менее связную анимацию и с десяток уровней. Трудилось 2 человека в целом, этот знакомый и аниматор. Само собой за плечами был мощный внутренний фреймворк который позволял творить достаточно прилично выглядящие вещи в короткие сроки. Результат был впечатляющим. Сделка состоялась. Через месяц продукт бы отполирован до блеска и отдан заказчику.
Помнится, у нас в компьютерном классе были голые терминалы с доступом только к своему каталогу и компилятору.
А игрушек хотелось, так что написал себе как раз сокобан и сапёра.
Нет, я писал питона, писал тетрис. В рамках изучения ассемблера «цветной тетрис» aka Coloris. Сокобан никогда не писал, потому что там не было динамики :)
UFO just landed and posted this here
Будучи ещё совсем ребёнком — писал похожую игрушку (но не sokoban, а скорее больше — boulder dash) — у меня там было четыре бита на одну клетку, для поля 62x17.
Спасибо за пост — ностальгия…
boulder dash — совсем другое. Там надо выгрызать клетки и собирать алмазы, уворачиваясь от врагов и камней.
Я конечно понимаю, но «карта уровня» и там, и там примерно схожа. :)
Для такой игрушки 10кб — не «небольшой бинарь» по тем временам :)
А разновидность сокобана тоже писал, помнится, на асме.
Да, этот написан на Турбо Си.
По мне самый симпатичный сокобан был с грузином в кепке. Если ты задумывался, грузин доставал беломорину и закуривал. Уровни были этажами в высотке. Все оттуда тащили расклады для своих поделок.
Да, да, еще у этой игры была классная функция — «Начальник идет», если ее включить, то игровое окно пряталось, и на весь экран появлялся ЯКОБЫ Norton Commander сильно занятый процессом копирования файлов.
Как по мне, можно жать и гораздо плотнее, даже не привлекая тяжелую артиллерию. А тут просто на коленке сделанный RLE, наверняка без попыток особо его улучшить — как придумали, так и слепили.
А как в данном конкретном случае можно сжать еще плотнее?
Например, воспользоваться тем, что статистика стен и ящиков сильно различается. Закодировать сначала битовую маску стен (тем же указанием длин отрезков — только придумать, как не тратить лишний бит на переключение между стеной и пустотой), а потом ящики и места для них — последовательностью разностей одномерных координат (его можно ужать, если каждый раз тратить на очередную разность число бит, соответствующих месту до конца массива). При этом не учитывается, что места для ящиков обычно идут плотно — но там можно нулем обозначать разность 1, а 1xxxx… — все остальные разности. Будет ли выигрыш, надо смотреть.
На первой картинке у меня выигрыш примерно 23% — 277 бит против 364. Так что «гораздо плотнее» не получилось.
А мне сразу вспомнилось, как я в далёком 2003 закодировал фигурки для тетриса на Delphi

 f:array [1..8,1..8] of byte=        {1'st type 2'nd num}
   ((98,4, 192,6, 32,70, 96,3),
    (100,2,96,12,64,38,48,6), 
    (68,6,32,14,96,34,112,4), 
    (34,6,224,2,96,68,64,7),   
    (98,2,224,4,64,70,32,7),   
    (100,4,64,14,98,2,224,4), 
    (96,6,96,6,96,6,96,6),        
    (34,34,240,0,68,68,0,15));


Пятая и шестая фигуры совпадают…
Не вижу совпадений.
Каждая строка — четыре варианта одной фигуры повернутой на 90°, по два байта на фигуру.
Первый байт — верхняя часть фигуры, второй — нижняя часть. Кроме того, каждый байт делится пополам, на две строки.
(Не самое понятное объяснение, могу исходник выложить)
Спасибо, про формат я догадался (не считая ориентации верх-низ) :)

Пятая фигура:
..x.
.xx.
..x.
....

Шестая:
.x..
.xx.
.x..
....

По-моему, они одинаковые. Отличаются только положением в квадрате (одна при ориентации в виде T смещена влево, другая вправо).
Да, точно, так и есть. Фигур должно было быть 7
Неужели только я писал танчики?
Не только, но танчики это уже поближе к современности.
Я танчиков писал и на Делфи и на JS. Первая игра так сказать писанная. Правда до нормального состояния так и не разу не доводил, видимо сказывается то, что мне они не особо нравятся ))
Sign up to leave a comment.

Articles