Создан заказ №1744266
13 февраля 2017
Морской бой на С++
Как заказчик описал требования к работе:
Нужно получить оконное приложение, т.е. расписать через оконную процедую, сделать меню( игра и автор). Игрок- человек играет с компьтером, где компьютер рандомно бьет по полю. Поле стандартное для такой игры 10х10 (в строчку буквы, в столбец цифры). Корабли расставлять в ручном и автоматическом режи
мах. Корабли: 4 корабля по 1 клетке , 3 корабля по 2 клетки , 2 корабля по 3 клетки , 1 корабль в 4 клетки. делать в Visual studio 2012 - 201
подробнее
Фрагмент выполненной работы:
Введение
«Морской бой» - игра для двух участников, в которой игроки по очереди называют координаты на неизвестной им карте соперника. Если у соперника по этим координатам имеется корабль (координаты заняты), то корабль или его часть «топится», а попавший получает право сделать ещё один ход. Цель игрока - первым поразить все корабли противника.
Игра была «придумана» в 1931 году Милтоном Брэдли (Milton Bradley). (работа была выполнена специалистами Автор 24) Именно тогда, его компанией была выпущена «настольная игра» как коммерческий продукт. Идея игры пришла во время первой мировой войны, в которой было много морских сражений. Есть данные, что игра существовала в «бумажном» варианте существенно раньше, еще до Первой мировой войны, и истинный автор неизвестен.
Игровое поле - обычно квадрат 10×10 каждого игрока, на котором размещается флот кораблей. Горизонтали обычно нумеруются сверху вниз, а вертикали помечаются буквами слева направо. При этом используются буквы русского алфавита от «а» до «к» (буквы «ё» и «й» обычно пропускаются) либо от «а» до «и» (с использованием буквы «ё»), либо буквы латинского алфавита от «a» до «j».
На игровом поле размещаются:
-1 корабль — ряд из 4 клеток («четырёхпалубные»);
-2 корабля — ряд из 3 клеток («трёхпалубные»);
-3 корабля — ряд из 2 клеток («двухпалубные»);
-4 корабля — 1 клетка («однопалубные»).
При размещении корабли не могут касаться друг друга сторонами и углами. Встречаются, однако, варианты, когда касание углами не запрещается. Встречаются также варианты игры, когда корабли могут размещаться буквой «Г» («трех-» и «четырехпалубные»), квадратом или зигзагом («четырехпалубные»). Существуют варианты игры с другим набором кораблей и/или другой формой поля.
Рядом со «своим» полем чертится «чужое» такого же размера, только пустое. Это участок моря, где плавают чужие корабли противника.
При попадании в корабль противника - на чужом поле ставится крестик, при холостом выстреле - точка. Попавший стреляет ещё раз.
Если выстрел пришёлся в клетку, не занятую ни одним кораблём противника, то следует ответ «Мимо!» и стрелявший игрок ставит на чужом квадрате в этом месте точку. Право хода переходит к сопернику.
Если выстрел пришёлся в клетку, где находится многопалубный корабль (размером больше чем 1 клетка), то следует ответ «Ранил!» или «Попал!». Стрелявший игрок ставит на чужом поле в эту клетку крестик, а его противник ставит крестик на своём поле также в эту клетку. Стрелявший игрок получает право на ещё один выстрел.
Если выстрел пришёлся в клетку, где находится однотрубный корабль или последнюю непоражённую клетку многопалубного корабля, то следует ответ «Убил!» или «Потопил!». Оба игрока отмечают потопленный корабль на листе. Стрелявший игрок получает право на ещё один выстрел.
Победителем считается тот, кто первым потопит все 10 кораблей противника.
Одна из выигрышных стратегий описана Я. И. Перельманом. Игрока, использующего эту выигрышную стратегию, назовём Виктором; другого игрока (не использующего выигрышную стратегию Я. И. Перельмана) назовём Петром.
Вокруг каждого корабля можно нарисовать область (толщиной в одну клетку), в которой не может быть других кораблей - эту область назовём ореолом данного корабля. Выигрышная стратегия Перельмана состоит в том, что Виктор свои многоклеточные корабли компактно располагает в одном из углов поля, «вжимая» в этот угол так, как только возможно. Одноклеточные корабли Виктор равномерно распределяет по оставшейся незанятой многоклеточными кораблями части поля. Скорее всего, Пётр относительно быстро обнаружит, что много кораблей Виктора компактно сосредоточенно в этом углу, и быстро уничтожит все корабли Виктора, кроме одноклеточных. После этого, чтобы найти одноклеточные корабли Виктора, Петру надо будет исследовать своими ходами-выстрелами очень большую площадь, поскольку ореолы многоклеточных кораблей Виктора перекрываются, плюс к тому львиная доля площади ореолов кораблей, прижатых к кромке поля, оказывается за пределами поля. Между тем, благодаря тому, что у Петра перекрывается меньше площади ореолов, чем у Виктора, Виктору нужно исследовать меньшую площадь поля Петра, чем Петру площадь поля Виктора.
Существует много компьютерных программ, имитирующих игру. Компьютерные реализации могут отличаться наличием звуков, автоматическим обозначением полей, где не может быть корабля, и т. п.
Примеры реализаций:
-KBattleship (Naval Battle) - из набора игр KDE Games;
-Морской бой, разработанный по заказу Министерства обороны РФ;
-Battleship - разновидность морского боя для LinuxПосмотреть предложения по расчету стоимости
Заказчик
заплатил
заплатил
500 ₽
Заказчик не использовал рассрочку
Гарантия сервиса
Автор24
Автор24
20 дней
Заказчик воспользовался гарантией для внесения правок на основе комментариев преподавателя
16 февраля 2017
Заказ завершен, заказчик получил финальный файл с работой
5
Морской бой на С++.docx
2017-02-19 19:09
Последний отзыв студента о бирже Автор24
Общая оценка
5
Положительно
Замечательный автор! Все сделал как надо. Оперативно исправляет недочеты, С большой ответственностью берется за работу. Делает все быстро! Рекомендую!