Ночной бой

В этой игре двое участников воюют между собою на военных кораблях в ночное время.

Правила

Два участника воюют между собою на военных кораблях. Каждый старается первым уничтожить корабль соперника. Игровое поле имеет форму квадрата и ограниченные размеры: нижний левый угол имеет координаты (0;0), а правый верхний (RА; RA).

Особенность боя в том, что он происходит в ночное время, то есть участники не видят друга и потому знают расположение на игровом поле своего корабля, но не знают расположение корабля соперника. После каждого выстрела происходит сообщение, что произошло по каждой оси в отдельности X и Y: перелет (сообщение «1»), недолет (сообщение «-1») или по данной оси ровно («0»). Если по обеим осям произошло ровно, то это попадание («3.1415926»).

Во время хода корабли могут стрелять несколько раз (параметры «N1» и «N2»), причем можно установить так, что один корабль за раз может осуществить три выстрела, а другой два, поэтому более слабому можно предложить корабль с тремя выстрелами.

Каждый корабль имеет несколько жизней, поэтому с первого попадания корабль не уничтожается. Более того реализована возможность разного количества жизней у кораблей, поэтому можно сделать параметры такими, что более слабый игрок имеет корабль с большим числом жизней.

После стрельбы, которые все закончились промахом или же после попадания, участник имеет возможность переместиться (плыть), изменив координаты своего корабля. Обратим внимание, что после попадания в корабль соперника дальнейшая стрельба сразу прекращается даже с учетом того, что еще не все выстрелы произведены – это сделано для того, чтобы соперник после попадания мог переместить свой корабль (а иначе легко уничтожить, всё время стреляя по одному и тому же пункту).

Во время перемещения корабля участник вводит новые координаты корабля, причем новые координаты не должны отличаться от старых по каждой оси на значение больше максимальной скорости корабля (параметра «МАХХ»), причем в программе для участника №2 есть возможность сделать максимальную скорость как 2х«МАХХ», так и оставить ее «МАХХ». Разумеется, ничто не мешает оставить корабль на прежних координатах. Если скорость по какой-то оси превысит максимальную, то по данной оси координата корабля просто не изменится. Также координата корабля не изменится, если новая координата окажется отрицательной или равной/больше значения максимальной границы поля (RA).

Лишь после того, как участник произвел выстрелы и переместил корабль, ход переходит к следующему участнику. Одной из особенностей программы заключается в том, что строго говоря нет ограничения по количеству снарядов – игра идет до тех пор, пока кто-то не потопит корабль соперника.

Если на экране после выстрела вышло «ЕГГОГ», то это означает, что произошло не только попадание в корабль соперника, но и корабль соперника потоплен, так как у него закончились «жизни».

Самый интересный вариант, когда реализован вариант кораблей разного класса: корабль №1 является линкором, а №2 – крейсером. Линкор более мощный и в результате в два раза медлительнее крейсера (линкор за один ход может переместиться на одну клетку, а крейсер – на две!), но зато у линкора больше жизней (у линкора три жизни, а у крейсера – две!), и у него больше орудий (линкор за один ход может совершить три выстрела, а крейсер – два), а также корабль линкор за счет лучшей оптики и высоты капитанской рубки первым наносит выстрелы, что тоже немаловажно.

Распределение регистров

Дополнительные настройки программы

Игровой процесс

1. Всегда и перед каждой игрой нажимаем: 9 П 3, 5 П 0, "0,ччмм" 5 П d (где «чч» - текущий час, «мм» - текущие минуты», например, «0,1805»), БП 9 0, С/П.
После этого ПМК случайно размещает два корабля на квадратном игровом поле с размерами: нижняя левая координата всегда имеет (0;0), а верхняя правая (ПА; ПА). В регистре RА – максимальная координата как по Х, так и по Y, причём на максимальной координате не могут располагаться корабли.

2. На экране: 1. Участники должны по очереди посмотреть координаты своего корабля, но не у соперника (!):

    - ИП4 - координата X участника #2 (именно у #2, а не у #1!);

    - ИП5 - координата Y участника #2;

    - ИП7 - координата X участника #1;

    - ИП8 - координата Y участника #1;

После просмотра координат нажимаем ИП d.

3. На экране: 1 - это означает, что ход за участником #1. Необходимо произвести выстрел по координатам, на котором может быть расположен корабль соперника.

4. Следует ввести выстрел: « координата выстрела по X» «координата выстрела по Y» С/П.

5. Если вышло N.1111111, то это промах, причём «N» означает, сколько ещё выстрелов осталось. Можно узнать, как произошёл выстрел:

    ИП 3 – совет по X: 1 - перелет, -1 - недолет, 0 - по этой оси ровно!

    ИП b – совет по Y: 1 - перелет, -1 - недолет, 0 - по этой оси ровно!

Если забыли, сколько выстрелов осталось, нажимаем ИП 0. После анализа выстрела перейти к пункту 4.

6. Если вышло 1.1111111-01, то это означает, что выстрелы закончились, пора начать перемещать свой корабль в пределах игрового поля и без превышения максимальной скорости. Перейти к пункту 8.

7. Если вышло 3.1415926 - произошло попадание! Можно узнать число оставшихся жизней у соперника: ИП 0. После попадания выстрелы прекращаются и пора перемещать свой корабль – перейти к пункту 8.

8. Перемещаем свой корабль, чтобы сопернику было тяжелее попасть. Вводим новые координаты корабля: «новая координата X» «новая координата Y» С/П. Обращаем внимание, что скорость перемещения корабля по любой оси не должна быть больше (по модулю, разумеется) параметра «МАХХ» - если скорость по какой-то оси превышает МАХХ, то по данной оси перемещения не происходит. При этом скорость может быть равна МАХХ. Обратим внимание, что вводим новые координаты, а не приращения к координатам.

9. На экране 2 – это означает, что ход за участником #2. Игра полностью аналогична пунктам 3-7, но теперь стреляет и перемещается участник #2.

10. Если после какого-то выстрела вышло ЕГГОГ – корабль соперника уничтожен! Сразу после этого обязательно следует два раза нажать В/0, В/0 (чтобы очистить стек подпрограмм). Если есть сомнения, кто победил, нажимаем ИП d : 1 - победил участник #1; 2 - победил #2.

11. Чтобы начать новую игру, перейти к пункту 1 – все операции этого пункта надо сделать заново!

12. Во время игры любой участник может узнать число оставшихся жизней у каждого участника:

    Число жизней у #2 – ИП 1;

    Число жизней у #1 – ИП 2;

Кроме того, если забыли чья очередь ход, нажимаем ИП Д – на экране номер участника, который ходит.