Oreseeker,
Морской бой здесь же был обговорён, я же сказал что алгоритм есть:
Морской бой. The Best! version.
Морской бой в рамках формата нашего форума представляет миниигру, в которой может поучаствовать каждый лагерь. Формат знаком наверное каждому, кто скучал в учебных заведениях до появления минигаджетов, аля телефон или планшет. Впрочем и последние гаджеты частенько радуют присутствием игр, если не в точности копирующих, то по крайней мере основанных на этой старинной платформе. Итак, поговорим о правилах.
Правила:
Игровое поле — квадрат 10?10 каждого игрока, на котором размещается флот кораблей. Поле для игры уже подготовлено в программе Exсel. Его можно скачать ниже, в прикреплении. Поле разбито на две половины. В левой размещаются ваши корабли. В правой делается отметка о подбитом вражеском судне.
На поле обязательно размещается флот из следующих судов:
1 корабль — ряд из 4 клеток («флагман», или «четырёхпалубный»)
2 корабля — ряд из 3 клеток («трёхпалубные»)
3 корабля — ряд из 2 клеток («двухпалубные»)
4 корабля — 1 клетка («однопалубные»)
При размещении корабли не должны касаться друг друга углами или бортами. После размещения кораблей лагерь должен переименовать файл, присвоив ему уникальное имя с названием вашего лагеря. После чего копия готового файла и ник командующего флотом (выдвинутого лагерем на эту должность) высылается одному из богов, или иному, заранее избранному, участнику форума, который будет наблюдать за честностью хода сражения. После, броском кубика одному из лагерей отдается первый ход.
После, в ЛС или чате, начинается сражение. Участники поочередно называют идентификатор ячейки, состоящий из буквы и цифры, в которую направлен выстрел. При попадании в корабль противника — на чужом поле ставится крестик. Попавший стреляет ещё раз. В случае промаха ход переходит флоту противника.
Если выстрел пришёлся в клетку, не занятую ни одним кораблём противника, то следует ответ «Мимо!» и стрелявший игрок ставит на чужом квадрате в этом месте точку. Право хода переходит к сопернику.
Если выстрел пришёлся в клетку, где находится многопалубный корабль (размером больше чем 1 клетка), то следует ответ «Ранил!» или «Попал!», кроме одного случая (см. пункт 3). Стрелявший игрок ставит на чужом поле в эту клетку крестик, а его противник ставит крестик на своём поле также в эту клетку. Стрелявший игрок получает право на ещё один выстрел.
Если выстрел пришёлся в клетку, где находится однотрубный корабль или последнюю непоражённую клетку многопалубного корабля, то следует ответ «Потоплен!» или «Убит!». Оба игрока отмечают потопленный корабль на листе. Стрелявший игрок получает право на ещё один выстрел.
Побеждает тот, кто первым потопит все корабли противника. За исключением случаев, когда одна из сторон добровольно завершает бой досрочно. Кроме того бой может завершиться, если наблюдатель заметит какие либо нарушения в ходе игры.
Отдельным пунктом каждый лагерь обязан обсудить таймаут хода, по истечении которого пропустившей ход стороне засчитывается техническое поражение.
Нарушения:
У игрока неправильно начерчено своё поле:
Количество кораблей не соответствует правилам;
Корабли касаются друг друга;
Неправильные размеры поля;
Неверная система координат.
Игрок производил на своём игровом поле изменения, не предусмотренные правилами игры, например, дорисовал недостающий корабль или переставил его в другое место;
Игрок подглядел расположение кораблей противника (не без помощи наблюдателя);
Игрок пропустил свой ход.
Типы сражений:
1. Классический морской бой: лагеря покупают стандартный флот за 2.000 золотых. После чего, обговорив дату встречи, и выбрав наблюдателя, оба командующих флотами могут вступить в бой по классическим правилам. В случае победы одной из сторон, затраты на флот возвращаются лагерю в удвоенном количестве. Проигравшая сторона теряет деньги безвозвратно.
2. Оборона порта: по умолчанию каждый лагерь имеет оборонительный бесплатный флот, который можно использовать лишь в этом типе сражения. Лагерь-агрессор покупает стандартный флот за 3.000 золотых, и выбирает лагерь, на который хочет напасть. В течении двух суток обороняющийся лагерь обязан решить, принимать бой или нет. После чего, обговорив дату встречи, и выбрав наблюдателя, оба командующих флотами могут вступить в бой по классическим правилам. В случае победы нападающей стороны, сумма затрат на флот возвращается, с дополнительной добычей в виде 10% от казны проигравшего лагеря. В случае проигрыша нападающих, сумма их затрат на флот перечисляется в казну оборонявшихся. Проигравшая сторона теряет деньги безвозвратно.
В случае, если обороняющаяся сторона не желает вступать в бой, она имеет возможность откупиться от агрессоров, потратив 1.000 золотых монет. После чего лагерь на 1 месяц получает иммунитет от нападений.
3. Исследование: режим, в котором участники лагеря имеют возможность сразиться с богами. Раз в месяц лагерь имеет возможность совершить нападение на нейтральную прибрежную территорию за 5.000 золотых монет. Каждый месяц боги, броском кубика, определяют добычу, которую получит лагерь, в случае победы. Для честности, данные о стоимости территории (от 1.000 до 10.000), так же передаются ранее выбранному наблюдателю. Перед нападением лагерь должен назвать номер территории (на данный момент их 10), после чего следует бой по классическим правилам. В случае победы лагерь получает назад затраты на флот, плюс добычу с исследованной территории. В противном случае лагерь теряет деньги безвозвратно, увеличивая шанс принять на себя очередной гнев богов.