avva: (moose)
[personal profile] avva
Я дописал поддержку прибитых гвоздем желе и желе черного цвета (это вспомогательные желе, которые не надо объединять) в онлайн-версии Jelly No Puzzle. И добавил туда уровни с 7 по 20, которые требовали
этих возможностей.

Оставшиеся уровни 21-40 требуют поддержки "вырастающего" блока - я думаю, где-то в течение недели будет.

Замечания, предложения, сообщения о багах приветствуются. Исходники здесь.

Date: 2013-03-02 03:44 pm (UTC)
From: [identity profile] sleeping-death.livejournal.com
у меня вопрос не в тему: а в ФФ оно и не должно работать? )

Date: 2013-03-02 03:48 pm (UTC)
From: [identity profile] avva.livejournal.com
Я с удовольствием только, но оно не работало и в исходной версии, а я слишком мало об этом помню (несколько нет не занимался веб-программированием вообще), чтобы сейчас влезать. Но с удовольствием приму патчи/советы, как исправить.

Date: 2013-03-02 03:59 pm (UTC)
From: [identity profile] sleeping-death.livejournal.com
не, сам-то головоломка вроде работает, по крайней мере первый уровень, а вот дропбокс с уровнями шириной пикселей 20 )
ну и хотелось бы автопереход на след. уровень после сообщения о завершении)

Date: 2013-03-02 04:04 pm (UTC)
kostik: (Default)
From: [personal profile] kostik
Спасибо. То, что было в предыдущей версии я уже прошел, а Windows под рукой нет.

Date: 2013-03-02 04:20 pm (UTC)
From: [identity profile] 3d-object.livejournal.com
В Win автоперехода тоже нет.
Edited Date: 2013-03-02 04:23 pm (UTC)

Date: 2013-03-02 04:25 pm (UTC)
self_perfection_lj: (Default)
From: [personal profile] self_perfection_lj
Беспроблемно запускается на Linux/Mac через wine.

Date: 2013-03-02 04:27 pm (UTC)
From: [identity profile] waler.livejournal.com
undo button!

Date: 2013-03-02 04:33 pm (UTC)
From: [identity profile] avva.livejournal.com
планирую :)

Date: 2013-03-02 04:37 pm (UTC)
From: [identity profile] sleeping-death.livejournal.com
там есть кнопка "некст" )

Date: 2013-03-02 04:41 pm (UTC)
From: [identity profile] sail2ithaki.livejournal.com
Спасибо, отличное желе.

Date: 2013-03-02 04:51 pm (UTC)
From: [identity profile] brumka.livejournal.com
спасибо!

P.S. как и ожидалось, прекрасно работает на хроме под андроидом

Date: 2013-03-02 05:22 pm (UTC)
From: [identity profile] maxim razin (from livejournal.com)
Действительно очень приятный язык кофескрипт.

Date: 2013-03-02 05:30 pm (UTC)
From: [identity profile] rakshas.livejournal.com
Я тоже прошел.

Прекрасная игра.

На 17-ом уровне меня охватило экзистенциальное отчаяние. Когда бьешься, бьешься, хочешь уже сдаться, но потом вспоминаешь, что решение есть, делаешь несколько глубоких вдохов и начинаешь не спеша обдумывать варианты, а потом через 20 секунд снова в раздражении бросаешь мышку, потому что это просто невозможно.

И 28-ой такой же.

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

Еще постоянно ловил себя на мысли, что автор мог по приколу сделать какой-нибудь уровень непроходимым, чтобы свести людей с ума.

Date: 2013-03-02 06:13 pm (UTC)
From: [identity profile] maxim bolonov (from livejournal.com)
спасибо

Date: 2013-03-02 06:24 pm (UTC)

Date: 2013-03-02 06:51 pm (UTC)
From: [identity profile] piter239.livejournal.com
Еще постоянно ловил себя на мысли, что автор мог по приколу сделать какой-нибудь уровень непроходимым, чтобы свести людей с ума.

О да!

Date: 2013-03-02 08:12 pm (UTC)
From: [identity profile] captain-tylor.livejournal.com
Немного царапает взгляд то, что уровни в коде массивом строк, а не одной строкой в """. Мелочь, но я в CS привык весь синтаксический мусор выметать.

Date: 2013-03-02 08:33 pm (UTC)
From: [identity profile] eixin.livejournal.com
На 19 уровне при такой конструкции не определяется конец уровня(или это не конец?):

Image

Пробовал в Chrome и Safari.

Дайте знать, если нужна последовательность ходов.
Edited Date: 2013-03-02 08:42 pm (UTC)

Date: 2013-03-02 08:39 pm (UTC)
From: [identity profile] huzhepidarasa.livejournal.com
Баг: в 11-м уровне все зеленые желе соединил в один блок, а поздравления нет (Хромиум).

Image

И undo!

Date: 2013-03-02 09:06 pm (UTC)
From: [identity profile] kanapepa.livejournal.com
Спасибо!

Date: 2013-03-02 09:14 pm (UTC)
From: [identity profile] kapla55.livejournal.com
В 11-ом и 19-ом уровнях не выдает поздравление с успешным окончанием уровня.

Date: 2013-03-02 09:15 pm (UTC)
From: [identity profile] avva.livejournal.com
Спасибо! У меня недостаточно умный алгоритм обнаружения победы, да, и это проявляется только на этом уровне и на 11-м (см. ниже). Починить это не очень просто, потому что я хочу сохранить простоту кода и подхода (я мог бы после каждого шага запускать DFS по всем цветам и следить, соединены они или нет, но это куча уродливого кода). У меня есть идея, как это исправить малой кровью, завтра попробую, если найду время.

Date: 2013-03-03 05:30 am (UTC)
From: [identity profile] oldval.livejournal.com
вы же знаете изначальное количество отдельных блоков каждого цвета, после факта слияния (а он необратим) необходимо соответствующее число уменьшить на единицу (насколько я понимаю, это можно использовать и при многократном одновременном слиянии, например когда кубик ложится между кубиками своего цвета). Количество блоков раное 1 для всех цветов означает завершение уровня :-)

p.s. причем даже делать цикл по этому массиву необязательно, достаточно удалять запись из массива если количество блоков равно 1. Уровень заканчивается когда массив пуст. Проверку массива на отсутствие записей достаточно проводить после каждого слияния (а не хода)
Edited Date: 2013-03-03 06:03 am (UTC)

Date: 2013-03-03 06:57 am (UTC)
From: [identity profile] avva.livejournal.com
Это то, что я сейчас делаю. Проблема в том, что в более продвинутых уровнях начинают появляться блоки, состоящие из кубиков разных цветов, или одного цвета, но несоединенных (потому что они прикреплены к черным кубикам с разных сторон).

Сначала сравните две ситуации, когда кубик присоединятся одновременно к двум другим: эти два других могут быть уже соединены, или нет:
 R
R R
---

 R 
R R
R-R
RRR
---

В обоих случаях у нас есть два факта соединения (упавшего кубика с левым и правым соседом), но в первом у нас счетчик должен от 3 спуститься до 1, во втором от 2 до 1.

Естественно решить эту проблему следующим способом: первое слияние соединяет два блока в один, второе слияние видит, что оно по сути происходит уже "внутри блока", и не уменьшает счетчик.

Это у меня тоже сделано. В 11-м и 19-м уровнях это не срабатывает в ситуации типа следующей (R красный кубик, B черный, и считайте их соединенными, когда они рядом).
RBBR

RBBR

Тут второе слияние не уменьшает счетчик, потому что блоки соединились, но это неправильно: должно быть 4->2. Теперь представим, что блоки выглядят так:

RRRR
RBBR

RBBR
RRRR

Тут на месте слияний все выглядит идентично, но счетчик должен идти 2->1.

Выходит, что не обойтись без отслеживания (или кропотливой проверки) соединенности кубиков одного цвета внутри больших многоцветных блоков.
Edited Date: 2013-03-03 06:57 am (UTC)

Date: 2013-03-03 07:03 am (UTC)
From: [identity profile] avva.livejournal.com
Кстати, исправить ситуацию я собираюсь следующим образом. Внутри каждого соединенного блока из кубиков одного цвета один из них называется "color master" и у него есть список всех подчиненных кубиков, а у каждого из них (включая его самого) - ссылка на него. Изначально каждый кубик свой собственный мастер. При слиянии двух кубиков A и B одного цвета, мы идем к мастеру B, и если он отличается от мастера A, то берем у него список его подчиненных, переписываем их всех на мастера A, и уменьшаем счетчик числа мастеров. Игра закончена, когда мастеров стало столько же, сколько цветов.
Edited Date: 2013-03-03 07:07 am (UTC)

Date: 2013-03-03 07:23 am (UTC)
From: [identity profile] oldval.livejournal.com
Да, вы правы. Спасибо за подробное объяснение :-)

Date: 2013-03-03 07:49 am (UTC)
From: [identity profile] maxlethal.livejournal.com
Офигеть, оказывается я совсем по-разному воспринимаю windows-версию и онлайн. То, что решается в виндовз часами, в онлайн проходится за минуты. Причём вот только прошёл уровень в онлайн и не могу сообразить, как я это сделал, втыкая в винодовз :-)

Date: 2013-03-04 03:43 pm (UTC)
From: [identity profile] blacklion.livejournal.com
У меня в FF19 на win список уровней пустой. Точнее — там много пустых строчек, выбор которых вполне работает, но ничего не видно.

Date: 2013-03-04 03:44 pm (UTC)
From: [identity profile] blacklion.livejournal.com
А, ну и когда мышка для левшей лежит слева кнопки перевёрнуты :)

Date: 2013-03-04 03:45 pm (UTC)
From: [identity profile] blacklion.livejournal.com
И криво рисуются гвозди в FF19. В левом-верхнем углу а не где должны.

Date: 2013-03-05 08:52 am (UTC)
From: [identity profile] zero-sharp.livejournal.com
Как уже написал в соседнем посте [livejournal.com profile] a_shen — ну Вы-то знаете, а остальным может быть интересно:
http://en.wikipedia.org/wiki/Disjoint-set_data_structure

Date: 2013-03-05 08:57 am (UTC)
From: [identity profile] avva.livejournal.com
Ага, правильная ссылка. Просто в моем случае делать настоящий "взрослый" union-find это overkill.

Date: 2013-03-05 01:07 pm (UTC)
From: [identity profile] oblomov-jerusal.livejournal.com
Причем до фикса кнопка была нормальной.

Date: 2013-03-05 01:24 pm (UTC)
From: [identity profile] avva.livejournal.com
Исправил дропбокс.

Date: 2013-03-05 01:24 pm (UTC)
From: [identity profile] avva.livejournal.com
Это Эван переделал код так, чтобы меню автоматически создавалось, а я взял его изменения. Исправил так, чтобы работало под FF.

Date: 2013-03-05 01:37 pm (UTC)
From: [identity profile] sleeping-death.livejournal.com
без Undo, конечно, тяжело. С другой стороны, действий везде немного и по 10-20 раз делая уровень выучишь его наизусть )

Date: 2013-03-05 04:59 pm (UTC)
From: [identity profile] avva.livejournal.com
Теперь работает.

Date: 2013-03-06 08:53 am (UTC)
From: [identity profile] e2pii1.livejournal.com
К посту:

Работает даже на iPhone в Сафари ! Спасибо.

К комменту:

Я когда читал ветку и попробовал решить, у меня была идея: кольцевой список соединенных одноцветных блоков и у каждого "идентификатор связной компоненты". При соприкосновении если "идентификаторы компоненты" разные сливаем кольцевые списки и ставим вторым первый "идентификатор компоненты".
Можно и без идентификаторов, а только кольцевой список - при соприкосновении проверяем 2 списка совпадают или непересекаются (тогда сливаем).

У вас в решении один блок начальник над остальными, а у меня - все блоки равны :-)

Date: 2013-03-07 04:08 pm (UTC)
From: [identity profile] selfmade.livejournal.com
btw, did it ever occur to you that some people don't use mouse due to RSI?

Date: 2013-03-15 03:43 am (UTC)
From: [identity profile] e2pii1.livejournal.com
Кстати этот уровень можно не единственным способом решить (хотя основная идея конечно одна): у меня тот маленький двойной кубик что у вас внизу-слева - у меня внизу-справа; тот что у вас внизу-справа - над ним; и всё сдвинуто на клетку влево.

Сообщение об окончании уровня выдаётся в момент когда последний кубик еще летит вниз.

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
28293031   

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 29th, 2025 07:28 am
Powered by Dreamwidth Studios