Как выигрывать в «Морской бой»
Недавно в кино, на новом фильме «Морской бой» (реж Питер Берг), я был очень вдохновлен тем, как развивается бой на воде. Вовсю гремят взрывы, стальной робот переводит свои прицелы с одного корабля на другой. И вот в итоге выбирает свою цель. Огонь неведомой силы обрушивается на корабль США, противоударные пушки не спасают и какие-то странные “банки” попадают на палубу корабля. Первую секунду кажется, что ничего не происходит, как вдруг… ВЗРЫВ!!! Корабль разносит на части, команды других кораблей не то, что теряют всякую дееспособность от ужаса, они даже теряют дар речи.
И лишь крики одного из солдат: “Б-б-б-боже!” могут передать остроту момента…
И тогда я вспомнил игру «Морской бой», которая спасала меня от скуки в школе. Простые правила, два листа бумаги в клеточку, пара ручек… и вот ты уже капитан своих собственных войск, ведешь сражение не на жизнь, а на смерть. И каждый твой неудачный шаг может послужить причиной гибели твоих кораблей! Более того, при всей простоте игры, результат того, как пойдет сражение, предсказать совершенно невозможно.
Правила
Кликните чтобы посмотреть ответ:
Прием первый: пробейте диагонали
Прежде всего, прибегнем к простой математике и прикинем — сколько всего клеток занимает наше войско. Легко посчитать: у нас один корабль занимает 4 клетки, два корабля занимают 3 клетки, три корабля — две клетки и четыре корабля — одну… Всего 17 клеток (обязательно проверь мои вычисления!!).
А сколько всего клеток у нас есть? Посчитать их тоже не составит трудности. Десять полей по вертикали и десять по горизонтали. Всего 100 клеточек. Значит, исходя из теории вероятностей, у нас 17% на успешный выстрел, так как только 17 полей из ста окажутся палубами вражеских кораблей.
Теперь давай нарисуем на квадрате нашей территории две диагонали и посмотрим, какие клетки окажутся на этих диагоналях:
Практика показывает, что чаще всего корабли соперника расположены так, что на диагонали будет лежать несколько палуб. Конечно, это не значит, что со 100% вероятностью на диагонали враг расположит хотя бы одну палубу. Но из большого опыта известно, что вероятность попадания выше именно на диагонали.
Добивайте рационально и отмечайте поля вокруг
Предположим, что мы попали в корабль противника и услышали «Ранил!». Это значит, что мы лишь попали в одну часть корабля. Если с первого удара корабль потопить не удалось, следует сделать вывод, что это двух-, трех- или четырехпалубный корабль. Но, в любом случае, так как корабль не может располагаться по диагонали, у нас есть всего четыре варианта, куда стрелять, чтобы попасть в еще одну из палуб противника.
На первый взгляд это кажется очевидным, но какой вывод можно из этого сделать дальше? Если нам посчастливится затопить четырехпалубный корабль, это даст нам огромное преимущество. Так как рядом с кораблем на расстоянии одной клеточки не может находиться других кораблей, то, подбив четырехпалубник в центре, мы тем самым можем зачеркнуть окружающие его 14 клеточек:
Ход конем
Как нам атаковать, чтобы скорее найти четырехпалубный линкор? Что если попробовать стрелять по клеточкам так, как ходит конь по шахматному полю? Но только чуть иначе: после выстрела в одну клеточку делать еще два шага вперед и один — вбок, по диагонали. То есть после того, как мы обстреляем четыре клеточки в одном направлении, следующий удар нанести направо или налево, чтобы точки образовывать букву “Г”.
Это делается для того, чтобы как можно быстрее лишить линкор возможности «спрятаться». Ведь корабль обязательно должен располагаться на четырех клеточках подряд. «Ходом коня» мы освобождаем себя от проверки полей, которые на рисунке выделены красным прямоугольником, т.к. на них не может быть уже четырехпалубник, расположенный вертикально. Если мы сделаем еще одного «коня», то слева от самого нижнего квадрата, выделенного красным, проверим почти треть поля
Тем самым нам скорее удастся задеть четырехпалубник, что даст нам несравненное преимущество!
Расставлять корабли кучно
Обычно нам хочется располагать корабли как можно дальше друг от друга, распределяя их равномерно по полю: кажется, так они лучше спрятаны. Но, к сожалению, это неверная тактика. Куда надежнее скомпоновать корабли как можно плотнее, стараясь занять примерно треть поля. Тогда противник, если он не попадет с первого же выстрела в ваш корабль, что крайне маловероятно, очень долго будет топтаться по двум другим частям поля, давая нам отличную фору к победе.
Но истинному капитану не следует полагаться лишь на слепую удачу. Можно придержать два однопалубника, когда будешь расставлять свои корабли плотно на трети карты и поставить их после этого в других двух частях. Посчитай, ведь на две другие части карты приходится примерно 60 клеточек. А занимать наши корабли будут всего 2 клеточки. То есть у противника будет 58 возможностей промахнуться, чем он непременно и займется!
Ставить на край
Корабли разумнее ставить вплотную к краю карты. Особенно большие. Это выгодно, так как после уничтожения линкора, как мы уже выяснили выше, 14 клеточек вокруг него не будут уже обстреливаться противником. Если же корабль будет стоять. скажем, в углу, то таких клеточек ореола окажется всего 6. А это существенно меньше!
Вот пример хорошо расставленного войска.
Большой корабль прижат к краю, войско теснится на, примерно, трети карты. И три практически неуязвимых подлодки находятся в стороне. И по ним будет крайне сложно попасть!Используя эти простые тактики, мы легко сможем быстро угадывать, где же затаился противник, оберегать собственную флотилию и, как результат, побеждать в каждом сражении.
Может быть и ты знаешь несколько приемов? Поделись с мной своими хитростями, ведь только собирая из вместе, нам удастся накопить достаточно опыта, чтобы никогда не проигрывать и слышать от наших противников, что: «С ним/с ней лучше не играть в морской бой, он просто непобедим!»
Оптимальный алгоритм игры в морской бой / Хабр
Пару дней назад я с удивлением узнал, что некоторые мои знакомые не умеют играть в морской бой. Т.е. правила они, конечно, знают, но вот играют как-то бессистемно и в итоге часто проигрывают. В этой записи я постараюсь изложить основные идеи, которые помогут повысить уровень вашей игры.
Правила игры
Существует множество вариантов морского боя, но мы с вами рассмотрим наиболее распространённый вариант со следующим набором кораблей:
Все перечисленные корабли должны быть размещены на квадратном поле 10 на 10 клеток, при этом корабли не могут соприкасаться ни углами, ни сторонами. Самое игровое поле нумеруется сверху вниз, а вертикали помечаются русскими буквами от «А» до «К» (при этом буквы «Ё» и «Й» пропускают).
Рядом рисуется вражеское поле аналогичного размера. При удачном выстреле по кораблю противника на соответствующей клетке вражеского поля ставится крестик и производится повторный выстрел, при неудачном выстреле в соответствующей клетке ставится точка, и ход переходит к противнику.
Оптимальная стратегия
В игре морской бой всегда есть элемент случайности, но его можно свести к минимуму. Прежде чем переходить непосредственно к поиску оптимальной стратегии, необходимо озвучить одну очевидную вещь: вероятность попасть по кораблю противника тем выше, чем меньше непроверенных клеток осталось на его поле, аналогично вероятность попадания по вашим кораблям тем ниже, чем больше непровереных клеток осталось на вашем поле.
Т.о. для эффективной игры нужно научиться сразу двум вещам: оптимальной стрельбе по противнику и оптимальному своих размещению кораблей.В дальнейшем объяснении будут использоваться следующие обозначения:
Оптимальная стрельба
Первым и самым очевидным правилом оптимальной стрельбы является следующее правило: не стрелять по клеткам непосредственно окружающим уничтоженный корабль противника.
В соответствии с принятыми выше обозначениями, на рисунке жёлтым отмечены те клетки, по которым уже были произведены безуспешные выстрелы, красным отмечены клетки, выстрелы по которым закончились попаданием, а зелёным отмечены клетки, стрельба по которым не производилась, но можно гарантировано утверждать, что кораблей в них нет (кораблей там быть не может, т.к. по правилам игры корабли не могут соприкасаться).
Из первого правила сразу вытекает второе: если вам удалось подбить вражеский корабль, необходимо сразу же его добить, чтобы как можно раньше получить список гарантировано свободных клеток.
Третье правило вытекает из первых двух: необходимо в первую очередь пытаться подбить самые крупные корабли противника. Возможно, для вас это правило не очевидно, но если немного подумать, то можно легко заметить, что уничтожив вражеский линкор, мы в лучшем случае получим информацию сразу о 14 гарантировано свободных клетках, а уничтожив крейсер, всего о 12.
Т.о. оптимальную стратегию стрельбы можно свести к целенаправленному поиску и уничтожению самых крупных кораблей противника. К сожалению, сформулировать стратегию мало, необходимо предложить способ её реализации.
Для начала давайте рассмотрим участок игрового поля размером 4 на 4 клетки. Если в рассматриваемом участке есть вражеский линкор, то его гарантировано можно подбить не более чем за 4 выстрела. Для этого надо стрелять так, чтобы на каждой горизонтали и вертикали было ровно по одной проверенной клетке. ниже представлены все варианты такой стрельбы (без учёта отражений и поворотов).
Среди всех этих вариантов, оптимальными на поле 10 на 10 клеток являются только первые два варианта, гарантирующие попадание в линкор максимум за 24 выстрела.
После того, как уничтожен вражеский линкор, необходимо начинать поиск крейсеров, а затем и эсминцев. При этом, как вы уже догадались, можно воспользоваться аналогичной методикой. Только теперь необходимо разбивать поле на квадраты со стороной в 3 и 2 клетки соответственно.
Если при поиске линкора вы использовали вторую стратегию, то для поиска крейсеров и эсминцев вам необходимо стрелять по следующим полям (зелёным отмечены поля, по которым вы уже стреляли при поиске линкора):
Для поиска катеров оптимальной стратегии не существует, поэтому в конце игры приходится опираться в основном на удачу.
Оптимальное размещение кораблей
Оптимальная стратегия размещения кораблей в некотором смысле обратна оптимальной стратегии стрельбы. При стрельбе, мы пытались найти самые крупные корабли, чтобы сократить количество клеток, которые нужно проверять, за счёт гарантировано свободных клеток. Значит, при размещении корабли надо ставить таким образом, чтобы в случае их потери минимизировать количество гарантировано свободных клеток. Как вы помните, линкор в центре поля открывает для противника сразу 14 полей, но линкор, стоящий в углу, открывает для противника всего 6 полей:
Аналогично, крейсер, стоящий в углу, вместо 12 полей открывает всего 6. Т.о., разместив крупные корабли вдоль границы поля, вы оставляете больший простор для катеров. Т.к. стратегии для поиска катеров нет, противнику придётся стрелять наугад, и чем больше свободных полей у вас останется к моменту ловли катеров, тем тяжелее будет выиграть противнику.
Ниже представлено три способа размещения крупных кораблей, которые оставляют большой простор для катеров (отмечено синим):
Каждая из приведённых расстановок оставляет для катеров ровно 60 свободных клеток, а это значит, что вероятность случайно попасть в катер составляет 0,066. Для сравнения стоит привести случайную расстановку кораблей:
При такой расстановке для катеров остаётся всего 21 клетка, а это значит, что вероятность попадания по катеру составляет уже 0,19, т. е. почти в 3 раза выше.
В заключение хочу сказать, что не стоит проводить уж слишком много времени, играя в морской бой. Особенно хочу предостеречь вас от игры на лекциях. Когда я сидел в Ваби-Саби и играл в морской бой со своей девушкой, мимо прошла официантка и сказала, что она весьма неплохо играет, т.к. много практиковалась на парах. Кто знает, кем бы она работала, если бы в своё время слушала лекции?
P.S. В комментариях абсолютно верно указывают, что на хабре уже были похожие публикации, было бы неверно не поставить ссылки на них:
habrahabr.ru/post/82221
Морской бой лучшие расположения кораблей. Как играть в Морской бой: правила
Пару дней назад я с удивлением узнал, что некоторые мои знакомые не умеют играть в морской бой. Т.е. правила они, конечно, знают, но вот играют как-то бессистемно и в итоге часто проигрывают. В этой записи я постараюсь изложить основные идеи, которые помогут повысить уровень вашей игры.
Правила игры
Существует множество вариантов морского боя, но мы с вами рассмотрим наиболее распространённый вариант со следующим набором кораблей:
Все перечисленные корабли должны быть размещены на квадратном поле 10 на 10 клеток, при этом корабли не могут соприкасаться ни углами, ни сторонами. Самое игровое поле нумеруется сверху вниз, а вертикали помечаются русскими буквами от «А» до «К» (при этом буквы «Ё» и «Й» пропускают).
Рядом рисуется вражеское поле аналогичного размера. При удачном выстреле по кораблю противника на соответствующей клетке вражеского поля ставится крестик и производится повторный выстрел, при неудачном выстреле в соответствующей клетке ставится точка, и ход переходит к противнику.
Оптимальная стратегия
В игре морской бой всегда есть элемент случайности, но его можно свести к минимуму. Прежде чем переходить непосредственно к поиску оптимальной стратегии, необходимо озвучить одну очевидную вещь: вероятность попасть по кораблю противника тем выше, чем меньше непроверенных клеток осталось на его поле, аналогично вероятность попадания по вашим кораблям тем ниже, чем больше непровереных клеток осталось на вашем поле. Т.о. для эффективной игры нужно научиться сразу двум вещам: оптимальной стрельбе по противнику и оптимальному своих размещению кораблей.
В дальнейшем объяснении будут использоваться следующие обозначения:
Оптимальная стрельба
Первым и самым очевидным правилом оптимальной стрельбы является следующее правило: не стрелять по клеткам непосредственно окружающим уничтоженный корабль противника.
В соответствии с принятыми выше обозначениями, на рисунке жёлтым отмечены те клетки, по которым уже были произведены безуспешные выстрелы, красным отмечены клетки, выстрелы по которым закончились попаданием, а зелёным отмечены клетки, стрельба по которым не производилась, но можно гарантировано утверждать, что кораблей в них нет (кораблей там быть не может, т.к. по правилам игры корабли не могут соприкасаться).
Из первого правила сразу вытекает второе: если вам удалось подбить вражеский корабль, необходимо сразу же его добить, чтобы как можно раньше получить список гарантировано свободных клеток.
Третье правило вытекает из первых двух: необходимо в первую очередь пытаться подбить самые крупные корабли противника. Возможно, для вас это правило не очевидно, но если немного подумать, то можно легко заметить, что уничтожив вражеский линкор, мы в лучшем случае получим информацию сразу о 14 гарантировано свободных клетках, а уничтожив крейсер, всего о 12.
Т.о. оптимальную стратегию стрельбы можно свести к целенаправленному поиску и уничтожению самых крупных кораблей противника. К сожалению, сформулировать стратегию мало, необходимо предложить способ её реализации.
Для начала давайте рассмотрим участок игрового поля размером 4 на 4 клетки. Если в рассматриваемом участке есть вражеский линкор, то его гарантировано можно подбить не более чем за 4 выстрела. Для этого надо стрелять так, чтобы на каждой горизонтали и вертикали было ровно по одной проверенной клетке. ниже представлены все варианты такой стрельбы (без учёта отражений и поворотов).
Среди всех этих вариантов, оптимальными на поле 10 на 10 клеток являются только первые два варианта, гарантирующие попадание в линкор максимум за 24 выстрела.
После того, как уничтожен вражеский линкор, необходимо начинать поиск крейсеров, а затем и эсминцев. При этом, как вы уже догадались, можно воспользоваться аналогичной методикой. Только теперь необходимо разбивать поле на квадраты со стороной в 3 и 2 клетки соответственно.
Если при поиске линкора вы использовали вторую стратегию, то для поиска крейсеров и эсминцев вам необходимо стрелять по следующим полям (зелёным отмечены поля, по которым вы уже стреляли при поиске линкора):
Для поиска катеров оптимальной стратегии не существует, поэтому в конце игры приходится опираться в основном на удачу.
Оптимальное размещение кораблей
Оптимальная стратегия размещения кораблей в некотором смысле обратна оптимальной стратегии стрельбы. При стрельбе, мы пытались найти самые крупные корабли, чтобы сократить количество клеток, которые нужно проверять, за счёт гарантировано свободных клеток. Значит, при размещении корабли надо ставить таким образом, чтобы в случае их потери минимизировать количество гарантировано свободных клеток. Как вы помните, линкор в центре поля открывает для противника сразу 14 полей, но линкор, стоящий в углу, открывает для противника всего 6 полей:
Аналогично, крейсер, стоящий в углу, вместо 12 полей открывает всего 6. Т.о., разместив крупные корабли вдоль границы поля, вы оставляете больший простор для катеров. Т.к. стратегии для поиска катеров нет, противнику придётся стрелять наугад, и чем больше свободных полей у вас останется к моменту ловли катеров, тем тяжелее будет выиграть противнику.
Ниже представлено три способа размещения крупных кораблей, которые оставляют большой простор для катеров (отмечено синим):
Каждая из приведённых расстановок оставляет для катеров ровно 60 свободных клеток, а это значит, что вероятность случайно попасть в катер составляет 0,066. Для сравнения стоит привести случайную расстановку кораблей:
При такой расстановке для катеров остаётся всего 21 клетка, а это значит, что вероятность попадания по катеру составляет уже 0,19, т. е. почти в 3 раза выше.
В заключение хочу сказать, что не стоит проводить уж слишком много времени, играя в морской бой. Особенно хочу предостеречь вас от игры на лекциях. Когда я сидел в Ваби-Саби и играл в морской бой со своей девушкой, мимо прошла официантка и сказала, что она весьма неплохо играет, т.к. много практиковалась на парах. Кто знает, кем бы она работала, если бы в своё время слушала лекции?
P.S. В комментариях абсолютно верно указывают, что на хабре уже были похожие публикации, было бы неверно не поставить ссылки на них.
«Морской бой» — увлекательная и простая игра, для которой не требуется специальных приспособлений и особых знаний. В неё можно играть как на компьютере, так и на бумаге, причём некогда использовался лишь второй вариант, поскольку иной возможности не было. Не все знают, как играть в «Морской бой», потому что либо не было возможности научиться, либо не было «учителя». В любом случае, подобное знание может пригодиться. Правила игры «Морской бой» несложные, запомнить их сможет любой человек, несмотря на возраст и уровень интеллекта.
Общее
Игра «Морской бой» давно покорила многих людей. Она интересная, увлекательная, а главное — не требует каких-либо затрат. Чтобы поиграть с человеком вдвоём, понадобятся два листа бумаги в клетку (желательно) и две ручки (или 2 карандаша).
«Морской бой» полезен не только тем, что позволяет хорошо провести время. Игра также способствует развитию стратегического мышления и интуиции. Если вы с человеком друг друга знаете, у вас есть возможность применить сведения о противнике. Например, ваши предположения о том, как он мог бы поставить корабли, чтобы их было сложно найти, как бы вы поставили, если бы были на его месте, могут подтвердиться и помочь выиграть.
Правила
Что ж, можно приступать к основной части. Теперь-то вы узнаете, как играть в «Морской бой»:
1. Для начала нужно нарисовать на листе бумаги два квадрата размером 10х10 клеток (понятное дело, рисовать проще на листе в клетку). Затем на обеих рисунках проставить на верхнем ряду буквы от А до К (слева направо, пропуская Ё и Й), а слева от квадратов — цифры от 1 до 10-и (сверху вниз).
2. На левом квадрате необходимо расставить:
- 1 корабль, состоящий из 4-х клеток;
- 2 корабля, состоящих из 3-х клеток;
- 3 корабля, состоящих из 2-х клеток;
- 4 корабля, состоящие из 1-ой клетки.
Корабли не могут соприкасаться друг с другом ни бортами, ни углами. Важно, чтобы между ними была как минимум одна свободная клетка. Края игрового поля корабли касаться могут, и они должны быть расположены лишь по вертикали и по горизонтали (по диагонали нельзя).
Правый квадрат должен оставаться пустым.
3. Цель каждого из игроков — уничтожить вражеские корабли. Тот, кто ходит первым (по договорённости или по воле случая (с помощью жребия)), называет координаты (буква-цифра), глядя на правый пустой квадрат. Например, Е7. Соперник смотрит на свой левый рисунок, где расположены его корабли, и отвечает:
а) мимо;
б) ранил;
в) убит.
Первый вариант означает, что игрок попал на пустую клетку, то есть не попал никуда. Он помечает в своём правом квадрате это место, чтобы не выбрать его второй раз (чаще всего крестиком, но можно любым другим удобным способом), а ход тем временем переходит ко второму игроку.
Второй вариант означает, что игрок попал в многопалубный корабль (занимающий от 2-х до 4-х клеток). Пометив в своей карте нужное место, человек имеет право на следующий ход до тех пор, пока не промахнётся. Так, если после выкрика Е7 проследовал ответ «ранен», игрок может назвать либо Е6, либо Ж7, либо Е8, либо Д7, чтобы добить раненный корабль (к слову, делать это не обязательно, можно временно оставить его в покое и искать другие). Второй игрок снова отвечает «мимо», «ранен» или «убит».
Третий вариант означает, что корабль противника уничтожен. Если это случилось с первого хода, значит, он был однопалубным (состоящим из одной клетки), что можно назвать большой удачей. Если со второго (например, после Е7 игрок сказал Е6), значит, двухпалубный и т.д. После подбивания корабля, как и после ранения, игрок ходит до тех пор, пока не получит ответ «мимо».
4. Ход переходит от одного игрока к другому в случае промаха и задерживается у одного из противников в случае удачного попадания. Побеждает тот человек, кто первым найдёт и уничтожит все вражеские корабли.
Иные вариации
Бывает «Морской бой» на бумаге, а бывает на компьютере, как уже говорилось ранее. И если для первого варианта нужен реальный, живой противник, то в последнем случае можно играть с роботами. Правда, во-первых, это не будет так интересно (реакция противника, когда топишь его корабль, бесценна), во-вторых, возможность подглядеть во вражеский флот исключается абсолютно (все мы понимаем, что некоторые люди так и норовят схитрить).
Так или иначе, придумать другие, более расширенные варианты игры несложно, всё зависит от фантазии игроков и их желания/умения экспериментировать. Важно сразу уточнять все правила, ведь если не каждому человеку будет ясно, как играть в «Морской бой», правила которого вы придумали, ничего хорошего не выйдет, качественной игры не получится.
Например, можно добавить больше клеток в «поле боя» (не 10х10, а 20х20, допустим), после чего либо оставить количество кораблей, либо увеличить их. Можно усложнить задачу настолько, что все корабли, которые надо найти противнику — однопалубные. Можно сделать мины, при попадании на которые противник пропускает один ход. Вариантов масса, главное — знать во всём меру.
Заключение
Вот и всё, теперь вы познакомились с новой игрой и вам известны её правила. Вопрос «как играть в «Морской бой»» должен быть исчерпан. Отныне вам с приятелями будет чем заняться во время скучных уроков/лекций или на работе, если имеется возможность находиться недалеко друг от друга и писать на листах бумаги.
Пару дней назад я с удивлением узнал, что некоторые мои знакомые не умеют играть в морской бой. Т.е. правила они, конечно, знают, но вот играют как-то бессистемно и в итоге часто проигрывают. В этой записи я постараюсь изложить основные идеи, которые помогут повысить уровень вашей игры.
Правила игры
Существует множество вариантов морского боя, но мы с вами рассмотрим наиболее распространённый вариант со следующим набором кораблей:
Все перечисленные корабли должны быть размещены на квадратном поле 10 на 10 клеток, при этом корабли не могут соприкасаться ни углами, ни сторонами. Самое игровое поле нумеруется сверху вниз, а вертикали помечаются русскими буквами от «А» до «К» (при этом буквы «Ё» и «Й» пропускают).
Рядом рисуется вражеское поле аналогичного размера. При удачном выстреле по кораблю противника на соответствующей клетке вражеского поля ставится крестик и производится повторный выстрел, при неудачном выстреле в соответствующей клетке ставится точка, и ход переходит к противнику.
Оптимальная стратегия
В игре морской бой всегда есть элемент случайности, но его можно свести к минимуму. Прежде чем переходить непосредственно к поиску оптимальной стратегии, необходимо озвучить одну очевидную вещь: вероятность попасть по кораблю противника тем выше, чем меньше непроверенных клеток осталось на его поле, аналогично вероятность попадания по вашим кораблям тем ниже, чем больше непровереных клеток осталось на вашем поле. Т.о. для эффективной игры нужно научиться сразу двум вещам: оптимальной стрельбе по противнику и оптимальному своих размещению кораблей.
В дальнейшем объяснении будут использоваться следующие обозначения:
Оптимальная стрельба
Первым и самым очевидным правилом оптимальной стрельбы является следующее правило: не стрелять по клеткам непосредственно окружающим уничтоженный корабль противника.
В соответствии с принятыми выше обозначениями, на рисунке жёлтым отмечены те клетки, по которым уже были произведены безуспешные выстрелы, красным отмечены клетки, выстрелы по которым закончились попаданием, а зелёным отмечены клетки, стрельба по которым не производилась, но можно гарантировано утверждать, что кораблей в них нет (кораблей там быть не может, т.к. по правилам игры корабли не могут соприкасаться).
Из первого правила сразу вытекает второе: если вам удалось подбить вражеский корабль, необходимо сразу же его добить, чтобы как можно раньше получить список гарантировано свободных клеток.
Третье правило вытекает из первых двух: необходимо в первую очередь пытаться подбить самые крупные корабли противника. Возможно, для вас это правило не очевидно, но если немного подумать, то можно легко заметить, что уничтожив вражеский линкор, мы в лучшем случае получим информацию сразу о 14 гарантировано свободных клетках, а уничтожив крейсер, всего о 12.
Т.о. оптимальную стратегию стрельбы можно свести к целенаправленному поиску и уничтожению самых крупных кораблей противника. К сожалению, сформулировать стратегию мало, необходимо предложить способ её реализации.
Для начала давайте рассмотрим участок игрового поля размером 4 на 4 клетки. Если в рассматриваемом участке есть вражеский линкор, то его гарантировано можно подбить не более чем за 4 выстрела. Для этого надо стрелять так, чтобы на каждой горизонтали и вертикали было ровно по одной проверенной клетке. ниже представлены все варианты такой стрельбы (без учёта отражений и поворотов).
Среди всех этих вариантов, оптимальными на поле 10 на 10 клеток являются только первые два варианта, гарантирующие попадание в линкор максимум за 24 выстрела.
После того, как уничтожен вражеский линкор, необходимо начинать поиск крейсеров, а затем и эсминцев. При этом, как вы уже догадались, можно воспользоваться аналогичной методикой. Только теперь необходимо разбивать поле на квадраты со стороной в 3 и 2 клетки соответственно.
Если при поиске линкора вы использовали вторую стратегию, то для поиска крейсеров и эсминцев вам необходимо стрелять по следующим полям (зелёным отмечены поля, по которым вы уже стреляли при поиске линкора):
Для поиска катеров оптимальной стратегии не существует, поэтому в конце игры приходится опираться в основном на удачу.
Оптимальное размещение кораблей
Оптимальная стратегия размещения кораблей в некотором смысле обратна оптимальной стратегии стрельбы. При стрельбе, мы пытались найти самые крупные корабли, чтобы сократить количество клеток, которые нужно проверять, за счёт гарантировано свободных клеток. Значит, при размещении корабли надо ставить таким образом, чтобы в случае их потери минимизировать количество гарантировано свободных клеток. Как вы помните, линкор в центре поля открывает для противника сразу 14 полей, но линкор, стоящий в углу, открывает для противника всего 6 полей:
Аналогично, крейсер, стоящий в углу, вместо 12 полей открывает всего 6. Т.о., разместив крупные корабли вдоль границы поля, вы оставляете больший простор для катеров. Т.к. стратегии для поиска катеров нет, противнику придётся стрелять наугад, и чем больше свободных полей у вас останется к моменту ловли катеров, тем тяжелее будет выиграть противнику.
Ниже представлено три способа размещения крупных кораблей, которые оставляют большой простор для катеров (отмечено синим):
Каждая из приведённых расстановок оставляет для катеров ровно 60 свободных клеток, а это значит, что вероятность случайно попасть в катер составляет 0,066. Для сравнения стоит привести случайную расстановку кораблей:
При такой расстановке для катеров остаётся всего 21 клетка, а это значит, что вероятность попадания по катеру составляет уже 0,19, т. е. почти в 3 раза выше.
В заключение хочу сказать, что не стоит проводить уж слишком много времени, играя в морской бой. Особенно хочу предостеречь вас от игры на лекциях. Когда я сидел в Ваби-Саби и играл в морской бой со своей девушкой, мимо прошла официантка и сказала, что она весьма неплохо играет, т.к. много практиковалась на парах. Кто знает, кем бы она работала, если бы в своё время слушала лекции?
P.S. В комментариях абсолютно верно указывают, что на хабре уже были похожие публикации, было бы неверно не поставить ссылки на них.
Морской бой – популярная игра с простыми правилами. Задаваясь вопросом, как выиграть в морской бой, игроку в этом всегда поможет победный настрой и правильная стратегия.
Для начала нужно вспомнить правила игры. В распоряжении у игрока десять кораблей: 1 четырехпалубный линкор, 2 трехпалубных крейсера, 3 двухпалубных эсминца и 4 однопалубных катера.
Флот располагается на поле так, чтобы суда не касались друг друга. Рядом нужно нарисовать такое же поле для противника, чтобы отмечать свои выстрелы. При промахе ход переходит к сопернику. Выигрывает тот, кто первый потопит флот оппонента.
Можно договориться с оппонентом о возможности менять форму судов, «загибать» корабли. Так суда на поле будут похожи на детали «Тетриса», их будет сложнее потопить, а играть станет интереснее.
Удачный расклад в игре зависит не от воли случая, а от двух важных компонентов стратегии:
- расстановка собственных судов;
- оптимальный вариант стрельбы по флоту противника.
Расположение кораблей
Существуют несколько тактик для расстановки своего флота. Сработает тактика или нет, будет зависеть от тактики стрельбы соперника. В любом случае, бессистемное расположение кораблей не приведет к заведомо хорошему результату.
«Половина поля»
Первая тактика заключается в том, что линкор, крейсеры и эсминцы располагаются на одной половине поля.
А вот четыре катера располагаются на противоположной стороне, в результате они становятся практически неуязвимы. Противнику придется сделать очень много выстрелов, прежде чем он услышит «Убит!».
«Диагонали»
Большинство игроков первым делом начинают простреливать поле по двум диагоналям – от угла к углу. Если соперник относится к этому типу, вторая тактика окажется весьма кстати. Все корабли располагаются таким образом, чтобы выстрелы по диагонали их не задели.
Эта тактика хороша тем, что ее можно применить вместе с еще одной тактикой расстановки. Продуманное расположение своего флота – половина успеха.
«Берега»
Третью тактику можно применять двумя способами. Первый способ прост – расположить все свои корабли по краям, чтобы середина поля осталась пустой. Пока противник будет бессистемно палить, гадая, куда подевались все суда, можно спокойно искать его флот.
Такая тактика может себя не оправдать, особенно, когда соперник догадается, в чем фишка. Если секрет расположения судов раскроется, соперник за минимальное количество ходов потопит всю флотилию игрока.
Второй способ более продуман и похож на тактику «Половина поля». Для этого линкор, крейсера и эсминцы расположить по берегам, а вот катера разбросать по всему полю.
Размещая крупные корабли таким образом, для катеров остается много свободного места. Стратегии для поиска катеров не существует, и соперник будет палить наугад, теряя драгоценные ходы.
Даже если противник не собирается обстреливать поле по диагонали, выстрелов по углам не миновать. Таким образом, клетки А1, А10, К1, К10 лучше не занимать. Также нежелательно располагать корабли в самом центре поля – Д5, Д6, Е5, Е6.
Сила и неуязвимость игрока именно в однопалубных катерах – хотя уничтожить их можно с одного выстрела, для этого нужно их сначала найти. Чем надежнее они спрятаны, тем больше шансов одержать победу в партии.
Уничтожение противника
Для уничтожения флотилии соперника тоже существуют несколько тактик. Некоторые из них перекликаются с тактиками расстановки кораблей.
«Диагонали»
Многие люди хотя бы одно судно, но поставят на этой периферии. Поэтому вооружаемся терпением и методично простреливаем диагонали, чередуя для разнообразия направления стрельбы.
Игрок на картинке пренебрег тактикой правильного расположения и поплатился за это потерей линкора и катера.
Когда диагонали прострелены, можно продолжить стрельбу в шахматном порядке.
«Шахматы»
Из названия ясно, каким образом нужно «зачищать» поле противника. Тактика хороша тем, что позволяет достаточно быстро найти линкоры, эсминцы и крейсера. Однако, с поиском катеров придется попотеть.
«Локатор»
Тактика немного похожа на «Шахматы», однако, со своей изюминкой. Чтобы воспользоваться этой тактикой в углах поля мысленно или прямо ручкой обозначить четыре квадрата размером 4 на 4 клетки.
Нужно обстрелять их по диагонали. Поле в результате будет разделено белым крестом. Учитывая количество судов, которые уже удалось потопить, найти остальные не составит труда. На картинке игрок обнаружил шесть кораблей благодаря тактике «Локатор».
«Гусиные лапки»
Уничтожение линкора дает игроку преимущество в том, что ему останется обстреливать куда меньшее количество клеток, чем если он подобьет, например, эсминец. Потопив линкор, вокруг него будет от 6 до 14 клеток, которые игроку обстреливать уже не нужно.
Итак, чтобы найти линкор, можно воспользоваться тактикой «Гусиные лапки». Для этого мысленно поделить поле на квадраты размером 4 на 4 клетки и в каждом квадрате сделать по четыре залпа.
В первом верхнем квадрате игрок дает залп по А3, Б4, В2, Г1. Далее остается повторить узор и в других квадратах. Линкор будет найден максимум за 24 выстрела.
После того как линкор найден и потоплен, можно перейти к наступлению на трехпалубные крейсера. Для этого в каждом квадрате нужно сделать всего по два выстрела.
В первом квадрате выстрелить по Б1 и Г3, с остальными миниполями поступить точно также. Одиннадцатый выстрел гарантированно подобьет крейсер.
Чтобы подбить двухпалубный эсминец в каждом квадрате нужно сделать по три выстрела. В первом квадрате палить по А2, Б3 и В4. Повторить тройной ход в остальных квадратах. В конце концов, останется самое сложное – поиск катеров. К сожалению тактики для их поиска нет. Игроку придется полагаться на свою интуицию или психологию противника.
Есть еще несколько правил для быстрого уничтожения флота соперника:
- Правилами «Морской бой» не предписывается обязательно добивать корабль после первого «Ранен!». Однако, дело лучше довести до победного «Убит!», потому что так игрок сможет выяснить по каким клеткам можно не стрелять. Ведь суда не могут стоять вплотную друг к другу.
- Обстреливая поле противника, не нужно топтаться на одном месте. Выстрелы должны охватить как можно большую площадь. Держа в голове понравившуюся тактику, игрок может «ходить» по полю, вместо того, чтобы продолжать обстреливать неудачный участок.
- Если соперник использует какую-то тактику, а не бессистемно палит по случайным клеткам, нужно включить голову. Иногда, присмотревшись к ходам противника, можно догадаться, как он расставил свои корабли.
- Часто играя с одним соперником, игрок может запоминать его тактику расстановки и обстрела, используя полученный опыт для улучшения собственной стратегии.
Для отработки навыков игры в «Морской бой» и проверки тактик можно воспользоваться онлайн-сервисами. Плюсы игровых сайтов в высокой скорости и низкой затрате ресурсов. А выработав и улучшив свою стратегию, игрок сможет блеснуть своими знаниями в партии с живым соперником.
Стопроцентного способа выиграть в «Морской бой» не существует, в конечном счете все зависит от стратегии противника и самого игрока. Именно по этой причине, «Морской бой» остается нескучным способом провести время.
Простая и увлекательная игра, которую знают с самого детства – морской бой. Правила игры не очень сложные, запомнить их может любой желающий. Морская баталия нравится взрослым и детям, играть в нее можно в любом месте.
Правила игры Морской бой
Суть развлечения заключается в том, что два игрока по очереди называют определенные координаты на карте соперника, которая им неизвестна. Названная точка должна попасть в корабль или его часть. Задача каждого игрока: раньше потопить все суда противника. Вариантов такой игры на сегодняшний день несколько:
- На бумаге. Этот способ считается классическим вариантом развлечения. Он позволяет играть в любом месте. Подойдет для баталии тетрадка в клеточку или один листик (даже не разлинованный).
- Настольная. Первый вариант такого развлечения появился больше 80 лет назад. Настольная игра морской бой отличалась объемностью, красочностью. Спустя время появилось много вариаций с разной численностью кораблей, другими размерами полей.
- На компьютере. Современные гаджеты легко можно превратить в поле боя кораблей, скачав и установив нужное приложение. Есть варианты игры в сети. Особенности: выбранные точки фиксируются автоматически, есть озвучка, которая добавляет реальности происходящему.
Поле
Чтобы понять, как играть в морской бой, надо разобраться с основными понятиями. Начать нужно с рисования своего игрового поля. Оно представляет собой координатную плоскость, квадрат 10 на 10. Каждая его сторона свои определения: горизонтальную нумеруют сверху вниз, вертикальную – буквенными обозначениями. Используются буквы русского алфавита от «А» до «К» или от «А до «И», если «Ё» и «Й» пропускаются. Нередко вместо буквенных обозначений используются слова «Снегурочка» или «Республика». Они состоят из десяти букв, что соответствует 10 квадратам на игровом поле.
Рядом со «своим» полем надо начертить «чужое», которое имеет такие же размеры и координаты. Это участок для флотилии противника. Поле пустое, используется для отметки своих ходов и «ударов» соперника. С учетом того, что существует несколько вариантов системы координат, рекомендуется заранее договориться, какая из них будет использоваться. Далее необходимо расставить корабли.
Количество и расстановка кораблей
Существует определенная схема расположения кораблей на игровом поле. Судно состоит из нескольких палуб или труб (отсюда название, к примеру, «двухпалубный» или «двухтрубный»). На игровом поле располагаются:
- 1 четырехпалубный, корабль, линкор, – ряд из четырех клеток,
- 2 трехпалубных, крейсера, – ряды из 3 клеток;
- 3 двухпалубных, эсминцы, – ряды из 2 клеток;
- 4 однопалубных корабля, торпедные катера, – 1 клетка.
В классической игре рисовать корабли на игровом поле необходимо согласно правилам. Например, все суда сторонами или углами не могут касаться друг друга. Встречаются варианты игры, когда корабли размещаются буквой «Г», квадратами или зигзагами, не запрещается касание углами. Также есть баталии с другим количеством судов или их строением, к примеру, пятипалубный (авианосец), несколько четырехпалубных. При использовании большего количества кораблей применяется другая форма поля, размером 15 на 15. Определиться с выбором игры необходимо заранее.
Ход игры
Играть в морской бой на бумаге необходимо в соответствии с определенными правилами. Инструкция определяет условия и очередность ходов:
- Первоначально выбирается кто будет ходить с первым. Для этого игроки бросают жребий.
- При совершении «выстрела», игрок называет координаты, к примеру, В3.
- Если в клетке ничего нет, противник говорит «мимо». По названным координатам расположен корабль, то «ранен» – если в него попали, «убит» – когда уничтожен полностью.
- Крестиком обозначается попадание в корабль противника. При таком удачном выстреле, согласно правилам, игрок ходит второй раз. Право хода передается второму игроку, если удар пришелся по пустому полю.
- Побеждает тот, кто первый потопит все корабли своего соперника.
- По окончании игры противники могут потребовать друг у друга игровые поля для проверки. Проигравшим будет считаться тот, у кого поля неверно заполнены. Победа достается тому, кто вел честную борьбу.
Есть определенные ограничения в игре. Игра может быть закончена раньше, если имеет место несоблюдение правил. Грубыми нарушениями считаются:
- Неправильно начерченное поле – количество судов превышает нужное, неверные размеры сторон или система координат.
- Один из игроков подсмотрел расположение судов у другого.
- Пропуск хода по невнимательности.
Стратегия выигрыша
Несложная баталия не строится исключительно на везении. Для достижения победы существует стратегия и тактика игры в морской бой. Она заключается в следующем:
- Лист с расчерченным полем необходимо держать так, чтобы противник не мог посмотреть.
- Для удобства и отчетности рекомендуется отмечать точками выстрелы врага.
- Самые уязвимые корабли – это линкор и торпедный катер. Первый очень крупный, поэтому его легко обнаружить. Торпедные катера имеют маленькие размеры, их трудно найти на поле, но топятся они с одного удара.
- Новички нередко целятся по углам игрового квадрата, поэтому рисовать там их не рекомендуется.
- Опытные игроки советуют сразу придумать схему расположения кораблей на поле. Хороших результатов можно добиться, если расставить единицы флотилии по схеме. Например, собрав крейсера и линкоры в одном месте, а катера и эсминцы расположить в хаотичном порядке.
- Приемы стрельбы по флотилии могут быть разными. Чтобы быстрее истребить линкор, поиски его рекомендуется начать по диагонали. Стрелять по квадратам нужно на 4, через 3 клетки. Дальше двигаться нужно по убыванию: разыскивать трехпалубные, двухпалубные и одиночки-катера.
Видео
GamePigeon Sea Battle Guide: Tips & Tricks
Одна из самых популярных игр, в которую вы можете играть прямо сейчас, это GamePigeon Морской бой или Морской бой . Это игра-расширение iMessage, которая очень похожа на боевой корабль , в который вы играли в детстве, но вам не нужно беспокоиться о правильном вводе координат или хранении всех этих маленьких кусочков в одном и том же месте.
Вместо этого вам просто нужно побеспокоиться о том, чтобы найти корабль и подготовить линкор, когда вы это сделаете.
Игра может длиться долго, если вы не будете умны в своей игре. Многое из Морской бой стратегия будет вращаться вокруг нападения. Вам нужно совершать умные звонки. Тем не менее, ваша защита также имеет значение. Вы должны размещать свои лодки на доске в умных местах. Как и в случае с боевыми кораблями, эта игра обязательно понравится.
Чтобы играть в Sea Battle на вашем iPhone или iPad , у вас должны быть установлены и включены игры GamePigeon . Затем вам нужно найти готового противника.
В этом руководстве мы расскажем , как играть в Морской бой на GamePigeon , как размещать свои лодки и как делать предположения. Читайте дальше, чтобы стать мастером и узнать советы, как освоить игру. Если хочешь победить, следуй советам!
Как установить приложение GamePigeon Sea Battle iMessage
Чтобы найти приложение iMessage, перейдите в AppStore и выполните поиск GamePigeon. Он появится с подзаголовком «Игры для iMessage». Выберите и установите приложение.
После установки значок игр GamePigeon появится в правом нижнем углу приложения iMessage. Коснитесь значка, и появятся игры:
Как начать игру на GamePigeon
Установив приложение iMessage, запустите игру, выбрав игрока в любой ветке iMessage и открыв Морской бой.
Чтобы открыть «Морской бой», прокрутите вниз ветку iMessage и выберите приложение GamePigeon. Если его там нет, значит, вы его не установили. Выполните описанные выше действия, чтобы установить приложение iMessage.
После того, как вы щелкнете по значку, должны появиться игры, и вы сможете выбрать Морской бой. Игра появится в ветке сообщений вашему оппоненту:
Ваш оппонент должен быть доступен и готов играть!
Морской бой Общая стратегия
Игра «Морской бой» представляет собой стратегическую военную симуляцию и игру по управлению зданиями.
Игроки становятся капитанами собственного корабля, который они могут модифицировать, выбирая различные паруса, корпуса, носовые фигуры, мачты и многое другое. Цель игры состоит в том, чтобы доминировать над другими игроками, атакуя их из пушек или топя их корабли.
Чтобы побеждать в битвах, вам необходимо планировать свои атаки на вражеские корабли, чтобы потопить их, не потопив себя. Размещение линкора имеет решающее значение, так как вы можете свести к минимуму оборонительные атаки и максимизировать наступательные атаки.
Как играть в
Sea Battle на GamePigeonЕсли вы раньше играли в Морской бой, то знаете как работает игра . Это в основном та же самая предпосылка. Здесь нет ни сюрпризов, ни подвохов. Тем не менее, не все играли в эту игру, поэтому вот несколько основных шагов:
- Начните с размещения кораблей на игровом поле. Все игроки могут перемещать свои корабли по своему усмотрению. Их нельзя ставить по диагонали, но можно ставить по горизонтали и по вертикали. Вы хотите, чтобы корабли находились достаточно далеко друг от друга, чтобы они не сидели рядом друг с другом. Если вы сделаете это, ящики вокруг корабля станут красными, пока вы их не переместите.
- Угадай, где твой враг разместил свои корабли. Вы можете выбирать по одной клетке за раз . Если вы приземлитесь в воду, на ящике появится точка. Если вы попали в корабль, вы почувствуете легкую дрожь на своем телефоне и увидите дым. Если вы попали в корабль, вы можете снова угадать. Если вы промахнетесь, наступит очередь вашего врага.
- Когда вы успешно угадаете все квадраты, в которых находится корабль вашего противника, вы увидите, как появится корабль, и все точки вокруг корабля заполнятся.
Игра идет вперед и назад и может занять много времени, в зависимости от того, как быстро ответит ваш противник. Если вы хотите играть в более короткую игру, вы можете изменить размер сетки и уменьшить количество кораблей.
Морской бой Стратегия: оборонаРасполагая свои лодки во время игры, будьте внимательны. Не ставьте все в один угол и не ставьте все корабли по краям. Это хороший способ создать шаблон, который люди легко увидят. Вы также хотите менять свою стратегию каждый раз, когда играете в игру.
Если вы собираетесь размещать какие-либо корабли по краям доски, рассмотрите возможность размещения там самых больших кораблей. Таким образом, вы можете устранить количество свободных мест получает ваш противник, когда топит ваш большой корабль. Поскольку самые большие корабли, скорее всего, будут поражены первыми в игре, вы лишаете своего противника некоторых преимуществ.
Если у вас есть большие участки открытой воды, это лучшее место для размещения тех маленьких кораблей , которые действительно трудно найти. Обычно это последние корабли в игре. Они не фиксируются в шахматном порядке, если вы правильно их разместите.
Лучшее, что вы можете сделать для нападения, это подумайте о размещении вашего линкора . Не позволяйте ИИ настраивать их за вас. Подумайте о шахматной доске и выберите цвет (это стратегия, о которой мы поговорим в защиту). Не ставьте все свои маленькие корабли на что бы они были одного цвета.
Морской бой Стратегия: НападениеКогда вы угадываете, в какие квадраты поразить , нужно учитывать несколько моментов. Во-первых, ваш противник будет делать то же самое, что и вы в нападении. Начните с угадывания по краям, а затем двигайтесь к центру.
При угадывании большинство людей будут отгадывать в шахматном порядке . Это включает в себя представление о доске линкора как о шахматной доске. Выберите красный или черный и цельтесь только в эти квадраты. Это поможет вам подобрать многие лодки, но не все. Некоторые люди решают сделать из гигантский X с каждым вторым квадратом , чтобы разделить доску. Вы также можете сделать это, поставив знак плюс (+).
Когда вы столкнетесь с кораблем, продолжайте идти, пока не уничтожите его. Некоторые люди думают, что лучше всего найти их все, а затем начать, но таким образом вы нажмете больше воды. Когда корабль полностью поражен, поля вокруг него заполнятся, а это означает, что вам не нужно их угадывать. Поскольку вы не можете размещать лодки в этой области, это отличный способ избавиться от плохих ходов .
Если вы регулярно играете с друзьями, начнёт запоминать их ходы . Некоторые люди будут играть с большинством своих кораблей по краям, а затем перейдут к центру.
GamePigeon Морской бой ЧитыК сожалению, кроме кражи чужого телефона, нет никаких читов на линкор для этой игры . Единственное, что вы действительно можете сделать, это узнать, как играют определенные люди, и использовать это в своих интересах. Морской бой — отличный способ насладиться этой классической игрой . Вы получаете добавление звуков и тактильных ощущений, что делает его немного более похожим на старую пластиковую игру, которую многие из нас помнят. Однако вам не нужно беспокоиться о том, что эти маленькие красные и белые жетоны разбросаны по всему дому.
Морской бой
Я собираюсь продолжить свой анализ классических карточных и настольных игр, взглянув на игру Морской бой . (См. ранние публикации для анализа желобов и лестниц, Candyland и риск).
| Морской бой — классическая игра для двух человек, в которую изначально играли ручкой и бумагой. На сетке (обычно 10 x 10), игроки шкура суда смешанной длины; горизонтально или вертикально (не по диагонали) без каких-либо перекрытий. Точные типы и количество кораблей варьируются в зависимости от правила, но для этой публикации я использую корабли длины: 5, 4, 3, 3, 2 (что приводит к 17 возможным целям из 100 квадратов). |
Несколько примеров расположения показаны ниже:
Не перекрываются, но соприкасаются
Примечание : хотя корабли не могут пересекаться, в правилах ничего не говорится о том, что они не могут соприкасаться. (На самом деле, некоторые игроки считают это стратегией, позволяющей запутать противника, скрывая истинное расположение кораблей. Если подряд пять попаданий, то наивный игрок может счесть это успешным уничтожением авианосца длины 5, а на самом деле это могло быть потопление линкора длины 4, и части крейсер длины 3) |
Простые правила игры
Ну начнем с описания упрощенного способа игры: После того, как каждый игрок спрятал свой флот, игроки поочередно стреляют друг в друга, указывая координаты целевого местоположения. После каждого выстрела противник отвечает либо вызовом HIT! или МИСС! указывая, попали ли координаты цели в часть лодки или в открытую воду. Пример текущей игры показан слева. На этих диаграммах промахи обозначены серыми крестами, а попадания — красными квадратами с серыми крестами. Игрок, первым потопивший флот противника (попавший во все локации, закрытые частью лодки), побеждает в игре. |
Игра в случайном порядке
Первая возможная стратегия создания компьютерного противника состоит в том, чтобы делать удары абсолютно случайным образом.
Как и ожидалось, результаты стрельбы случайными залпами дают очень плохие результаты. Игры занимают много времени, так как нужно поразить большинство квадратов, чтобы все корабли были потоплены. |
Mathematically, the chances of playing a perfect game with random firing are easy to calculate and are:
355,687,428,096,000 / 2,365,369,369,446,553,061,560,941,772,800,000
(This equates to, on average, once in every 6,650,134,872,937,201,800 games!)
I ran 100 миллионов симуляций случайных игр, и наименьшее количество ходов, с которыми я столкнулся, было 44 броска.
Ниже приведен график, показывающий распределение количества случайных выстрелов, необходимых для завершения каждой из 100 миллионов симуляций. Ось X показывает количество выстрелов, а а ось Y показывает количество игр, которые были завершены за это количество выстрелов.
(Неудивительно, что количество игр, в которых требовалось произвести все 100 выстрелов, равно 17 миллионам. В конце концов, существует вероятность 17/100, что последняя посещенная клетка будет содержать корабль).
Ниже приведен график кумулятивной вероятности завершения игры с n -случайными залпами. Для завершения примерно 50% игр требуется 96 бросков, а в 99% игр потребуется более 78 бросков.
Лучшая стратегия
Значительно улучшить результаты довольно легко. Первоначально выстрелы могут быть произведены наугад, но как только часть корабля будет поражена, можно будет обыскать вверх , вниз , влево и вправо в поисках еще одного корабля.
Простая реализация этой усовершенствованной стратегии заключается в создании стопки потенциальных целей. Изначально компьютер находится в режиме Охота , стреляя наугад. Как только корабль становится «крылатым» , компьютер переключается в режим Цель . После удара четыре окружающие квадраты сетки добавляются в стопку «потенциальных» целей (или менее четырех, если ячейка находилась на краю/углу). Ячейки добавляются только в том случае, если они еще не были посещены (нет смысла повторно посещать ячейку, если мы уже известно, что это Попадание или Мисс ). В режиме Target компьютер выталкивает следующую потенциальную цель из стека, стреляет залпом по этому местоположению, воздействует на него (либо добавляя новые потенциальные цели в стек, либо выталкивая следующую целевую локацию из стека), пока либо все корабли не будут потоплены, либо не останется больше потенциальных целей в стеке, после чего он возвращается к Режим охоты и снова начинает беспорядочную стрельбу в поисках другого корабля. |
Несмотря на то, что этот алгоритм далек от элегантности, он дает значительно лучшие результаты, чем случайное срабатывание. Однако он далеко не эффективен, так как не имеет представления о том, что представляет собой корабль, и должен вслепую обходить все окружающие края каждого пикселя попадания (за исключением последнего пикселя попадания), удостоверяясь, что нет соприкасаются другие корабли.
Прохождение
Ниже приведен пример игры с использованием этой стратегии. Красный квадрат показывает целевое местоположение для следующего выбранного залпа.
Изначально алгоритм запускается в режиме Охота , производя случайные выстрелы. На третьем ходу он во что-то врезается и переходит в режим Target . Четыре стороны света (мы будем использовать N , S , E и Вт для описания направления), все они добавляются в стек «потенциальных» местоположений, поскольку они соприкасаются с известным местоположением корабля. Прохождение N для поворота № 4 привело к еще одному успешному попаданию, поэтому точки N , E и W этого новое местоположение добавляется в «потенциальный» целевой стек ( S не добавляется — это местоположение уже было посещено!).
| |||
Ход № 5 ( S первого попадания) также является попаданием, поэтому окружающие еще не посещенные квадраты добавляются в конец стека. Поворот № 6 и ход № 7 пропущены.
| |||
Ход №9 и ход №10 показывают, как компьютер проверяет и удаляет квадраты по обе стороны от мишени, а ход №12 видит обнаружение пикселя сбоку. Здесь вы можете увидеть, почему этот тупой алгоритм необходимо выполнить этот тест; если бы он просто искал прямые линии, он бы прекратил искать вниз после промаха на повороте № 11, а затем продолжил бы вверх еще на одну клетку вверх, чтобы опуститься, что, по его мнению, было бы авианосец длиной пять единиц.
| |||
Сейчас мы глубоко погрузились в потопление этой группы кораблей.
| |||
Но, чтобы быть уверенным, нам нужно посетить каждый трогательный член за гранью известного хита.
| |||
Исследование Edge продолжается, в результате чего на 21-м ходу обнаружена новая находка.
| |||
На 28-м ходу последняя «потенциальная» цель удаляется из стека, что означает промах. Теперь алгоритм вернется в режим Hunt и продолжит случайный поиск.
| |||
Пока не повезло…
| |||
Успех на 36 ходу! Возврат в режим Target .
| |||
Крейсер был потоплен на 40-м ходу, но тупой алгоритм этого не знает, и ему нужно вслепую продолжать обход края… просто чтобы быть уверенным.
| |||
Некоторые ребра уже были посещены на этом этапе, поэтому поиск выполняется быстрее.
| |||
Промах на 45-м ходу указывает на окончание режима Цель , и мы вернулись к случайному режиму Охота .
| |||
Мы снова попали на 49-м ходу.
| |||
Группировка последних двух кораблей такова, что поиск последних нескольких квадратов происходит быстро (он находится в углу, так что меньше добавлять в стопку, и они лежат параллельно, поэтому многие из них имеют одни и те же границы). Ведется подсчет количества попаданий в пикселя, и так далее 53-го хода, когда последний залп доводит счет до 17, алгоритм сразу завершается и ему не нужно ходить по краям еще на «потенциальном ‘ куча. |
Результаты
Ниже приведен график результатов использования этого базового алгоритма на 100 миллионах случайно сгенерированных сеток.
Красная линия показывает результаты этого алгоритма, а синяя линия для справки показывает результаты чисто случайного угадывания. Есть очевидное улучшение.
Четность
Мы можем немного улучшить Поиск часть алгоритма, используя четность.
Поскольку минимальная длина корабля составляет две единицы, нам не нужно случайным образом искать каждую локацию на игровом поле. Даже самый короткий корабль должен находиться между двумя соседними квадратами. Представьте доску в виде шахматной доски, как сетка слева. Независимо от того, как эсминец из двух единиц расположен на сетке, он всегда будет покрывать одну белую и одну синюю сетку. Математический термин для описания этого: Четность . Это просто причудливое слово, описывающее, будет ли квадрат содержать нечетный или четный номер, если он пронумерован последовательно от 1 до 100 Синие квадраты на сетке — это четная четность , а белые квадраты нечетная четность . |
Мы можем указать нашему Алгоритму поиска стрелять только случайным образом в неизвестные места с четностью. Даже если мы будем стрелять только по синим локациям, мы по крайней мере поразим каждый корабль — это невозможно. поставить любой корабль так, чтобы он не касался хотя бы одного синего квадрата. Как только цель поражена и Режим цели активирован, ограничение «четности» снимается, позволяя исследовать все потенциальные цели. Если алгоритм возвращается в режим Hunt , фильтр четности снова включается. (Более сообразительные читатели уже поняли, что после того, как мы потопили двухблочный эсминец, мы можем изменить ограничение четности на больший интервал, и это идеальное продолжение расширенной реализации, описанной далее в этой статье, продолжайте читать…) |
Результаты
Ниже приведен график результатов с использованием модифицированного алгоритма четности.
Зеленая линия показывает результаты алгоритма контроля четности. Алгоритм четности дает улучшение во всем диапазоне, но приращение невелико. Самая большая трата времени на выстрелы — это ненужное хождение по краям мишеней. Использование фильтра четности в режиме Hunt уменьшило количество выстрелов, но как только алгоритм попал в Target , он так же неэффективен, как и был. Чтобы внести дальнейшие улучшения в стратегию, именно на этой области нам нужно сосредоточить свое внимание.
Ниже приведен график кумулятивных вероятностей завершения игры за n ходов или меньше, и вы можете увидеть улучшение обеих этих основных стратегий по сравнению с чистым случайным угадыванием.
Полные правила игры
Чтобы получить более эффективный алгоритм решения игры, нам нужно лучше определять, когда корабль был потоплен. К счастью, в этом нам помогают официальные правила игры. До сих пор мы использовали только два состояния для обратной связи по каждому снимку: ПОПАДАНИЕ и ПРОМАХ .
Официальные правила игры также гласят, что вы должны сообщить своему противнику, если он успешно ПОТОПИЛ какой-либо корабль, поэтому это сообщение в третьем стиле Вы потопили мой авианосец передает гораздо больше информации, чем просто поразил . Он сообщает вам длину корабля, в который вы только что попали, он сообщает вам, что вы попали во все пиксели этого корабля, и потенциально может дать вам новый минимальный размер корабля, который вы ищете. (например, если вы потопили все корабли, кроме авианосца, то вы знаете, что этот оставшийся корабль имеет длину пять единиц, и вы можете скорректировать свой случайный поиск в соответствии с пропуском соответствующего количества интервалов в охота режим. На диаграмме слева объекты SUNK отображаются коричневым цветом с белыми крестами. |
Функции плотности вероятности
Теперь, когда нам сообщат, когда корабль потоплен, мы знаем, какие корабли (и, что еще важнее, какова их длина) все еще активны. Эти факты очень важны для определения того, какое место мы будем искать дальше.
Наш новый алгоритм рассчитает наиболее вероятное место для следующего огня на основе суперпозиции всех возможных местоположений, в которых могут находиться вражеские корабли.
В начале каждого нового хода, исходя из кораблей, оставшихся в бою, хорошо проработать все возможные места, где может поместиться каждый корабль (по горизонтали или по вертикали).
Первоначально это будет практически любое место, но по мере того, как будет производиться все больше и больше выстрелов, некоторые местоположения станут менее вероятными, а некоторые — невозможными. Каждый раз, когда корабль может быть размещен над ячейкой сетки, увеличивайте счетчик для этой ячейки. Результатом будет суперпозиция вероятностей
«Как только вы исключите невозможное, все, что останется, каким бы невероятным оно ни было, должно быть правдой». Артур Конан Дойл — Шерлок Холмс |
Примеры
В следующих простых примерах мы просто рассматриваем вероятности местонахождения авианосца (длиной 5 единиц). Начнем с верхнего левого угла и попробуем расположить его горизонтально. Если он подходит, мы увеличиваем значение для каждой ячейки, которую он откладывает как «возможное местоположение», в котором может быть корабль. Затем мы пытаемся сдвинуть его на один квадрат и повторять… и так далее, пока не дойдем до конца ряда. Затем мы двигаемся вниз по строке и повторяем. Далее повторяем упражнение с кораблем, ориентированным вертикально.
Иногда корабль помещается в пространство, иногда нет. По мере того, как игровое поле становится все более и более перегруженным (попаданиями, промахами и потопленными кораблями), количество возможных позиций, на которых могут разместиться корабли, уменьшается. Однако это не абсолютное число, которое мы ищем. Мы просто ищем наиболее вероятное местоположение для корабля, который будет расположен на основе информации, которую мы уже знаем.
В то время как приведенные ниже примеры показывают только распределения вероятностей того, где может быть спрятан авианосец, для полной реализации мы перебираем все еще не потопленные корабли, складывая их вместе, чтобы создать суперпозицию. Алгоритм выбирает место с наибольшим количеством возможных кораблей, которые могут быть расположены через тот квадрат.
Во всех этих примерах для обозначения вероятности используется штриховка. Темные цвета обозначают высокую вероятность, а светлые — низкую вероятность. В этом примере был произведен один выстрел, и мы ищем авианосец. Менее вероятно, что он будет Южным (потому что он не мог бы вписаться вертикально, и поэтому единственный способ, которым он мог бы перекрыть одну из ячеек на юге, — это лежать горизонтально). Точно так же вряд ли это будет Запад. Вероятность также немного падает к краям и углам, так как меньше способов расположить корабль, который покрывает эти места. | |
При двух промахах в сетке меньше шансов оказаться в промежутке между двумя промахами. Также очень маловероятно, что он будет в верхнем ряду слева, так как здесь его можно разместить только вертикально. Белые квадраты представляют нулевую вероятность, и по определению любой квадрат, который является промахом , имеет нулевую вероятность. | |
В этой конфигурации мы видим белый квадрат слева от верхнего промаха. это невозможно для авианосца пройти через этот квадрат. | |
Пример распределения с семью промахами в сетке. | |
Вымышленная раскладка доски с большим количеством промахов. Во многих местах невозможно разместить перевозчика. Чем темнее штриховка, тем больше возможных способов использования этого квадрата носителем. | |
Еще один пример с большим количеством промахов. |
Этот алгоритм по-прежнему имеет режим поиска и режим цель , хотя оба работают по существу одинаково. В режиме охоты есть только три состояния, о которых нужно беспокоиться: непосещенный космос , промахи и затонувшие корабли . Промахи и потопленные корабли обрабатываются одинаково (обструкции что потенциальные корабли нужно было расставить вокруг). В режиме цели (где есть хотя бы один пораженный корабль, который не был потоплен) корабли по определению могут пройти через это место, поэтому квадраты попадания считаются равными 9.0202 непосещенное пространство квадрата для принятия решения о том, «может ли» корабль пройти через этот квадрат, а затем тяжелое взвешивание баллов присваивается возможным местам, которые пройти через точку, о которой мы уже знаем, что она содержит попадание.
Результаты
Вот результаты нового алгоритма. Как видите, результаты значительно лучше. Ни одна игра не занимала больше 73 ходов, и примерно одна из каждого миллиона игр, сыгранных со случайными досками, была идеальной игрой (завершено за 17 ходов, каждый с попаданием и без промахов).
Средняя длина игры по этому алгоритму в 42 хода ср. 97 ходов при чисто случайной схеме стрельбы и 64 хода при алгоритме поиска/цели с фильтрацией по четности.
Вот результаты 100 миллионов случайных игр с использованием каждого алгоритма, построенные в одном масштабе.
Наконец, вот таблица их совокупных вероятностей.
Прохождение
Вот пример алгоритма обхода случайной доски. Он решает эту головоломку за 34 хода.
Изображение слева показывает распределение вероятностей, а красная сетка показывает выбранное следующее место для стрельбы. Изображение справа показывает текущее состояние сетки.
При отсутствии информации о доске алгоритм выбирает один из центральных квадратов. Из-за краевого эффекта, описанного ранее, середина доски получает больше очков, чем край или угол. К сожалению, первый выстрел заканчивается на 9.0151 мисс | ||
Зная о первом промахе, алгоритм пересчитывает плотность вероятности и выбирает текущую наиболее результативную продажу (или одну из них, если их несколько с одинаковым значением). На этот раз это попадание | ||
Все четыре окружающих квадрата имеют одинаковую вероятность (это квадрат, близкий к центру, поэтому все еще способный принять часть авианосца во всех направлениях), и выбрана ячейка справа. Еще один хит | ||
Теперь, когда есть два попадания подряд, цели с наибольшей вероятностью находятся по обе стороны от этих двух. Выстрел справа — промах | ||
Интересно, что на данный момент вероятность того, что два попадания могут быть с двух параллельных кораблей вверх/вниз, так же высока, как и с борта на бок, и в этой реализации алгоритма, если имеется более одной локации с одним и тем же вероятность, выбирается следующее числовое значение (начиная с верхнего левого). Это тоже мисс | ||
Еще один промах . (Обратите внимание, что на этот раз алгоритм тестировал верхнюю сторону, а ранее нижнюю, получая знания из-за пропуска четности между ней и промахом два слева. | ||
Теперь мы почти уверены, что нам нужно двигаться влево (поскольку мы знаем, что все корабли все еще в игре), и вероятность того, что дело в том, что корабли выбиты/вверх/вниз, очень мала. | ||
Успех, мы потопили наш первый корабль. Поскольку мы получаем указание на то, что судно затонуло, алгоритм не сильно взвешивает движение дальше влево. Он пойдет туда, если потребуется, но исходя из вероятности того, что другой корабль находится в этом пространстве, а не как продолжение текущего корабля. | ||
Охотничий выстрел, основанный на вероятности присутствия кораблей в этом месте | ||
Больше охотничьих выстрелов. | ||
И снова. | ||
Еще один попал в . | ||
Поскольку длинные корабли все еще в игре, немного более вероятно, что корабли будут двигаться вверх/вниз из этого места (и немного более вероятно вниз, чем вверх, так как авианосец не поместится вверх). | ||
Мисс | ||
Еще один корабль потоплен (и таким образом удален из облака вероятности). | ||
Снова на охоту. | ||
Еще один попал в . | ||
Опять же, поскольку большой корабль все еще находится в игре, немного более вероятно, что его корабли будут двигаться вверх/вниз. | ||
Мисс . | ||
Мисс . Но снова обратите внимание на пропущенную четность по вертикали, так как он пытается использовать вертикальное пространство два вверх, а не только одно вверх. | ||
Нажмите . | ||
Еще один корабль потоплен. | ||
Возврат в режим охоты. | ||
Проверка больших пробелов. | ||
Нажмите . | ||
Сначала проверьте в сторону, так как авианосец все еще там, и отсюда он может двигаться только влево-вправо. | ||
Успех в уменьшении эсминца. Это удача для нас. Эсминец имеет длину 2, а с этим потопленным он оставляет только авианосец, который большой, и скрыть его труднее. С удалением эсминца там облако вероятности значительно изменится. Осталось не так много мест, где может стоять авианосец. | ||
Большие области доски теперь белые. Алоритм начинает поиск, изначально, в наибольшей области возможного пространства (наибольшая вероятность, так как есть много путей, что носитель может лежать в этой области). | ||
Нажмите ! Отсюда всего несколько ходов до победы. | ||
Игра окончена! |
Спасибо за внимание.
Полный список всех статей можно найти здесь. Нажмите здесь, чтобы получать уведомления о новых статьях по электронной почте.
Как каждый раз выигрывать в классической настольной игре.
Universal Studios надеется заработать миллионы долларов в эти выходные, выпустив свой новый боевик Морской бой , и ожидается, что продажи классической настольной игры также получат хороший импульс. Как читатели могут помнить, игра проста: каждый игрок расставляет пять кораблей — авианосец, линкор, крейсер, подводную лодку и эсминец — на сетке квадратов десять на десять и пытается «потопить» корабли противника, используя называя квадраты, где, по его мнению, прячутся корабли его врага. Большинство игроков подходят к игре, по сути, как к игре наудачу, нацеливаясь на квадраты случайным образом и надеясь на «попадание». Но есть ли лучшая стратегия? Если друг вызовет вас на эти выходные в ностальгическую игру «Морской бой», есть ли способ повысить шансы на победу вашего флота?
Есть. Ник Берри, консультант по технологиям и президент DataGenetics, компании по интеллектуальному анализу данных, базирующейся в Сиэтле, тщательно изложил несколько стратегий, которые повысят ваши шансы потопить корабли противника до того, как он потопит ваш. Эти методы проверены в бою: Берри создал компьютерные алгоритмы для применения своих стратегий в сотнях миллионов симуляций, чтобы он мог рассчитать их соответствующие показатели успеха.
Берри начал с оценки стратегии, интуитивно понятной большинству игроков, которую он называет Охотой/Целью. Компьютер начинает в режиме охоты, то есть стреляет наугад, пока не наткнется на корабль. При попадании фокусирует огонь на соседние квадраты. Как только корабль потоплен, компьютер возвращается в режим охоты до тех пор, пока не поразит другую цель. В симуляциях Берри требовалось в среднем 66 ходов, чтобы потопить линкор противника. Это полезный подход, но в нем все еще задействовано много случайных предположений.
Чтобы усовершенствовать метод «Охота/цель», Берри разработал тактику, сочетающую режим «Охота» с концепцией математической четности. Подумайте об этом так: представьте, что доска имеет цветовую кодировку, похожую на шахматную доску, с белыми и синими квадратами. Даже самый маленький корабль — эсминец — занимает две клетки и, следовательно, должен опираться как на белую, так и на синюю клетку. Стреляйте только по синим квадратам, и вы в конечном итоге попадете в каждый корабль хотя бы один раз. Этот метод эффективно позволяет вдвое уменьшить количество целей на доске, когда вы находитесь в режиме охоты. (Когда вы регистрируете попадание, вы переходите в режим «Мишень», и оба синих и белых квадрата находятся в игре до тех пор, пока вы не потопите корабль.) Эта стратегия дает немного лучшее среднее значение, чем обычный режим «Охота/цель»: в среднем 65 ходов, чтобы потопить корабль вашего противника. флот.
В наиболее эффективном подходе Берри к линкору используется функция плотности вероятности, которая учитывает различные способы размещения кораблей по всем направлениям. Здесь алгоритм Берри рассматривает все возможные конфигурации пяти кораблей и вычисляет вероятность того, что любая заданная клетка занята кораблем. Очевидно, что в начале игры корабли могут быть где угодно — нет большой разницы в вероятности для каждого квадрата. Но по ходу игры вы убираете с доски все больше и больше клеток, а также сокращаете количество возможных конфигураций — авианосец из пяти клеток не может прятаться в четырехклеточном участке моря. Игрок-человек не может реалистично рассчитать вероятности для каждого квадрата так же точно, как модель Берри, но здесь он может помнить о лежащей в основе стратегии. Принимая во внимание длину каждого корабля, оставшегося на игровом поле, и стремясь к той части игрового поля, которая с наибольшей вероятностью содержит эти корабли, вы значительно повышаете свой показатель попаданий. Когда компьютер Берри использовал этот подход, он сократил среднее количество ходов за игру до 44 ходов.
Конечно, Морской бой остается азартной игрой. Когда я разговаривал с Берри, он указал, что не существует подхода, который позволил бы человеку или машине побеждать каждый раз. Как свидетельство случайного характера игры (и, конечно же, какой-то человеческой ошибки), моя небольшая выборка из трех игр с использованием «Охота/цель», «Охота/цель с четностью» и попытка использования плотности вероятности дали игры продолжительностью 38, 41 и 55.