Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Мой курсовой проект.doc
Скачиваний:
1
Добавлен:
10.09.2019
Размер:
343.04 Кб
Скачать

Министерство транспорта Российской Федерации

Федеральное агентство железнодорожного транспорта

Государственное образовательное учреждение высшего профессионального образования

Омский государственный университет путей сообщения (ОмГУПС)

Кафедра «Автоматика и системы управления»

Морской бой

Пояснительная записка к курсовому проекту

Выполнил:

студент гр. 28М

Михайлов В.А.

__________________

(подпись)

________________

(дата)

Руководитель:

Газизов Р.И.

_____________________ (подпись)

_____________________

(дата)

Омск 2009

Содержание

Заключение 10

Введение

C (Си) является универсальным языком программирования высокого уровня, который содержит команды низкого уровня, подобно языку ассемблера. Программа на языке Си может быть скомпилирована в машинные коды почти для всех типов процессоров. Удачное сочетание лаконичности конструкций и богатства выразительных возможностей позволило языку Си быстро распространиться и стать сегодня наиболее популярным языком прикладного и системного программирования. Можно даже сказать, что Си стал фундаментом, на котором строится современное программирование.

Язык программирования C (Си) был создан в 1972 г. в фирме Bell Laboratories Деннисом Ритчи (Dennis MacAlistair Ritchie) в атмосфере, которую один из участников разработки определил как «благотворное пренебрежение». Никто из руководителей компании не заказывал нового языка.

Ритчи надеялся, что его новый язык пригодится для программирования новой операционной системы «Юникс» (UNIX), работа над которой тоже не входила в официальные планы компании. В результате язык возник лишь как результат дружеского соревнования внутри небольшой группы программистов лаборатории. «Не было ни проектов, ни спецификаций, ни требований, - вспоминал один из членов группы, - почти все родилось просто из обсуждений».

Название C (Си) появилось так же случайно, как и сам язык. Он оказался преемником ранее созданного языка В (Би), написанного автором UNIX Кеном Томпсоном (Ken Thompson). Язык Би отчасти основывался на созданном в Кембриджском университете Мартином Ричардсом (Martin Richards) языке BCPL, который в свою очередь был потомком Алгола-60.

Неформальным стандартом языка Си стало первое издание книги Брайана Кернигана (Brian Kernighan) и Денниса Ритчи "The 'C' Programming Language", вышедшее в США в 1978 г., а в 1989 г. язык Си был стандартизован ANSI (American National Standards Institute) и ISO (International Standard Organization).

В начале 80-х годов в той же Bell Laboratories Бьерном Страуструпом (Bjarne Stroustrup) язык Си был дополнен и значительно расширен. По сути дела, был создан новый язык, который стали называть "Си с классами". В 1983 году язык Страуструпа получил название Си++. Это название сохранилось за ним и по сей день.

1 Язык программирования С++

Язык Си++ является универсальным языком программирования, в дополнение к которому разработан набор разнообразных библиотек. Поэтому, строго говоря, он позволяет решить практически любую задачу программирования. Тем не менее, в силу разных причин для каких-то типов задач он употребляется чаще, а для каких-то – реже.

Си++ как преемник языка Си широко используется в системном программировании. На нем можно писать высокоэффективные программы, в том числе операционные системы, драйверы и т.п. Язык Си++ – один из основных языков разработки трансляторов (программ, которые транслируют с одного языка на другой и, в частности, с одного языка программирования на другой).

Поскольку системное программное обеспечение часто бывает написано на языке Си или Си++, то и программные интерфейсы к подсистемам ОС тоже часто пишут на Си++.

Распределенные системы, функционирующие на разных компьютерах, также разрабатываются на языке Си++. Этому способствует то, что у широко распространенных компонентных моделей CORBA и COM есть удобные интерфейсы на языке Си++.

Обработка сложных структур данных – текста, бизнес-информации, Internet-страниц и т.п. – одна из наиболее распространенных возможностей применения языка. В прикладном программировании, наверное, проще назвать те области, где язык Си++ применяется мало.

Разработка графического пользовательского интерфейса на языке Си++ выполняется, в основном, тогда, когда необходимо разрабатывать сложные, нестандартные интерфейсы. Простые программы чаще пишутся на языках Visual Basic, Java и т.п.

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

Используется язык С++ и для программирования игр. Целью моей курсовой работы является создание компьютерной игры «Морской бой», в которой человек может играть против компьютера.

2 Borland C++

Для реализации игры «Морской бой» я воспользовался средой программирования Borland C++ v 4.5. Я выбрал среду Borland С++ потому, что в ней используется Object Windows Library (OWL) – это объектно-ориентированная библиотека, базирующаяся на Windows API. Она содержит множество классов, способствующих более быстрому и простому написанию прикладных программ. OWL-классы представляют набор объектов, из которых создается Windows-приложение, содержащее такие объекты, как окна, диалоговые окна, меню, элементы управления и другие, включая некоторые специальные объекты, такие как строки состояния и управления. Хоть эта библиотека устарела, и пользуются ей не часто, она позволяет упростить процесс создания графической части приложения.

3 Проект «Морской бой»

Мой проект игры «Морской бой» представляет собой несколько упрощенную версию оригинальной игры. Имеется два поля – одно пользователя, второе – поле компьютера. Корабли расставляются произвольно, путем нажатия правой кнопки мыши.

Рисунок 3.1 – Игровой процесс

Заметным отличием программирования в Borland C++ от Microsoft Visual Studio являются заголовочные файлы. В своем проекте мною были использованы 3 заголовочных файла:

- #include <owl\applicat.h>

- #include <owl\framewin.h>

- #include <owl\dc.h>

Рассмотрим подробнее каждый из них.

3.1 Подключаемые заголовочные файлы

Первый подключаемый файл – <owl\applicat.h> Этот заголовочный файл содержит в себе описание класса TApplication. TApplication регистрирует, создает и отображает основное окно приложения; поддерживает работу цикла обработки сообщений (таким образом, что прикладная программа может взаимодействовать как с пользователем, так и с Windows), и закрывает его, когда работа закончена. Класс TApplication обеспечивает полноценную работающую Windows-программу, выполняющую, правда, не более сложное действие, чем вывод окна на экран. TApplication поддерживает некоторые дополнительные функции - такие, как обеспечение доступа к командной строке приложения, позволяя подключать различные библиотеки, а также определить, когда Windows простаивает.

Второй подключаемый файл – <owl\framewin.h>. Этот заголовочный файл содержит описание класса TFrameWindow. Классом TFrameWindow представляются родительские окна, которые поддерживают все функции класса TWindow и, вдобавок, работу с клавиатурой и окнами пользователя. Большинство функций TFrameWindow наследуется из базового класса TWindow. Классом TWindow в OWL представлено дочернее окно общего вида. Это основное окно, которое обеспечивает поддержку меню, линейки прокрутки, элементы управления, оконную графику, обмен данными, стандартную обработку сообщений и многое другое. Объект TWindow умеет делать все, что требуется от дочернего окна. Хотя класс TWindow можно использовать для создания основного окна, его все же лучше попридержать для других целей. Основное окно приложения должно быть окном класса TFrameWindow.

Третий подключаемый файл – <owl\dc.h>. Этот заголовочный файл содержит описание класса TDC. Класс TDC является основным классом для других специальных классов контекстов устройств (DC). Этот класс содержит большинство GDI-функций Windows таких, как рисование форм, отображение текста, кнопок и растровых изображений, задание режима рисования, выбор и восстановление объектов GDI, задание цвета и другие. Специальные классы DC включают контексты окна (TWindowDC), закраски (TPaintDC), метафайла (TMetafileDC), памяти (TMemoryDC) и принтера (TPrintDC). Каждый класс DC включает множество функций, осуществляющих вызов стандартных, относящихся к данному контексту устройства (DC) функций Windows. Например, класс TPrintDC поддерживает функции запуска и остановки принтера, инициализации и завершения страницы, задания числа копий, снятия документа и другие.

3.2 Правила игры

Рассмотрим правила игры «Морской бой». Классический «Морской бой» – игра для двух участников, в которой игроки по очереди называют координаты на неизвестной им карте соперника. Если у соперника по этим координатам имеется корабль (координаты заняты), то корабль или его часть «топится», а попавший получает право сделать ещё один ход. Цель игрока – первым поразить все корабли противника. Моя компьютерная реализация этой игры работает по той же схеме, правда некоторые элементы игры несколько упрощены.

Итак, в игре у пользователя и у компьютера имеется собственное игровое поле размером 5х5 клеток, в котором расположены корабли. Поле слева принадлежит пользователю, справа – компьютеру. Корабли пользователя и компьютера расставляются автоматически, при этом учитывается то, что при расстановке корабли не могут находиться в двух соседних клетках, также корабли не могут касаться друг друга углами. Количество кораблей у каждого – 4, каждый корабль занимает одну клетку. Первый ход предоставляется пользователю. На игровом поле компьютера пользователь выбирает клетку и «стреляет» в нее. В случае, если пользователь попал в корабль компьютера, ему предоставляется возможность сделать еще один ход, до момента, пока пользователь не промахнется. После промаха ход переходит к компьютеру, который начинает «стрелять» по полю пользователя. Победителем игры считается тот, кто первым уничтожит все корабли противника.

3.3 Работа приложения

Рассмотрим подробнее, как работает приложение «Морской бой». Когда мы запускаем игру, перед нами появляется вот такое окно

Рисунок 3.2.1 – Начало игры

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

Рисунок 3.2.2 – Окно игры после щелчка правой кнопкой мыши

Игра произвольно расставит корабли пользователя в другие ячейки, вместе с этим, меняется и месторасположение кораблей компьютера. Для того, чтобы начать игру достаточно просто «сделать выстрел» по полю противника, компьютер также один раз выстрелит по вашему полю.

Рисунок 3.2.3 – Первый ход игрока

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

Рисунок 3.2.4 – Повторный ход игрока после попадания

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

Рисунок 3.2.5 – Сообщение о победе игрока

Игра завершилась победой пользователя, чтобы начать игру заново, нужно после нажатия кнопки ОК щелкнуть на игровом поле правой кнопкой мыши. После этого начнется новый «раунд».

Рисунок 3.2.6 – Начало нового «раунда» игры

4 Искусственный интеллект

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