- PVSM.RU - https://www.pvsm.ru -

Особенность оригинальной реализации Color Lines

Особенность оригинальной реализации Color Lines - 1

Игра Color Lines [1] aka «Шарики» в особом представлении, вероятно, не нуждается: компьютер заваливает доску 9*9 шариками разных цветов, человек может перемещать их по свободным клеткам, выстраивая в ряды. Ряды от 5 и более шариков одного цвета самоуничтожаются; если это произошло после хода человека, ему начисляются очки и даётся ещё один ход; если в процессе наброса от компьютера, то очки самоуничтожаются вместе с шариками.

Игра имеет большое число клонов, от входящих в поставку Gnome и KDE до реализаций на JavaScript [2] в 30 строк. Тем не менее, большинство реализаций не учитывает одну интересную особенность, присутствующую в оригинальной DOS-игре, и заметно влияющую на геймплей.

Опытные игроки (в компетентности которых не позволяли сомневаться их рекорды, намного большие, чем у меня) уверяли, что компьютер выбирает места для новых шариков вовсе не случайно, а так, чтобы «ломать» горизонтальные и вертикальные ряды и, как следствие, рекомендовали концентрироваться на выстраивании диагональных рядов. Понятно, что естественная реализация выбора места «взять случайное поле из свободных» безразлична к направлению рядов. Что же под капотом у DOS-реализации?

IDA [3] знает всё. Оказывается, выбор места для нового шарика происходит так. Сначала выбираем случайное поле из всей* доски. Если оно свободно — берём его. Если же оно занято — идём, начиная с выбранного поля, слева-направо сверху-вниз, пока не найдём свободное поле. (Если дошли до правого нижнего угла доски — продолжаем с левого верхнего). Такой метод приводит к тому, что разные свободные поля получают резко разные шансы в зависимости от количества занятых полей перед ними — и поля, продолжающие горизонтальные ряды, автоматически попадают в зону риска. Что насчёт сравнения вертикальных и диагональных рядов? Полагаю, тут проявляется психологический эффект — в случае диагональных рядов интуитивно хочется оставить свободные поля со всех сторон, в случае вертикальных рядов «забитость» полей слева воспринимается нормально.

*кроме, почему-то, правого нижнего угла. Есть всего две сложные вещи в Computer Science — очистка кэшей, выбор имён и ошибки на единицу.

Удачной пятницы!

Автор: grechnik

Источник [4]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/igry/77636

Ссылки в тексте:

[1] Color Lines: https://ru.wikipedia.org/wiki/Lines

[2] реализаций на JavaScript: http://habrahabr.ru/post/41775/

[3] IDA: https://ru.wikipedia.org/wiki/IDA

[4] Источник: http://geektimes.ru/post/243195/