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

в 9:02, , рубрики: color lines, lines, игры, История ИТ, логические игры, неточный клон
Особенность оригинальной реализации Color Lines - 1

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

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

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

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

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

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

Автор: grechnik

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js