Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
zapiska_programm.docx
Скачиваний:
9
Добавлен:
20.09.2019
Размер:
4.1 Mб
Скачать
  1. Функциональная схема работы программы

При создании алгоритма игры "Морской бой" на начальном этапе была разработана его блок-схема. В ней описана последовательность работы алгоритма игры (рис. 3):

Рис. 3. Представление алгоритма работы программы

При запуске приложения «Морской бой» у игрока есть возможность выбора вариантов расстановки кораблей: авто или ручная расстановка. Если выбрана ручная расстановка, то игра не начинается до тех пор пока не будут расставлены все корабли. Далее рисуется поле боя компьютера и у игрока появляется возможность произвести выстрел по вражескому полю боя.

Если игрок попал по кораблю противника, то у него имеется возможность осуществить еще один выстрел. Иначе происходит проверка на наличие не потопленных кораблей у компьютера. Если не потопленные корабли отсутствуют, то выводится сообщение о победе и затем происходит выход из игры, иначе, ход переходит к компьютеру, который производит выстрел по полю боя игрока.

Если компьютерный интеллект попал по кораблю противника, то у него имеется возможность осуществить еще один выстрел. Иначе происходит проверка на наличие не потопленных кораблей у игрока. Если не потопленные корабли отсутствуют, то выводится сообщение о проигрыше. Затем происходит выход из игры.

  1. Организация данных и проектирование интерфейсов обмена данными в программной системе

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

Выводимые данные это то, что сообщается пользователю. Входные данные это то, что пользователь сообщает программе.

Выводимые данные в программе представлены в виде графического отображения окна игры (рис. 4):

Рис. 4. Окно программы

Входные данные представлены в виде программного кода, который необходимо выполнить при определенных действиях пользователя, а именно:

  1. нажатие клавиш мыши;

  2. работа пользователя с кнопками на форме.

  1. Анализ существующих методов и алгоритмов Обстрел одного одноклеточного корабля

На поле из п клеток расположен один одноклеточный корабль. Определим веро­ятность попадания в корабль k ым выст­релом, то есть ею уничтожение.

В качестве пространства элементарных исходов выбора игрока В рассмотрим мно­жество стратегий обстрела игровою поля, каждая стратегия состоит из п выстрелов, где аi номер выбранной клетки, то есть рассмотрим множество всех выборок из п по n клеток. Очевидно, что это про­странство содержит элементов и все эти стратегии равновозможные. Ко­личество стратегий с благоприятным ис­ходом, то есть количество выборок, со­держащих на k-ом месте искомую клетку . Вероятность попадания:

Определим вероятность уничтожения корабля за k выстрелов. Это событие состоит в том, что корабль может быть уничтожен либо первым выстрелом либо вторым и т. д., то есть благоприятная выборка из k клеток содержит исходную клетку с кораблем.

Количество благоприятных стратегий определится как число неупорядоченных выборок из множества n-1 клеток по k-1, умноженное на число перестановок в самой выборке и число перестановок клеток оставшихся за выборкой . Вероятность попадания в одноклеточный корабль за k выстрелов:

Обстрел одного двухклеточного корабля

Усложним задачу. На поле из n кле­ток расположен двухклеточный корабль. Определим вероятность первого попада­ния в корабль (в одну из его клеток) выс­трелом с номером k. Полное число все­возможных стратегий, равно . А число бла­гоприятных стратегий определяется как сумма благоприятных стратегий попада­ния в одну клетку и попадания во вторую клетку, то есть . Вероятность попадания к-ым выстрелом равна Очевидно, что при обстреле m-клеточного корабля или m одноклеточных кораблей, вероятность попадания равна

Определение вероятности попадания в двухклеточный корабль за k выстрелов:

Заметим, что аналогичным образом можно определить вероятность попадания за k выстрелов в корабль из т клеток.

Задача попадания за k выстрелов в многоклеточный корабль хотя бы один раз является задачей поиска корабля. Очевид­но, что если учесть геометрию корабля, то можно предложить систему его поис­ка, при которой вероятность обнаруже­ния становится выше. Действительно, при поиске двухклеточного корабля можно рассмотреть подмножество всех стратегий, содержащих обстрел, например, клеток только с четными или с нечетными номе­рами. Поиск двухклеточного корабля све­дется к поиску одноклеточного корабля на этом подмножестве. Полагая п четным, для оптимальной вероятности попадания за k выстрелов получим:

Найденное значение вероятности больше вероятности, полученной выше при всех

Оптимальная стратегия поиска трехклеточного и четырехклеточного корабля может быть получена аналогичным об­разом.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]