Морской бой
Курсовая работа, 01 Июня 2012, автор: пользователь скрыл имя
Краткое описание
В данной курсовой работе речь пойдет о создании несложной игровой программы «Морской бой», которая и будет являться объектом исследования.
Содержание
Введение
1. Программирование игр с использованием визуальных компонентов
1.1 Аналитический обзор
1.2 Описание операторов, используемых при реализации практической части курсовой работы
2. Разработка программы
2.1 Постановка задачи
2.2 Алгоритм реализации работы
3. Блок-схема
Заключение
Список используемой литературы
Прикрепленные файлы: 1 файл
Морской бой.docx
— 96.34 Кб (Скачать документ)
|
Перед
началом игры надо настроить все
значения. Это удобно сделать в
отдельной процедуре:
|
Предположим,
что у нас есть функция, которая
выдает истину, если в ячейки (x,y) игрока
стоит корабль и ложь в противном случае:
function Killed (x, y: Integer): Boolean;. Еще потребуется
функция, определяющая длину самого большого
корабля игрока:
|
И
функция, определяющая проигрыш юзера:
|
Все вспомогательные подпрограммы готовы и можно приступить к реализации самого автомата. Для большей наглядности каждое состояние оформим в виде отдельной процедуры. Итак, все по порядку.
Прострел
На
этом этапе компьютер должен поймать
какой-либо из кораблей противника. Для
этого он будет стрелять по произвольным
незанятым клеткам поля игрока. Гораздо
эффективнее сначала
|
Ее результатом служат координаты выстрела и показатель попадания.
Обстрел
На
этом шаге задача заключается в определении
направления пойманного корабля. Для
этого надо обстрелять четыре ячейки
(если они свободны), которые могут
служить продолжением. В случае,
когда все четыре клетки обстреляны,
а попадания не произошло (однопалубный
корабль), надо перейти к первому
состоянию. Если в какой-то момент удалось
подбить еще одну палубу противника,
то можно переходит к расстрелу
данного корабля, т.к. его направление
стало известно. Аналогично первому
состоянию, если у игрока остались корабли
не более двух палуб, то этим попаданием
корабль уничтожен полностью
и надо вернуться к прострелу.
Посмотрим, как все это выглядит:
|
Расстрел
На
предыдущем шаге удалось установить
в каком направлении размещен
пойманный корабль. Теперь задача заключается
в его полном уничтожении. Для
этого надо стрелять справа или слева
(сверху или снизу) подбитых палуб, пока
не добьем его целиком, после чего
вернемся в состояние прострела.
При этом следует учитывать максимально
возможный корабль и стараться
попасть по четвертой палубе, когда
четырех палубный корабль уничтожен,
нет никакого смысла. Все достаточно
просто:
|
Осталось
собрать все это в одной
процедуре, которая будет контролировать
результат выстрела и обеспечивать
повторный ход при попадании:
|
Можно заметить, что функция Killed вызывается ровно один раз при каждом ходе компьютера. От сюда следует, что компьютер не подглядывает расположение кораблей игрока, т.к. другой возможности узнать о состоянии какой-либо ячейки поля юзера у него нет. В этом можно убедиться на практике, собрав все эти части кода вместе и сделав консольное приложение, в котором функция Killed спрашивала бы у игрока, попал компьютер или промазал. Все это легко с минимальными изменениями реализовать на Turbo Pascal 7.0
3. БЛОК - СХЕМА
ЗАКЛЮЧЕНИЕ
В
результате выполнения данной курсовой
работы был получен игровой
В результате исследования были выявлены следующие недостатки полученного программного продукта:
- Низкий исскуственный интеллект, т.е. ход компьютера осуществляется случайным образом, что делает маловероятным победу компьютера;
- При полном потоплении корабля это никак не отражается;
- Невозможность возврата на несколько ходов назад;
- Работоспособность приложения только в среде Windows;
Однако, помимо недостатков, есть и достоинства у этого программного продукта:
- Автоматическая расстановка кораблей ;
- Программный продукт малотребователен к системным ресурсам компьютера. Минимальная конфигурация: процессор – не ниже Pentium, оперативная память – не ниже 16 Mb, операционная система – Windows 95 / 98/ Me / NT / 2000 / XP.
В результате учета всех сделанных выше замечаний возможно улучшение созданного программного продукта, на которое потребуется минимум изменений исходного кода программы.
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
- Немнюгин С. Turbo Pascal / Учебный курс.– СПб: Питер, 2001.
- Сухарев М. Turbo Pascal 7.0. Теория и практика программирования.- СПб.: Наука и техника. 2004.
- Фаронов В.В. Турбо Паскаль 7.0. Начальный курс. Учебное пособие – М.: Издательство ООО ОМД «Групп», 2002.
- Федоренко Ю. Алгоритмы и программы на Turbo Pascal / Учебный курс.– СПб: Питер, 2001.