Создание игровой программы “крестики-нолики”

48808
знаков
0
таблиц
0
изображений

2.2  Создание игровой программы “крестики-нолики”

Компоненты Delphi используемые в программе

Компонент TMainMenu

TMainMenu – позволяет поместить главное меню в программу. При помещении TMainMenu на форму это выглядит, как просто иконка (Рисунок 1. Иконки компонентов на форме, созданное меню, компонент TPanel). Иконки данного типа называют невидимым (невизуальным) компонентом, поскольку они невидимы во время выполнения программы.

Создание меню включает три шага:

·  помещение TMainMenu на форму;

·  вызов Menu Designer;

·  определение пунктов меню в Menu Designer.

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

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

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

·  Объединение меню нужно при работе с интерфейсом MDI и его подокнами.

·  Механизм объединения меню используется серверами OLE, запускаемыми по месту нахождения объекта OLE. Загружаясь, сервер дописывает осуществляемые им операции к меню другого приложения.

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

·  (Pb) property AutoMerge: Boolean;

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

Компонент TLabel

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

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

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

Компонент TPanel

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

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

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

На границах панели размещаются две специальные окаймляющие рамки (bevels): BevelInner и BevelOuter. При помощи комбинации белого и серого цветов они имитируют трёхмерность – приподнятость (bvRaised) или утопленность (bvLowered). Также рамки могут быть невидимыми (bvNone).

Выравнивание текста заголовка панели определяется при помощи свойства: (Pb) property Alignment: TAlignment;

Компонент TImage

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

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

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

Компонент TImageList

TImageList представляет собой контейнер для хранения множества рисунков одинакового размера. Он может быть полезен при программном создании набора инструментальных кнопок, секций управляющего заголовка, при разработке программ, использующих анимационные эффекты, и вообще там, где требуется индексированный доступ к изображениям. Воспринимает форматы BMP, ICO.

При помещении TImageList на форму это выглядит, как просто иконка. Иконки данного типа называют невидимым (невизуальным) компонентом, поскольку они невидимы во время выполнения программы. Этот компонент находится на странице Палитры компонентов Win 32.

Компонент TTimer

TTimer (таймер) служит для отсчета интервалов реального времени. Его свойство interval определяет интервал времени в миллисекундах, который должен пройти от включения таймера до наступления события onTimer. Таймер включается при установке значения True в его свойство Enabled. Раз, включенный таймер все время будет возбуждать события onTimer до тех пор, пока его свойство Enabled не примет значения False.

При помещении TTimer на форму это выглядит, как просто иконка (Рисунок 1. Иконки компонентов на форме, созданное меню, компонент TPanel). Иконки данного типа называют невидимым (невизуальным) компонентом, поскольку они не видимы во время выполнения программы. Этот компонент находится на странице Палитры компонентов System.[5]

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

Разработать игровую программу «Крестики-нолики», которая включает в себя игровую панель, состоящую из девяти клеток (панелей), образующих собой один большой квадрат. Игровая программа рассчитана на двух игроков. Противникам поочерёдно предоставляется ход, один играет символом «X», другой – «O». Выигрывает тот, кто первым заполнит ряд панелей своим символом: любой из трёх рядов по горизонтали или вертикали, либо любой ряд по диагонали.

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

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

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

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

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

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

В первую очередь пишем процедуру очистки игрового поля – clean. Сначала для надёжности выключаем таймер, меняем стиль панели на начальный (Form1.Panel2.BevelInner:=bvNone) и очищаем заголовок (Form1.Panel2.Caption:=' '). Данную операцию расписываем на все девять панелей игрового поля. В конце возобновляем работу таймера.

Далее выполняем проверку на “мухлёж”, т.е. проверяем заголовок каждой панели игрового поля. Если заголовок панели пуст, то на данную панель разрешено нажимать, если же ему присвоено какое-либо значение («X» либо «O»), то при нажатии на данную панель ничего не будет происходить:

if Panel2.Caption<>' ' then exit;

При нажатии на панель, для большей красоты, меняем её стиль (Panel2.BevelInner:=bvLowered). Встал вопрос: как сделать чередование «X» и «O»?! Всё просто, чередование делаем с помощью условного оператора If. Если Tag равен нулю, то в заголовок данной панели записываем символ “X” и присваиваем в Tag единицу, в противном случае в заголовок записываем символ “O” и присваиваем в Tag ноль.

if Form1.Tag=0

then

begin

Panel.Caption:='X';

Form1.Tag:=1;

end

else

begin

Panel.Caption:='O';

Form1.Tag:=0;

end;

Таким же образом описываем каждую панель игрового поля.

Следующим шагом написания программы является процедура проверки на выигрыш. В качестве данной процедуры используем компонент TTimer.

Когда подпрограмма сталкивается с невозможностью выполнения последующих действий, она создает объект с описанием ошибки и прерывает нормальный ход своей работы с помощью оператора Raise. Данный оператор создает объект класса EOutOfMemory (класс ошибок исчерпания памяти) и прерывает нормальное выполнение программы. Вызывающие подпрограммы могут эту ситуацию перехватить и обработать. Для этого в них организуется так называемый защищенный блок:

try

// Защищаемые от ошибок операторы

except

// Операторы обработки исключительной ситуации

end;

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

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

Проверяем стиль панелей по горизонтали, вертикали и диагонали. Если хоть один ряд имеет не начальный стиль панелей, то сравниваем заголовки панелей данного ряда. Если после проверки выясняется, что заголовки данного ряда не равны – игра продолжается, а если же выясняется, что равны, то открываем модальное окно с поздравлением (Рисунок 4. Модальное окно с поздравлением) и присваиваем «X» или «O» (в зависимости от того, каким символом заполнен данный ряд) в лейбл формы поздравления:

Form3.Label1.Caption:=Form1.Panel2.Caption;

Form3.ShowModal;

После закрытия модального окна поздравления делаем очистку игрового поля с помощью ранее описанной процедуры clean.

Данная процедура проверки применяется ко всем восьми рядам панелей, и только после этого закрываем try.

В случае если все панели игрового поля заполнены, а победитель не определился, то выводим сообщение: “Ничья, попробуйте ещё раз”)


if (Panel2.BevelInner=bvLowered) and (Panel3.BevelInner=bvLowered) and (Panel4.BevelInner=bvLowered) and (Panel5.BevelInner=bvLowered) and (Panel6.BevelInner=bvLowered) and (Panel7.BevelInner=bvLowered) and (Panel8.BevelInner=bvLowered) and (Panel9.BevelInner=bvLowered) and (Panel10.BevelInner=bvLowered)

then

begin

Form1.Timer1.Enabled:=False;

ShowMessage ('Ничья, попробуйте ещё раз!');

clean;

end;

Программирование кнопки “Новая игра” в меню программы делается в одну строку. Кнопка программируется в событии OnClick, просто указывается процедура очистки игрового поля – Clean:

procedure TForm1.NewMenuItemClick(Sender: TObject);

begin

clean;

end;

Программирование кнопки “Выход” в меню программы так же осуществляется очень просто. Кнопка программируется в событии OnClick и указывается процедура закрытия программы – Close:

procedure TForm1.N4Click(Sender: TObject);

begin

Close;

end;


Программирование кнопки “О программе” также производится в событии OnClick и открывается модальное окно “О программе”, в котором описаны краткие сведения о программе и её создателе:

procedure TForm1.AboutMenuItemClick(Sender: TObject);

begin

Form2.ShowModal;

end;

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

Файл → Новая игра – начало новой игры.

Файл → Выход – выход из программы.

Справка → О программе – Вывод дополнительной информации о программе и о её создателе [6].


Выводы и предложения

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

В мире уже создано, такое устройство, как VirtuSphere, которое является самым большим в мире устройством моделирования виртуальной реальности, ориентированным на его использование в компьютерных играх. В состав входит система распознания движений человека, которая способна точно определить положение тела, движения человека и перенести их в виртуальный мир компьютерной игры. Благодаря сети датчиков и видеокамер, охватывающих своими «чувствами» все 360 градусов поверхности сферы, система в состоянии отследить все, даже незначительные, перемещения и движения игрока, и передвинуть виртуального игрока соответствующим образом. Одним из самых распространенных применений VirtuSphere в настоящее время является ее использование для тренировки солдат и служащих специальных подразделений. Реалистичная программа-симулятор и соответствующие интерфейсные устройства способны удешевить и углубить подготовку специалистов. Симулятор окажется полезным пилоту, танкисту и военным других специальностей. Даже рядовому имеет смысл потренироваться на тренажере, который позволил бы ему познакомиться с районом боевых действий до непосредственного участия в самих боевых действиях. Виртуальная модель местности, на которую поступает с датчиков информация о реальных событиях, сильно поможет при тактическом планировании и командовании операциями. Несомненно, симуляторы могут помочь (и уже помогают) врачам при подготовке к сложной операции и, даже, при определении диагноза. Представление результатов моделирования сложных процессов в виде интерактивной мультимедийной системы (то есть, игры) может помочь физику в мысленных (точнее виртуальных) экспериментах в мире элементарных частиц или астроному, для анализа поведения галактик. Очевидна практическая польза обучающих игр, причем к разряду игр в данном случае можно отнести и такой, например, пакет, как "Уроки геометрии" от "Кирилла и Мефодия" или программу-планетарий "Distant Suns", поскольку это - вспомогательные пакеты, предназначенные скорее для досуга. Конечно, существуют и собственно обучающие игры, многие из которых предназначены для детской аудитории. Которые полезны не только содержанием самих игр; важно еще и то, что они помогают самым маленьким пользователям с интересом войти в мир современной компьютерной техники, в то время, когда для более "серьезных" продуктов они еще не готовы.

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


Список использованной литературы

 

1.  Дашко Ю.В., Заика А.А. “Основы разработки компьютерных игр” - М.: “Форум” 2009.-350с.

2.  Николаева О. “Эпидемия XXI века: телевидение, интернет и компьютерные игры”.- Ростов н/Д: Феликс, 2008.-254с.

3.  Рейнбоу В., “Компьютерные игры”. Энциклопедия. – С.: “Питер” 2005.-732с.

4.  Роллингз, Эндрю. “Проектирование и архитектура игр”: пер. с англ./ Э. Роллингз, Д. Моррис. - М.: Вильямс, 2006.- 1040с.

5.  Фаронов В.В. Учебный курс. “Delphi”.-М.: “Нолидж” 2001.-608с.

6.  Фленов М. “Библия Delphi” БХВ-Петербург, 2004.-912с.

7.  10 лучших компьютерных игр 2006 года. - http://games.art-freeman.ru/games-2006.-13.05.2010.

8.  10 лучших компьютерных игр 2007 года. - http://games.art-freeman.ru/games-2007.-13.05.2010.

9.  Википедия. Свободная энциклопедия. 2008 год в компьютерных играх.-http://ru.wikipedia.org/wiki/2008_год_в_компьютерных_играх.- 13.05. 2010.

10.  Википедия. Свободная энциклопедия. 2009 год в компьютерных играх.-http://ru.wikipedia.org/wiki/2009_год_в_компьютерных_играх.- 13.05. 2010.

11.  Википедия. Свободная энциклопедия. 2010 год в компьютерных играх.-http://ru.wikipedia.org/wiki/2010_год_в_компьютерных_играх.- 13.05. 2010.


Информация о работе «Технологии компьютерных игр»
Раздел: Информатика, программирование
Количество знаков с пробелами: 48808
Количество таблиц: 0
Количество изображений: 0

Похожие работы

Скачать
54269
7
0

... своего дальнейшего изучения с целью оптимизации учебного процесса.                 КОМПЬЮТЕР КАК СРЕДСТВО ОБУЧЕНИЯ, ВОСПИТАНИЯ И РАЗВИТИЕ УЧАЩИХСЯ.  Проблема выявления педагогически обоснованных возможностей использования компьютерной техники в качестве эффективного средства обучения, воспитания и развития учащихся на материале разных учебных предметов приобретает все ...

Скачать
37034
0
0

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

Скачать
41268
0
0

... , формирования национального самосознания граждан, создания благоприятного образа страны и ее вооруженных сил в мире при своей экономической эффективности.[5] 2. Военные компьютерные игры в боевой подготовке Вооруженных Сил армий иностранных государств на современном этапе Подавляющее большинство сценариев проведения военных операций - от диверсий и управления боевыми машинами до ведения ...

Скачать
70631
0
2

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

0 комментариев


Наверх