Skip to content

dimbo4ka/battleship

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

Консольный морской бой

Правила

Правила идентичны классическому морскому бою, за исключением того, что размер поля и количество кораблей может быть произвольным (размеры кораблей соответствуют размерам в классической игре)

Для игры нужны два игрока: master и slave. Master дополнительно устанавливает параметры игры: размер поля и количество кораблей, и сообщает их slave. Далее, оба игрока расставляют свои корабли согласно этим параметрам, и, после начала игры, поочерёдно стреляют друг в друга, по правилам классического морского боя

Команды

В приведённой далее таблице указаны команды, их параметры и варианты ответа. Ответ всегда заканчивается символом конца строки. Все команды и ответы печатаются в нижнем регистре.

Команда Ответ Описание
ping pong тестовая команда
exit ok программа завершается
create [master,slave] ok создать игру в режиме master или slave соответственно
start ok старт игры
stop ok остановка текущей партии
set width N ok/failed установить ширину поля (N положительное, влезает в uint64_t)
get width N получить длину поля (N положительное, влезает в uint64_t)
set height N ok/failed установить высоту поля (N положительное, влезает в uint64_t)
get height N получить высоту поля (N положительное, влезает в uint64_t)
set count [1,2,3,4] N ok/failed установить количество кораблей определенного типа (N положительное, влезает в uint64_t)
get count [1,2,3,4] N получить количество кораблей определенного типа (N положительное, влезает в uint64_t)
set strategy [ordered,custom] ok выбрать стратегию для игры
shot X Y miss/hit/kill выстрел по вашим короаблям в координатах (X,Y) (X,Y положительные, влезают в uint64_t)
shot X Y вернуть координаты вашего следующего выстрела, в ответе два числа через пробел (X,Y положительные, влезают в uint64_t)
set result [miss,hit,kill] ok установить результат последнего выстрела программы
finished yes/no окончена ли текущая партия
win yes/no являетесь ли вы победителем
lose yes/no являетесь ли вы проигравшим
dump PATH ok сохранить размер поля и вашу текущую расстановку кораблей в файл
load PATH ok загрузить размер поля и расстановку кораблей из файла

Формат файла для команды dump\load

Файл в текстовом формате, где первая строка включает размер поля (ширина, высота) через пробел. Далее на каждой строке описывается размер корабля, направленность (горизонтальны и вертикальный) и координаты левого верхнего угла (по ширине, по высоте) через пробел

Пример

10 10
1 v 0 0
2 h 3 4
4 h 1 8

Стратегии

  • Ordered - алгоритм, стреляет последовательно построчно начиная с точки (0,0)
  • Custom - алгоритм, стреляющий последовательно по диагоналям, начиная с (width - 1,0)

Требования

  • При генерации игры размер карты и количество кораблей должны быть непротиворечивы (размер поля не может быть нулевым, все корабли можно разместить на поле)
  • Координаты (0,0) - левый верхний угол
  • В игре всегда один игрок master, другой - slave
  • Игра не может начаться пока не будут заданы размеры поля и количество кораблей (количество кораблей хотя бы одного типа должно быть больше 0)
  • После старта игры размеры поля и количество кораблей не может быть изменено
  • Тип стратегии может быть изменен в процессе игры
  • Ответы команд win\finished\lose должны быть не противоречивы (например нельзя выиграть или проиграть, если игра не закончена)
  • После выстрела программа должна узнать результат строго до своего следующего выстрела (после каждой команды get shot следует передавать команду set result)
  • Команда load может быть вызвана до старта игры, тогда она переопределяет правила сгенерированные create (может быть использована для тестов)

Реализация

Коснольное приложение-бот должно реализовать обе роли - master и slave

Прием команд и ответ осуществляется через стандартные потоки ввода\вывода.

При каждом запуске игры приложение реализует стратегию только одного игрока (либо master, либо slave). Для полноценной игры требуется либо второе приложение, либо человек.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published