Когда придумал упростить начало игры, обведя минное поле открытым незаминированным ободком, параллельно пришла и другая идея, которая, как мне казалось, должна, наоборот, усложнить игру. Подумал, а что, если "склеить" верхнюю и нижнюю стороны поля, и аналогично левую и правую. Часто такое поле называют "свёрнутым в тор". Никогда раньше не понимал этого выражения, а тут в процессе праздных размышлений вдруг осознал, чему был очень рад, поэтому спешу поделиться. (И тут вдруг возникает совсем не относящийся к теме вопрос: а чем жж-кат отличается от спойлера?) Кто осознал это раньше, может пропустить мои попытки объяснения, кому интересно, те могут ткнуться
.
Представим себе прямоугольник из мягкой бумаги или даже полиэтилена. Склеиваем его левую и правую стороны так, что он сворачивается в трубочку (цилиндр). Теперь берём верхний край цилиндра и мысленно подворачиваем его по всему периметру окружности, и пытаемся дотянуться до нижнего края цилиндра. Потом склеиваем эти края. Если теперь надуть в получившийся замкнутый объём воздух, получится бублик (тор). Или другой пример. Берём узкий и длинный прямоугольник и сворачиваем его так, чтобы склеились длинные стороны. А теперь полученную длинную трубу сгибаем в обруч. Можно мысленно идти и в обратном направлении: взять велосипедную камеру (тоже тор) и разрезать её сначала поперёк, а потом вдоль, вот и получится прямоугольник. Таким образом, прямоугольник упрощённо можно считать развёрткой тора, если не учитывать растяжение и сжатие материала при изгибе.
Переделать программу было нетрудно. Закольцевал поле и стал играть. Сложновато, но основная сложность была именно в воображении: нужно постоянно помнить, что ячейки, расположенные вдоль нижнего края минного поля, на самом деле не граничные, а соседствуют с ячейками, расположенными вдоль его верхней границы. С левой и правой границами - аналогично. Я ожидал, что играть будет очень сложно, ведь раньше я всегда начинал игру именно с граничных ячеек, а часто и вообще с угловых (и мой вариант сапёра с ободком на это явно намекает). А тут просто нет граничных ячеек.
Вчерашней ночью добавил в программу четыре кнопки прокрутки игрового поля. И вот это оказался совершенно жуткий башнеснос! Кнопки позволяют не думать, какие ячейки на краю с какими соседствуют, а просто прокручивать поле так, чтобы интересующие соседствующие ячейки оказывались ближе к центру поля. В результате обнаружилось, что игрок (я) вообще никогда не смотрит на целое минное поле, а пялится на небольшую его область, в которой открывает свободные ячейки и расставляет "флажки" на заминированных. Более того, почему-то быстро пропадает понимание того, что всё поле всегда представлено на экране (хоть и всегда в разных вариантах), и эта рамка с возможностью прокрутки воспринимается, как некий участок поля зрения, как изображение в видоискателе фотоаппарата, с помощью которого игрок просматривает "бескрайнее" минное поле. Благодаря этому конец игры (в том числе и победный) наступает всегда незаметно. Ведь игрок думает, что полю конца и края нет, что его ещё скроллить и скроллить, а он только лишь обезвреживает его малый участок. И тут вдруг (внезапно) оказывается, что этот участок - это и есть всё поле, вся развёртка того самого тора, а прокрутка лишь позволяет посмотреть на неё с разных сторон.
И вот что оказалось: собирался я усложнить игру, а в итоге, как выяснилось, упростил. Конечно, трудно начать, и тут весьма велика вероятность подорваться. Но когда попадаешь на нулевую ячейку, обычно сразу открывается довольно большая область. Ведь раньше, в обычном сапёре, рост таких самораскрывающихся областей заканчивался на границах, а теперь границ нет. А дальше уже играешь на автомате, и проиграть можно только по ошибке (случайно перепутав кнопки мыши) или по дури (пытаясь одновременно слушать радио или думать о другом, впрочем, думы о другом обычно к такому не приводят).
Таким образом, попытка усложнить игру привела на самом деле к её упрощению.
P.S. Спойлер не заработал при просмотре журнала целиком, а также в IE в режиме совместимости. Пришлось применить обычный кат. К нему тоже есть претензии, но он как-то работает...