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

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

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

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

Файлы: 1 файл

Text.doc

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

      В обработчике события: (Pb) property OnResize: TNotifyEvent; может быть предусмотрена реакция пользователя на изменение размеров панели. 

1.2.4. Компонент TBitBtn 

TBitBtn - кнопка вроде TButton, однако на ней можно разместить картинку (glyph). TBitBtn имеет несколько предопределенных типов (bkClose, bkOK и др), при выборе которых кнопка принимает соответствующий вид. Кроме того, нажатие кнопки на модальном окне (Form2.ShowModal) приводит к закрытию окна с соответствующим модальным результатом (Form2.ModalResult). 

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

      Эта кнопка, будучи потомком TButton, может нести на себе пиктограмму и имеет рад дополнительных удобств в использовании. В Delphi уже определены стандартные виды кнопок:

(Pb) property Kind: TBitBtnKind;

TBitBtnKind = (bkCustom, bkOK, bkCancel, bkHelp, bkYes, bkNo, bkClose, bkAbort, bkRetry, bklgnore, bkAll);

      Для каждой из них определены: передаваемый форме результат (ModalResult):

BitBtnModalResults: array[TBitBtnKind] of TModalResult =

(0, mrOk, mrCancel, 0, mrYes, mrNo, 0, mrAbort, mrRetry, mrlgnore, inrAll);

а также  название и картинки для разных состояний. Достаточно установить значение свойства Kind, и кнопка сразу приобретет нужный вид. Более того, некоторые из видов кнопок при нажатии сразу совершают определенные действия. Так, bkHelp осуществляет инициализацию системы помощи со своим (или ближайшим ненулевым родительским) контекстом. Кнопка вида bkClose закрывает форму, которой она принадлежит, вызывая ее метод Close.

      Кнопка  будет отнесена к виду bkCustom, если она:

  1. назначена Default, но при этом не принадлежит множеству [bkOk, bkYes];
  2. назначена Cancel, но не принадлежит множеству [bkCancel, bkNo];
  3. у нее изменена пиктограмма;
  4. модальный результат не соответствует определенному для этого вида кнопок.

      За  внешний вид этой кнопки отвечают свойства, рассмотренные ниже. Стиль  изображения кнопок в зависимости  от операционной системы задается свойством:

(Pb) property Style: TButtonStyle;

TButtonStyle = (bsAutoDetect, bsWin31, bsNew);

      Стиль bsNew соответствует Windows 95. В любом случае корректным будет применение стиля bsAutoDetect, который сам распознает версию системы. Пиктограмма кнопки, которая вместе с текстом видна на ее поверхности, определяется свойством:

(Pb) property Glyph: TBitmap;

      Для создания эффекта нажатия картинка должна немного изменяться в зависимости  от состояния; кроме того, отдельная  картинка нужна для неактивного состояния (когда нажатие не воспринимается). В свойстве Glyph должна быть одна битовая карта, но она может содержать картинки сразу для нескольких состояний кнопки (максимум четыре). Они интерпретируются как соответствующие нормальному (отжатому), запрещенному (неактивному), нажатому и утопленному состояниям (последнее применяется только для кнопок TSpeedButton). Для этого картинки должны быть расположены подряд вплотную по горизонтали. Например, при размере картинок 16х16 нужна объединенная битовая карта 64х16. Если каждая из картинок квадратная и ширина общей картинки нацело делится на высоту, то при присвоении ее свойству Glyph система сможет распознать их и скорректировать количество, определяемое свойством:

(Pb) property NumGlyphs: TNumGlyphs ;

TNumGlyphs = 1..4;

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

      Три свойства отвечают за расположение текста и картинки на поверхности кнопки:

(Pb) property Layout: TButtonLayout;

      Способ  выравнивания пиктограммы относительно краев кнопки. Может быть одним из четырех:

TButtonLayout = (biGlyphLeft, biGlyphRight, biGlyphTop, biGlyphBottom);

      Расстояние  от соответствующего способу выравнивания края кнопки до пиктограммы описывается свойством:

(Pb) property Margin: Integer;

      Промежуток  между пиктограммой и текстом  равен:

(Pb) property Spacing: Integer;

      Если  свойства Margin, Spacing или оба не заданы (по умолчанию равны -1), значения этих промежутков выбираются системой. Кнопка также имеет метод Click и свойства Caption, ModalResult, Default и Cancel. Статус Default получают кнопки видов bkOk, bkYes, a Cancel — кнопки видов bkCancel, bkNo. 
 

1.2.5. Компонент TSpeedButton

 

TSpeedButton - кнопка для создания панели быстрого доступа к командам (SpeedBar). Пример - SpeedBar слева от Палитры Компонент в среде Delphi. Обычно на данную кнопку помещается только картинка (glyph).

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

      Эта кнопка с изображением может иметь  как зависимую, так и независимую  фиксацию. Она удобна для применения в составе панелей инструментов. Поведение этих кнопок во многом определяется свойством:

(Pb) property Grouplndex: Integer;

      Если  Grouplndex равен нулю, у кнопки вообще нет фиксации в нажатом состоянии и она не зависит от остальных кнопок, принадлежащих тому же родительскому элементу. Кнопки в группе (то есть с одинаковым ненулевым значением Grouplndex) имеют зависимую фиксацию. Она также зависит от свойства:

(Pb) property AllowAlIUp: Boolean;

которое описывает поведение кнопок в  группе, а именно: могут ли все  кнопки одновременно быть отжаты. Если AllowAlIUp равно False (по умолчанию), нажатую кнопку в группе можно отпустить, лишь нажав другую. Если AllowAlIUp равно True, кнопку можно отпустить повторным нажатием.

      Если  необходимо фиксировать одну кнопку TSpeedButton, ей нужно присвоить уникальный групповой индекс, а AllowAlIUp установить в True.

      Поскольку в группе не могут одновременно находиться кнопки с различным значением  этого свойства, при нажатии кнопки и изменении Grouplndex свойство AllowAlIUp "рассылается" (присваивается) остальным кнопкам с тем же значением Grouplndex. В группе не может быть нажато более одной кнопки. Определяет, нажата ли кнопка, свойство:

(Pb) property Down: Boolean;

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

      Текст кнопки определяет свойство Caption. Компонент имеет те же правила и свойства рисования картинки, что и TBitBtn. Они описываются свойствами Glyph, NumGlyphs, Layout, Margin и Spacing.

      Для имитации щелчка предусмотрен метод Click. Двойной щелчок для TSpeedButton возможен только на нажатой кнопке — иначе он интерпретируется как обычный. Описывается свойством:

(Pb) property OnDblClick; 

1.2.6. Компонент TImage 

TImage - отображает графическое изображение на форме. Воспринимает форматы BMP, ICO, WMF. Если картинку подключить во время дизайна программы, то она прикомпилируется к EXE файлу.

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

      Этот  компонент служит надстройкой над классом TPicture и замыкает всю иерархию графических объектов VCL. Он предназначен для показа на форме изображения: битовой карты (TBitmap), метафайла (TMetafile), значка (TIcon).

      Свойство  (Pb) property Picture: TPicture; служит контейнером для графического объекта одного из перечисленных классов.

      В качестве канвы используется канва  объекта Picture. Graphic — только если поле Graphic ссылается на объект класса TBitmap:

(Pb) property Canvas: TCanvas;

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

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

(Pb) property AutoSize: Boolean;

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

(Pb) property Stretch: Boolean;

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

(Pb) property Center: Boolean;

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

1.2.7. Компонент TTimer 

TTimer - таймер, событие OnTimer периодически вызывается через промежуток времени, указанный в свойстве Interval. Период времени может составлять от 1 до 65535 мс.

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

      Этот  невизуальный компонент предназначен для уведомления программы об истечении определенных промежутков  времени. Компонент инкапсулирует  системный таймер Windows и работает через посылку сообщений WM_TIMER.

      Свойство  (Pb) property Enabled: Boolean; включает/выключает таймер, влияя на генерацию им событий. Будучи установлен в Enabled, таймер начинает генерировать события OnTimer через интервал времени

(Рb) property Interval: Word;

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

(Pb) property OnTimer: TNotifyEvent;

При этом программист получает очередной  квант времени.

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

1.2.8. Компонент TStatusBar

 

TStatusBar – строка состояния. Предназначена для размещения разного рода служебной информации в окнах редактирования, обычно располагается в нижней части основной формы. Компонент может иметь несколько секций, а также кнопку изменения размеров окна, в которое он помещен. С компонентом связывается объект класса TStatusPanel, который определяет панели компонента.

      Этот  компонент находится на странице Палитры компонентов Win32. 
 
 
 
 
 
 
 
 

2. РАЗРАБОТКА ПРОГРАММЫ 

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

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

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

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

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

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

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