Разработка приложения “Игра – Морской Бой”

Автор работы: Пользователь скрыл имя, 25 Сентября 2011 в 12:33, курсовая работа

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

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

Файлы: 1 файл

Text.doc

— 624.00 Кб (Скачать файл)

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

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

      «Космические  войны» стали настолько популярны к середине шестидесятых, что Нолан Бушнелл, создатель Atari, очень привязался к игре во время учебы в университете штата Юты. К 1970 году Бушнелл построил свою собственную машину, использовав 185 встроенных цепей для подсоединения к телевизору и для выполнения одной-единственной функции. Эта функция была игрой «Компьютерный Космос», вариант «Космических Войн», в котором ракета сражалась с летающими тарелками вместо другого корабля.

      «Космические  Войны» были не единственным предшественником коммерческих компьютерных игр, появившихся на больших компьютерах в колледжах. Какой-то неизвестный автор начал играть в игру Star Trek («Звездный путь») в шестидесятых годах. Никто не знает, кто первым создал такую игру — он или она, вероятно, подали бы судебный иск, если бы автор игры был точно определен — но эта игра также появилась на колледжских компьютерах по всей стране к 1969 году.

      Игра  «Звездный путь» сама по себе была не очень изощренной. В игре были линии наподобие решеток, которые позволяли звездным кораблям путешествовать от одной точки к другой, игра использовала символы для идентификации кораблей, предоставляла численную информацию в процентах, и позволяла летать быстрее, чем скорость света. К середине 70-х годов почти на каждой домашней компьютерной системе была доступна та или иная форма этой игры. Существовала версия этой же игры для IBM под названием Star Fleet («Звездный Флот»).

      Наконец, стоит упомянуть пожалуй наиболее важную игру, Adventure («Приключения»). В игре использовались двухсловные команды, имя ее разработчика Вилл Краудер. Это была первая приключенческая компьютерная игра.

      Кроме того, в конце 70-х была создана игра по имени Zork, которая стала доступна для пользователей домашних компьютеров в 1981 году. Эту игру до сих пор можно купить. Игра Zork основывается на игре Adventure (2). 
 

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

      В практической части данной курсовой работы используются следующие визуальные и невизуальные компоненты (3, 4, 5) среды программирования Borland Delphi 6.0. 

1.2.1. Компонент TMainMenu 

TMainMenu позволяет поместить главное меню в программу. При помещении TMainMenu на форму это выглядит, как просто иконка. Иконки данного типа называют невидимым (невизуальным) компонентом, поскольку они невидимы во время выполнения программы. Создание меню включает три шага:

1) помещение  TMainMenu на форму, 

2) вызов  Дизайнера Меню через свойство Items в Инспекторе Объектов,

3) определение  пунктов меню в Дизайнере Меню.

     Этот  компонент доступен из модуля MENUS, и находится на странице Палитры компонентов Standard

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

  1. Если в приложении имеется несколько форм со своими меню, то для упрощения работы целесообразно соединить их в одно и управлять меню из главной формы.
  2. Объединение меню нужно при работе с интерфейсом MDI и его подокнами.
  3. Механизм объединения меню используется серверами OLE, запускаемыми по месту нахождения объекта OLE. Загружаясь, сервер дописывает осуществляемые им операции к меню другого приложения.

      Для того чтобы реализовать объединение  меню, у тех форм, меню которых  будут присоединены к главному, необходимо установить в True свойство: (Рb) property AutoMerge: Boolean.

      При этом у главного меню оно должно оставаться равным False, иначе главное меню будет вообще невидимым. Объединение будет происходить автоматически при активизации новых форм или серверов OLE. Кроме автоматического режима, объединение меню можно выполнить при вызове метода: procedure Merge(Menu: TMainMenu).

      Присоединяемое  меню при необходимости может  быть легко отсоединено вызовом метода: procedure Unmerge(Menu: TMainMenu).

      При установленном в True свойстве AutoMerge ссылка на присоединенное меню будет сохраняться в специальном поле компонента и отсоединяться в нужных случаях автоматически (например, при закрытии формы, которой оно принадлежит).

      Объединение меню происходит по специальным правилам, в основе которых лежит использование группового индекса (свойства Group Index) каждого объекта TMenuItem.

      У пунктов меню одного уровня, в частности  всех подменю верхнего уровня в главном  меню, свойство GroupIndex является неубывающим, т. е. у последующего пункта групповой индекс больше либо равен индексу предыдущего. Это требование отслеживается как на этапе разработки, так и на этапе исполнения. Например, пусть пункты меню имеют индексы 0, 3, 4, 5, 6. Если включить пункт меню с индексом 5 между пунктами с индексами 0 и 3, то 3 и 4 будут изменены на 5. А вот изменить большее значение Х на меньшее Y, если впереди есть пункты с индексом, большим Y, невозможно. Если в этом примере попытаться изменить индекс 6 на 4, то это приведет к возникновению исключительной ситуации EMenuError.

      Для обычных форм объединение происходит только на верхнем уровне в главном  меню во время их активизации. В объединенном меню все подменю будут располагаться  по возрастанию номера группового индекса, при этом:

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

      К окнам интерфейса MDI все сказанное относится только при запуске приложения. Если в формах приложения со стилем fsMDIChild есть свои главные меню, то в этот момент они автоматически сольются с главным меню формы fsMDIForm независимо от состояния AutoMerge.

      На  уровне работы с серверами OLE предусмотрены дополнительные возможности по объединению меню. Если в компонент TOLEContainer загружен объект OLE, то в конец подменю Edit обычно добавляется подменю, из которого можно вызвать функции открытия и редактирования этого объекта. После активизации сервера он может не только вставлять свои подменю в главное, но и добавлять новые пункты к уже существующим подменю.

     Три метода TMainMenu используются для работы с меню OLE:

  1. procedure PopulateOle2Menu(SharedMenu: HMenu; Groups: array of Integer; var Widths: array of Longint);
  2. procedure GetOle2AcceleratorTable(var hAccel : THandle; var numAccels: Word; Groups: array of Integer) ;
  3. procedure Set01e2MenuHandle(Handle: HMENU);

1.2.2. Компонент TLabel 

TLabel служит для отображения текста на экране. Можно изменить шрифт и цвет метки, если дважды щелкнуть на свойство Font в Инспекторе Объектов. Видно, что это легко сделать и во время выполнения программы, написав всего одну строчку кода.

     Этот  компонент доступен из модуля STDCTRLS, и находится на странице Палитры компонентов Standard.

      Компонент представляет собой статический  текст. С помощью этого компонента на рабочей поверхности формы можно отобразить информацию, сделать пояснения и показать названия других компонентов. Но он имеет и другую важную функцию — если в составе текста TLabel есть символы-акселераторы, информация об их нажатии может передаваться от TLabel другому элементу управления.

      Свойства  компонента приведены в табл.1:

Таблица 1

Свойства  компонента TLabel 

Свойство Описание
(Pb) property Caption: TCaption; TCaption = string[255]; Содержит строку с выводимым текстом.
(Pb) property Alignment: TAlignment; Устанавливает правило выравнивания текста — по правому, левому краю или по центру клиентской области.
(Pb) property AutoSize: Boolean; В случае True происходит автоматическое приведение размеров компонента к размерам текста и высоте шрифта.
   
   
  Продолжение табл.1
(Pb) property ShowAccelChar: Boolean; Показывает, отображается ли в TLabel акселератор (символ, перед которым стоит знак амперсанда — '&'). Если оно равно False, амперсанд никак не интерпретируется. В случае True акселератор выделяется в строке подчеркиванием и нажатие клавиш <Аlt>+<символ> приводит к передаче фокуса окну FocusControl (т.к. TLabel сам не является оконным компонентом).
(Pb) property FocusControl: TWinControl; Определяет  оконный компонент, которому посылаются сообщения о вводе акселератора.
(Pb) property Transparent: Boolean; Прозрачность  фона компонента. Если свойство установлено  в True, то при перерисовке элемента управления не происходит закрашивание клиентской области. В противном случае — происходит закрашивание кистью bsSolid и цветом Color.
(Pb) property WordMrap: Boolean; Определяет  возможность разрыва слов в случае, если длина выводимого текста превышает  ширину компонента.
 
 
 
 
 

1.2.3. Компонент TPanel 

TPanel - управляющий элемент, похожий на TGroupBox, используется в декоративных целях. Чтобы использовать TPanel, просто поместите его на форму и затем положите другие компоненты на него. Теперь при перемещении TPanel будут передвигаться и эти компоненты. TPanel используется также для создания панели инструментов и окна статуса.

      Этот  компонент доступен из модуля EXTCTRLS, и находится на странице Палитры компонентов Standard.

      Этот  компонент — является несущей  конструкцией для размещения других элементов управления. В отличие  от простой рамки (TBevel) панель сама является оконным элементом управления и родителем для всех размещенных на ней компонентов. Часто ее используют для создания панелей инструментов, строк состояния и т. п.

      За  внешнее оформление панели отвечают свойства:

(Pb) property Bevel Inner: TPanelBevel;

(Рb) property BevelOuter: TPanelBevel;

TPanelBevel = (bvNone, bvLowered, bvRaised) ;

(Pb) property BevelWidth: TBevelWidth;

TBevelWidth = 1..Maxint;

(Pb) property BorderWidth: TBorderWidth;

TBorderWidth = 0..Maxint ;

      На  границах панели размещаются две  специальные окаймляющие рамки (bevels): Bevellnner и BevelOuter. При помощи комбинации белого и серого цветов они имитируют трехмерность — приподнятость (bvRaised) или утоп-ленность (bvLowered). Обе рамки имеют ширину BevelWidth. Наружная — BevelOuter — расположена прямо по периметру панели, вторая — Bevellnner — внутри на расстоянии BorderWidth от нее. Обе могут быть невидимыми (bvNone), приподнятыми или утопленными.

      Комбинируя  сочетания bvLowered/bvRaised, можно создать вокруг панели "ров" или "вал".

      Иллюзию трехмерности может подчеркнуть также стиль обрамления компонента:

(Pb) property BorderStyle: TBorderStyle;

TBorderStyle = bsNone .. bsSingle;

      Значение  bsSingle означает, что панель будет окаймлена черной линией единичной толщины (по периметру, снаружи от обеих рамок).

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

(Pb) property Alignment: TAlignment;

      Свойство  (Pb) property Locked: boolean; предназначено для определения способа взаимодействия панели с размещенными на ней объектами OLE. Если оно равно True, последние при активизации сервера OLE "по месту'" не могут заместить панель.

Информация о работе Разработка приложения “Игра – Морской Бой”