Что это за игра
Морской бой — игра не про удачу, а про информацию. Каждый выстрел, даже мимо, сообщает вам что-то новое, и весь вопрос в том, умеете ли вы этим пользоваться.
Слева ваш флот, справа чужие воды, о которых сначала не известно ничего. Двадцать клеток из ста заняты кораблями, и наугад их искать можно очень долго. Но корабли не соприкасаются, у каждого известна длина, а промах закрашивает клетку навсегда — из этих трёх фактов вырастает вся стратегия.
Обычно партия решается не в момент первого попадания, а раньше: в том, как вы искали. Хорошая сетка поиска экономит десяток выстрелов, а десять выстрелов здесь — это половина партии.
Правила
- Два поля 10×10: слева ваш флот, справа воды противника. У каждой стороны десять кораблей: один четырёхпалубный, два трёхпалубных, три двухпалубных и четыре однопалубных — всего двадцать клеток.
- Корабль стоит по строке или по столбцу и никогда не касается другого корабля — даже углом. Между любыми двумя кораблями есть хотя бы одна клетка воды.
- Оба флота расставляются случайно при старте. До первого выстрела свой можно перетасовать заново или расставить вручную: нажмите «Расставить самому», кликом ставьте корабль из очереди, кликом по уже стоящему кораблю снимайте его обратно, кнопкой «Поворот» или клавишей R меняйте направление, «Случайно» достроит остаток.
- Первым стреляете вы. Щёлкните по клетке правого поля.
- Мимо — в клетке появляется точка, и ход переходит к компьютеру. Попадание — крест, и вы стреляете снова. Пока попадаете, ход остаётся у вас.
- Потопленный корабль показывается целиком, и вся вода вокруг него автоматически отмечается как обстрелянная: по правилу о несоприкосновении там кораблей быть не может, и тратить туда выстрелы не нужно.
- Побеждает тот, кто первым потопит все десять кораблей противника. Ничьих в этой игре не бывает.
- Счётчик справа показывает потопленные корабли, а не попадания.
Как играть лучше
- Не стреляйте наугад — стреляйте сеткой. Корабль длины L обязательно накрывает хотя бы одну клетку сетки с шагом L. Пока самый маленький живой корабль двухпалубный, достаточно бить через клетку, в шахматном порядке: это половина выстрелов при том же охвате.
- Сначала ищите крупные корабли: их проще найти, а как только четырёхпалубный потоплен, сетку можно сгущать.
- После попадания определяйте направление. Два попадания подряд задают ось корабля — дальше имеют смысл только две клетки на концах ряда, выстрел вбок гарантированно пустой.
- Пользуйтесь правилом о несоприкосновении. Все четыре клетки по диагонали от попадания — вода, это известно точно. Вокруг потопленного корабля игра отмечает воду за вас.
- Ближе к концу думайте не «куда я ещё не стрелял», а «куда ещё помещается оставшийся корабль». Для трёхпалубного на изрешеченном поле вариантов обычно остаётся два-три — вот туда и стреляйте.
- Расставляя свой флот, помните: перебор вероятностей целится в центр, потому что там помещается больше вариантов. Края спокойнее — но не выстраивайте весь флот в одну линию вдоль борта, такая расстановка вскрывается за пару попаданий.
Немного истории
Морской бой начинался как игра на бумаге в начале двадцатого века. Её рисовали в тетрадках и блокнотах примерно со времён Первой мировой войны, а в тридцатые годы разные издатели начали выпускать её фабричными блокнотами с готовыми полями.
В 1967 году компания Milton Bradley выпустила пластиковую настольную версию с чемоданчиком, вертикальными досками и фишками-штырьками. Именно в этом виде игра известна большей части мира.
Поле на этой странице устроено по другой, тетрадной традиции — той, в которой играли за партой: сетка 10×10, флот из одного четырёхпалубного, двух трёхпалубных, трёх двухпалубных и четырёх однопалубных, корабли не касаются друг друга, а попадание даёт право выстрелить ещё раз. Столбцы подписаны русскими буквами от А до К.
Сама программа повторяет апплет «Морской бой», работавший на сайте с 2005 года: та же голубая панель, то же меню в стиле старых окон и та же серая вспышка на клетке перед выстрелом компьютера.
Про уровни
Общее для всех трёх: компьютер видит ровно то же, что видели бы вы на его месте — сетку из промахов, попаданий и потопленных кораблей плюс список длин ещё живых кораблей. В вашу расстановку он не заглядывает ни на одном уровне. Свой флот он тоже расставляет случайно, независимо от выбранной сложности.
Простой стреляет в случайную неизвестную клетку. Попав, он выбирает наугад одно из своих раненых попаданий и бьёт в случайную соседнюю клетку. Ни сетки, ни чувства направления у него нет: даже когда два попадания подряд ясно показывают, как стоит корабль, он может продолжать тыкать вокруг наугад.
Сложный уже собирает попадания в связные ряды. Ряд из двух и более клеток задаёт ему ось, и он бьёт в один из двух концов. В режиме поиска он использует сетку по чётности: только клетки, у которых сумма координат делится на длину самого маленького живого корабля. В начале партии это каждая вторая клетка, а когда остаются одни однопалубные — снова всё поле. Внутри сетки он выбирает случайно: где ещё помещается крупный корабль, он не считает.
Эксперт считает плотность вероятности. Для каждого живого корабля он перебирает все его возможные положения, отбрасывает те, что противоречат известному, и каждое уцелевшее голосует за клетки, которые накрывает. Выстрел идёт в клетку с максимумом голосов. Положение, объясняющее раненую палубу, весит в двести раз больше за каждое такое попадание — благодаря этому поиск сам, без отдельного режима добивания, превращается в погоню вдоль оси корабля.
Слабое место у эксперта одно, зато настоящее: отбрасывая невозможные положения, он учитывает только воду и потопленные корабли. Правило «корабли не касаются» вокруг раненого корабля он не применяет и потому всерьёз рассматривает варианты, прижатые к тому, во что уже попал. Пару выстрелов за партию это ему стоит.