29.07.2009
СОКОБАН
МЕНЮ
Начало
Краткий обзор 1
Краткий обзор 2
Краткий обзор 3
Краткий обзор 4
Краткий обзор 5
Краткий обзор 6
Солверы и генераторы 1
Солверы и генераторы 2
Алгоритмы

КОНКУРС

Sokoban YASC - Yet Another Sokoban Clone
Copyright c 2003 by Brian Damgaard, Denmark

Великолепная программа. Я подробно ее пока не смотрел, но даже то, что я увидел, вызывает приятное впечатление. У этой программы имеются исходные тексты на Delphi - есть, что посмотреть. Приведу цитату из этого пакета исходников (3522Kb):

Sokoban Plugins SDK

This Sokoban plugins SDK allows tools like solvers and optimizers to be plugged into Sokoban clones. This eliminates the problem that all tool authors otherwise would have to write a user-interface for their tool, something that typically is a non-trivial and time-consuming task. Instead, the tool author can concentrate on the tool itself.

Hopefully many tool authors and Sokoban clone authors will support this interface so everyone has access to the best tools from their favourite Sokoban clone.

All functions must be placed in a single .DLL file, and their names should not be decorated. The calling convention for all functions is stdcall.

Authors: Joris Wit, Brian Damgaard.

This documentation and the accompanying solver example code is released into the public domain.

Установочный пакет можно скачать отсюда (2255Kb). В пакет входят и наборы уровней нескольких авторов. Для примера приведу уровень David Holland, с которым у меня еще давно была короткая переписка.

David Holland, "Ninevah"
    ####
####   #
#@$  # #
# $$$  #
##.#.  #
#  ..# #
#  #.* #
# $.$ # 
 ##   # 
 ###### 


Я попробовал модифицировать этот уровень своим генератором уровней, получился следующий вариант:

Модификация "Ninevah"
    ####
####   #
#    # #
# $$   #
##.#.  #
#  .*# #
# $#+* #
# $.$ # 
 ##   # 
 ###### 


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

В пакет исходников входит и генератор уровней, который по конечной позиции выдает уровень. На том же уровне "Ninevah" мы получим следующий результат:

Модификация 2 "Ninevah"
   #####
####   #
# $ $# #
#@$    #
##.#*  #
# $.*# #
# $#.. #
#  .  ##
###   # 
  ##### 

Попробуйте выбрать лучший :-))

Любопытный анализ сделал David Holland при рассмотрении серии уровней вида pico17_v7.gif.



Вертикальный ряд можно изменять, тогда минимальное число перемещений ящиков P(n) (n - число ящиков) при n>=4 удовлетворяет рекуррентному соотношению:
P(n)=P(n-1)+P(n-2)+7

Мне это напомнило одну головоломку с кольцами, но я совершенно забыл книгу, в которой я ее видел. После нескольких часов поисков я все-таки нашел эту головоломку:


Она опубликована в книге Ж. Арсака "Программирование игр и головоломок" (Игра 27. Бездельник).

Хорошо известен создатель уровней сокобана Евгений Григорьев. Его уровни GRIGoRusha.sok имеются во многих известных сокобанах, в том числе и в только что рассмотренном Sokoban YASC. Евгений на своем сайте создал Remodel Club, где он приводит модифицированные уровни других авторов. Для любителей сокобана кроме интересных новых уровней также важно общение. Часто такое общение происходит на форумах известных сайтов. Не последнее место может играть соревновательная сторона, когда, например, ищется наилучшее решение уровня. Простая публикация нескольких тысяч уровней ведет, на мой взгляд, к дезориентации игроков. Все-таки уровни очень сильно отличаются друг от друга и явно необходима хоть какая-нибудь классификация - "для детей", "для любителей" и т.п. Полезна организация конкурсов, лучше долговременных.

Если у вас имеются соображения по тем или иным сторонам сокобаностроения, то пишите на мой адрес. Может, что и получится совместными усилиями.

Сайт управляется системой uCoz