Разработать программу, моделирующую игру “Морской бой”

Автор работы: Пользователь скрыл имя, 09 Марта 2011 в 10:39, курсовая работа

Описание работы

Целью курсовой работы является программирование с помощью Delphi 7. На поле 10 на 10 стоят невидимые вражеские корабли: 4 корабля по 1 клетке , 3 корабля по 2 клетки, 2 корабля по 3 клетки,1 корабль в 4 клетки.

Все, кто имеет дело с компьютером, так или иначе сталкивались с компьютерными играми, и подавляющее большинство может сходу назвать несколько игр, которые им особенно понравились. Те, кто уже совсем наигрался, почти наигрался или еще не наигрался, но в процессе общения с компьютером уже начал совмещать игры с чем-нибудь более полезным, возможно, хотели бы придумать какие-нибудь свои, не похожие, ни на какие другие игры.

Файлы: 1 файл

Прангишвили Денис, Программирование на языке высокого уровня, к.р,#5,5-5.doc

— 750.50 Кб (Скачать файл)
enter">       (Pb) property Canvas: TCanvas;

       Если  это не так, то попытка обращения  к свойству вызовет исключительную ситуацию EInvalidOperation, так как рисовать на метафайле или значке нельзя.

       Следующие три свойства определяют, как именно Tpicture располагается в рабочей области компонента:

       (Pb) property AutoSize: Boolean;

       — означает, что размеры компонента настраиваются по размерам содержащегося в нем графического объекта. Устанавливать его в True нужно перед загрузкой изображения из файла или буфера обмена;

       (Pb) property Stretch: Boolean;

       — если это свойство установлено в  True, то изображение "натягивается" на рабочую область, при необходимости уменьшая или увеличивая свои размеры. Если оно установлено в False, то играет роль следующее свойство;

       (Pb) property Center: Boolean;

       — если это свойство установлено в  True, изображение центрируется в пределах рабочей области. В противном случае — располагается в ее верхнем левом углу.

                             

       2  Разработка программы

       2.1 Постановка задачи

 

       Разработать игровую программу «Морской бой», которая включает игровую панель, состоящую из двух полей для человека и компьютера. На поле расставляются 10 кораблей разного класса. Четыре корабля размером в одну ячейку, три корабля размером в две ячейки, два корабля размером в три ячейки, и один корабля размером в четыре ячейки. Поочередно противникам предоставляется возможность выстрела по чужому полю, результаты которого отображаются на нем. При попадании в корабль предоставляется возможность дополнительного выстрела. Победа присуждается игроку, потопившему все корабли противника.

       Справочная  информация содержит правила игры и  автора работы.

       Алгоритм реализации работы

       2.2 Алгоритм реализации игровой программы

 

       Запуск  программы осуществляется следующим образом: необходимо открыть папку, содержащую данную игру, и найти исполняемый файл morb.exe. На этом файле следует выполнить двойной щелчок левой клавишей манипулятора мышь.

       Проект  программы состоит из файла проекта, содержащего необходимые конструкции для исполнения, и двух модулей Unit1 и Unit2 .

       Модуль  Unit2 предназначен для вывода окна, содержащего информацию о программе и об авторе.  

       Модуль  Unit1 является основным модулем проекта, содержащим все необходимые для работы программы процедуры.

       После запуска программы на экран выводится основная форма Form1 (рис.2), на которой расположены следующие объекты: 

       

       Рисунок 2 – Вид программы после запуска

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

       Каждое  из полей (игрока и компьютера) представляет собой матрицу 10 на 10 в самом начале заполненную нолями. К тому же поля как игрока так и компьютера представляют собой картинку которая изменяется при том или ином действии.

       Расстановка кораблей противника происходит от 4х  палубного к одно палубному.

       Координаты  четырехпалубного корабль выбираются случайно(переменная m и переменная n) случайно лишь с условием того чтобы он не выходил за границы поля при этом выбирается случайное горизонтальное или вертикальное положение (переменная z). При этом координаты корабля помечаются цифрами «2» в матрице.

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

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

       К тому же расстановка трехпалубных кораблей происходит в цикле до тех пор пока не будет расстановлено два корабля, двухпалубные – пока не буду расстановлены три корабля, и однопалубные – пока не будут расстановлены четыре корабля.

       Первоначально на форму выводится сообщение  «Расставьте корабли», это означает, что игроку следует расставить свои корабли перед началом работы.

       Процедура rastkor.

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

       При изменении ячейка матрицы со значением  «0» рисуется белым квадратом, со значением «1» желтым.

       При нажатии правой клавиши мыши происходит ротация корабля, проверка на ротацию происходит перед движением мыши. 

       Расстановка корабля происходит по нажатии левой  клавиши мыши на поле игрока.

       Процедура nash

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

       Также каждый из кораблей расстанавливается  в зависимости от количества его палуб, т.е. четырехпалубный – один, трехпалубных – два, двухпалубных – три, однопалубных – четыре.

       При этом ячейке матрицы поля игрока присваивается значение «2». После каждого нажатия происходит прорисовка поля игрока, для этого каждая ячейка с цифрой «2» закрашивается серым. 

       После того как все корабли расставлены (k11<0) начинается обмен выстрелами с компьютером.

       Процедура vistrel.

       Выстрел производится при нажатии на одну из клеток поля компьютера. Если ячейка имеет значение «0»(пустая клетка) то ячейке присваивается значение «3», ячейка имеет значение «2» то ячейке присваивается значение «4».

       Затем происходит прорисовка поля компьютера. Клетка которой соответствует ячейка со значением «3» рисуется маленький квадрат, клетка которой соответствует ячейка со значением «4» проверяется ранен или убит корабль если убит то рисуется красный квадрат, если ранен то рисуется серый квадрат перечеркнутый красным крестом.

       После происходит проверка выиграл ли игрок или нет, для этого матрица компьютера сканируется и если не находится ни одной ячейки со значением «2» то выходит сообщение – 

       «Поздравляю! Вы победили.» 

       Если  не находится то проверяется если игрок опал в ячейку со значением «2» то ему предоставляется ещё один выстрел, и т. д. пока игрок не попадет в ячейку со значением «0».

       Тогда наступает очередь хода компьютера.

       Компьютер выбирает произвольную клетку из поля игрока и если её значение равно «0» то значение становится равным «3», если значение равно «2» от значение клетки становится равным «4».

       Затем происходит прорисовка поля компьютера. Клетка, которой соответствует ячейка со значением «3» рисуется маленький квадрат, клетка, которой соответствует ячейка со значением «4» проверяется, ранен или убит корабль, если убит то, рисуется красный квадрат, если ранен то, рисуется серый квадрат, перечеркнутый красным крестом.

       Компьютер стреляет, до тех пор пека не попадет, в клетку со значением «0».

       После происходит проверка проиграл ли игрок  или нет, для этого матрица  игрока сканируется и если не находится  ни одной ячейки со значением «2»  то выходит сообщение – 

       «Вы проиграли.

       Попробуйте  ещё раз!» 

       Более подробно смотрите исходный текст программы Приложение 1.

       2.3 Реализация справочной информации

       Справочная  информация (правила игры) реализована  с помощью программы Microsoft Help Workshop. Эта программа позволяет создать файл справочной информации для Windows, используя текст формата Rich Edit Text. В процессе работы этой программы создается файл проекта справки *.hpj, который впоследствии может быть откомпилирован в файл справки (*.hlp).

       В данной курсовой работе был создан файл проекта справки morb.hpj, который был откомпилирован с помощью программы Microsoft Help WorkShop в файл morb.hlp (рисунок 3).

       

       Более подробно описано в приложении Б.

       2.4 Описание пользовательского интерфейса

 

       Игра  – Новая игра (горячая клавиша  F2) – начать новую игру после окончания.

       Игра  – Выход – выход из программы.

       Помощь  – Справка (горячая клавиша F1) – Вызов справки.

       Помощь  – О программе – Короткая информация о программе.

 

        Заключение

 

       Hадо  отметить, что к моменту выхода  продукта обстановка вокруг компании Borland складывалась не лучшим для нее образом. Поговаривали о возможной перепродаже компании, курс акций компании неудержимо катился вниз. Компилятор, встроенный в Delphi, обеспечивает высокую производительность, необходимую для построения приложений в архитектуре “клиент-сервер”.  Этот компилятор в настоящее время является самым быстрым в мире, его скорость компиляции составляет свыше 120 тысяч строк в минуту на компьютере 486DX33. Он предлагает легкость разработки и быстрое время проверки готового программного блока, характерного для языков четвертого поколения (4GL) и в то же время обеспечивает качество кода, характерного для компилятора 3GL.

       В результате выполнения данной курсовой работы был получен игровой программный продукт, названный «Морской бой». Было проведено исследование компонентов программной среды Borland Delphi 6.0, которые использовались при создании игры.

       В результате исследования были выявлены следующие недостатки полученного программного продукта:

  1. Низкий исскуственный интеллект, т.е. ход компьютера, осуществляется случайным образом, что делает маловероятным победу компьютера;
  2. Невозможность возврата на несколько ходов назад;
  3. Работоспособность приложения только в среде Windows;
  4. Невозможность автоматической расстановки кораблей игрока.

       Однако, помимо недостатков, есть и достоинства у этого программного продукта:

  1. Создана интерактивная справка с правилами игры;
  2. Программный продукт малотребователен к системным ресурсам компьютера. Минимальная конфигурация: процессор – не ниже Pentium, оперативная память – не ниже 16 Mb, операционная система – Windows 95 / 98/ Me / NT / 2000 / XP.

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

       Целью курсовой работы являлось программирование с помощью Delphi 7. Прежде чем начать выполнять свое задание была рассмотрена эта система рограмммирования, в общем.

 

        Гласарий 

№ п/п        Понятие        Определение
1 Delphi — среда программирования, в которой используется язык программирования Object Pascal.Начиная со среды разработки Delphi 7.0, в официальных документах Borland стала использовать название Delphi для обозначения языка Object Pascal.
2 Image отображает  графическое изображение на форме.
3 Microsoft Help Workshop проприетарный формат файлов контекстной справки, разработанный корпорацией Microsoft и выпущенный в 1997 году в качестве замены формата WinHelp. Содержит в себе набор HTML-страниц, может также включать в себя содержание со ссылками на страницы, предметный указатель, а также базу для полнотекстового поиска по содержимому страниц. Все входящие в .CHM файлы сжаты алгоритмом LZX.

Для просмотра .CHM-файлов используется стандартное средство просмотра, встроенное во все версии Microsoft Windows, начиная с Windows 98, и Windows NT. Кроме того, существует ряд сторонних программ-просмотровщиков, FBReader и другие.

4 TImage   отображает графическое изображение на форме.
5 Tlabel служит для  отображения текста на экране
1 2 3
6 TMainMenu позволяет поместить  главное меню в программу
7 TPanel управляющий, похожий  на TGroupBox, используется в декоративных целях
8 Алгориитм от имени учёного аль-Хорезми (перс. خوارزمی‎ [al-Khwārazmī]) — точный набор инструкций, описывающих порядок действий исполнителя для достижения результатарешения задачи 
9 Игра вид непродуктивной деятельности, с действиями, ограниченными правилами, которые направлены на создание, развитие и поддержание процесса в заданных границах.
10 Модуль Модуль (от лат. modulus — «маленькая мера») — составная часть, отделимая или хотя бы мысленно выделяемая из общего. Модульной обычно называют вещь, состоящую из чётко выраженных частей, которые нередко можно убирать или добавлять, не разрушая вещь в целом.

Информация о работе Разработать программу, моделирующую игру “Морской бой”