МЕНЮ


Фестивали и конкурсы
Семинары
Издания
О МОДНТ
Приглашения
Поздравляем

НАУЧНЫЕ РАБОТЫ


  • Инновационный менеджмент
  • Инвестиции
  • ИГП
  • Земельное право
  • Журналистика
  • Жилищное право
  • Радиоэлектроника
  • Психология
  • Программирование и комп-ры
  • Предпринимательство
  • Право
  • Политология
  • Полиграфия
  • Педагогика
  • Оккультизм и уфология
  • Начертательная геометрия
  • Бухучет управленчучет
  • Биология
  • Бизнес-план
  • Безопасность жизнедеятельности
  • Банковское дело
  • АХД экпред финансы предприятий
  • Аудит
  • Ветеринария
  • Валютные отношения
  • Бухгалтерский учет и аудит
  • Ботаника и сельское хозяйство
  • Биржевое дело
  • Банковское дело
  • Астрономия
  • Архитектура
  • Арбитражный процесс
  • Безопасность жизнедеятельности
  • Административное право
  • Авиация и космонавтика
  • Кулинария
  • Наука и техника
  • Криминология
  • Криминалистика
  • Косметология
  • Коммуникации и связь
  • Кибернетика
  • Исторические личности
  • Информатика
  • Инвестиции
  • по Зоология
  • Журналистика
  • Карта сайта
  • Разработка игровой программы Морской бой

    Палитры компонентов 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. На этом

    файле следует выполнить двойной щелчок левой клавишей манипулятора мышь.

    Проект программы состоит из файла проекта, содержащего необходимые

    конструкции для исполнения, и двух модулей Unit1 и Unit2 (6, 7, 8).

    Модуль Unit2 содержит форму AboutBox, и предназначен для вывода окна,

    содержащего информацию о программе и об авторе (рис.1).

    [pic]

    Рис.1. Информация о программе

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

    необходимые для работы программы процедуры.

    После запуска программы на экран выводится основная форма Form1

    (рис.2), на которой расположены следующие объекты:

    1. Главное меню

    2. Игровое поле компьютера

    3. Игровое поле человека

    4. Кнопки подтверждения / отмены хода

    5. Строка состояния

    [pic]

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

    Игра, т.е. работа программы, начинается с выбора в главном меню пункта

    «Игра», в котором содержится подпункт «Новая». После выбора этого

    подпункта, или нажатия клавиши F2, происходит выполнение процедуры

    N11Click. Эта процедура предназначена для расстановки кораблей на игровых

    полях случайным образом (Приложение 1).

    Первоначально на форму выводится сообщение «Ваш ход» (блок 2). Далее

    переменным P и t1 присваиваются значения True, и инициализируется генератор

    случайных чисел (блок 3). Затем организуется цикл с заданным количеством

    повторений по переменной U от 1 до 2 (блок 4). В этом цикле, в свою очередь

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

    которых происходит обнуление элементов массива записи (блоки 5, 6 и 7).

    После этого выполняется операция присваивания m[u].k:=20 (блок 8). Это –

    общее количество ячеек, которое занимают все корабли одного игрового поля.

    Далее организуются два вложенных цикла, первый с параметром I от 4 до

    1 с шагом –1, второй с параметром j от 1 до 5-I с шагом 1 (блоки 9 и 10). В

    этих циклах выполняется расстановка кораблей случайным образом. Внутри этих

    циклов организуется еще один цикл типа «До» с условием окончания цикла

    t=True (блок 32). В теле цикла происходит операция присваивания t:=true

    (блок 11), и проверяется многовариантное условие, чему равно значение

    выражения random(2), сгенерированное случайное число, нулю или единице.

    Если это выражение рано нулю (блок 12), будет происходить установка корабля

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

    образом координаты X1 и Y1 (блок 13), организуется цикл с заданным числом

    повторений по переменной X (блок 14), в котором проверяется условие

    неравенства нулю ячейки с координатами X,Y1 (блок 15), и если это так, то

    переменной t присваивается значение False (блок 16).

    И, в этом же цикле проверяется условие истинности переменной t. Если

    переменная t=True (блок 17), то происходит пропуск некоторых ячеек (блок

    18), и установка ячеек корабля (значение ячейки равно 2) циклически (блоки

    19 и 20). После этого опять происходит пропуск некоторых ячеек (значение их

    равно 1) (блок 21). На этом цикл завершается (блок 14), и проверяется

    следующее значение выражения random(2). Если это выражение равно единице

    (блок 22), то происходит установка корабля по вертикали. Все выполняемые

    действия этой ветки алгоритма аналогичны вышеописанным, с применением

    циклов по переменной Y (блоки 23 - 31).

    После выполнения этих действий проверяется условие окончания цикла

    «До» (блок 32), и завершаются два вложенных цикла по переменным I и J

    (блоки 9 и 10).

    Далее, происходит визуальная расстановка кораблей на игровом поле

    человека. Для этого организуются два вложенных цикла по переменным I и J со

    значениями от 1 до 10 (блоки 33 и 34). В циклах проверяется условие

    заполнения ячейки поля клеткой корабля m[1].a[i,j]=2 (блок 35), и если это

    логическое выражение истинно, то переменной r присваивается название файла,

    содержащего картинку корабля (блок 37), иначе – пустую картинку (блок 36).

    Далее, с помощью двух процедур Case1 происходит прорисовка ячеек на игровом

    поле (блоки 38 и 39).

    Последние действия в этой процедуре – вывод на панель строки состояния

    значений количества выстрелов и попаданий (блок 40), а также происходит

    присваивание переменным следующих значений: tm1:=Time и new:=True.

    Процедура Case1, про которую было сказано выше, выполняет следующие

    действия (Приложение 2): при обращении к определенной ячейки игрового поля

    человека или компьютера происходит прорисовка ячейки специальной картинкой,

    в зависимости от значения переменной r. В процедуре происходит

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

    растрового файла в компонент TSpeedButton (блоки 2 - 401).

    После того, как все корабли были расставлены на игровом поле,

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

    . щелчка левой клавишей манипулятора мышь по ячейки игрового поля

    компьютера;

    . выбора из пункта «Игра» главного меню подпункта «Выход»;

    . выбора из пункта «Помощь» главного меню подпункта «О программе»;

    . выбора из пункта «Помощь» главного меню подпункта «Правила игры»

    При описанном первым событии происходит обращение к процедуре

    SpeedButton101Click (Приложение 3). В теле процедуры сразу проверяется

    переменная t1. Если t1 не равна значению True (блок 2), то процедура

    завершает свою работу, иначе происходит присвоение переменной S имени

    объекта игрового поля, по которому производится щелчок, из имени объекта

    удаляется подстрока «SpeedButton», оставшийся номер объекта преобразуется в

    число (блок 3). После этого проверяется условие, делится ли это число на 10

    с остатком (блок 4). Если это так, то переменной J присваивается значение I-

    90 (блок 6), иначе J=I-100 (блок 5). Далее, проверяется делимость числа J

    на 10 без остатка (блок 7). Если это условие выполняется, то переменной U

    присваивается значение 10 (блок 9), иначе вычисляется остаток от деления

    переменной J на 10 (блок 8). Полученное значение переменной U проверяется с

    использованием многовариантного выбора, и в соответствии со значением

    переменной S присваивается одна из букв русского алфавита, от А до К (блоки

    10 - 29). Потом проверяется условие, был ли щелчок на данной ячейке (блок

    30), если щелчка не было, то осуществляется переход на положительную ветку

    алгоритма, в которой, во-первых, осуществляется вывод в ячейку картинки,

    показывающей сделанный ход (блок 31), во-вторых, происходит вывод над

    игровым полем человека кода произведенного хода (блок 32), и в-третьих,

    переменной t1 присваивается значение False, и кнопки подтверждения / отмены

    хода становятся доступными (блок 33). На этом процедура завершает свою

    работу (блок 34).

    При подтверждении сделанного хода, т.е. при щелчке на кнопке OK,

    происходит вызов процедуры BitBtn1Click (Приложение 4), которая производит

    так называемый выстрел, и в соответствии с этим, отмечает необходимые

    ячейки игровых полей.

    После вызова процедуры происходит приращение переменной KL на единицу

    (блок 2), и проверяется ячейка игрового поля (блок 3). Если в ячейке есть

    клетка корабля, то выводится соответствующая картинка с помощью процедуры

    Case1 (блок 4), уменьшается счетчик количества клеток кораблей, и

    соответствующая клетка помечается как использованная (значение равно 3)

    (блок 5). Далее, происходит проверка количества «живых» клеток кораблей.

    Если это количество равно нулю (блок 6), то выводится сообщение «Победа!»

    (блок 7), переменным P и t1 присваивается значение False, кнопки

    подтверждения / отмены хода становятся неактивными (блок 8), и процедура

    завершает свою работу (блок 19).

    Если количество «живых» клеток кораблей не равно нулю (блок 6), то

    выводится сообщение «Попал!» (блок 9), и переменной P присваивается

    логическое значение False (блок 10). При этом происходит объединение этой

    ветки алгоритма с веткой «Нет» блока условия 3 (пустая клетка), в которой

    выводится сообщение «Промах» (блок 11), соответствующая ячейка заполняется

    необходимым изображением с помощью процедуры Case1 (блок 12), ячейка

    помечается, как использованная (значение равно 3), и переменной P

    присваивается логическое значение True (блок 13).

    Далее, переменной t1 присваивается логическое значение True,

    вычисляется результативность S (блок 14). На панель 2 строки состояния

    выводятся значения количества выстрелов, количества попаданий и

    результативность игрока (блок 15), кнопки подтверждения / отмены хода

    становятся неактивными (блок 16), и проверяется значение переменной p (блок

    17). Если это значение равно True, то происходит вызов процедуры Komp (блок

    18), которая производит ход компьютера.

    Процедура Komp (Приложение 5) начинается с двух вложенных циклов типа

    «До», в которых вычисляются координаты выстрела случайным образом (блок 2).

    После этого проверяется условие завершения внутреннего цикла (блок 3).

    Далее происходит многовариантная проверка координаты по вертикали В1 от 1

    до 10, в результате которой переменной S присваивается определенное

    значение, лежащее в промежутке от А до К (блоки 4 - 23).

    Выводится код хода компьютера над игровым полем (блок 24), и

    соответствующим образом заполняется ячейка игрового поля, переменной PK

    присваивается необходимое логическое значение (блоки 25 - 29).

    Далее, происходит приращение количества выстрелов, вычисляется

    результативность (S) (блок 30), и на панель 0 строки состояния выводятся

    значения количества выстрелов, количества попаданий, и результативность

    (блок 31).

    Потом, проверяется условие завершения внешнего цикла «До» (блок 32), и

    если условие выполняется, то процедура заканчивает свою работу (блок 33).

    При отмене сделанного пользователем хода, т.е. при щелчке на кнопку

    NO, происходит вызов процедуры BitBtn2Click (Приложение 6). В этой

    процедуре очищается ячейка игрового поля с помощью процедуры Case1 (блок

    2), переменной t1 присваивается логическое значение True, и кнопки

    подтверждения / отмены хода становятся неактивными (блок 3).

    В этом же приложении приведена процедура Timer1Timer (Приложение 6),

    которая основана на невизуальном компоненте Timer, и рассчитывает время

    игры. Здесь, если выполняется условие new=True (блок 2), то на панель 1

    строки состояния выводится значение времени игры (блок 3).

    Все процедуры находится в модуле Unit1, текст которого приведен в

    приложении 7.

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

    Справочная информация (правила игры) реализована с помощью программы

    Help Development Studio. Эта программа позволяет создать файл справочной

    информации для Windows, используя текст формата Rich Edit Text. В процессе

    работы этой программы создается файл проекта справки *.hmp, который

    впоследствии может быть откомпилирован в файл справки (*.hlp).

    В данной курсовой работе был создан файл проекта справки morboy.hmp,

    который был откомпилирован с помощью программы Help Development Studio,

    Microsoft Help WorkShop, входящей в состав Borland Delphi 6.0, и

    компилятора HcRtf.exe в файл morboy.hlp (рис.6).

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

    После запуска программы на экран выводится основное окно программы

    (рис.2). Необходимо вызвать главное меню и выбрать из пункта «Игра»

    подпункт «Новая» (рис.3).

    [pic]

    Рис.3. Программа с открытым главным меню

    После выбора происходит расстановка кораблей, и игра начинается

    (рис.4).

    [pic]

    Рис.4. Игра

    Игроку предоставляется право первого хода. Ход осуществляется путем

    щелчка левой кнопкой мыши на игровом поле. После щелчка по клетке поля на

    ней появляется изображение мины (рис.4), и игроку предоставляется право

    подтвердить или отменить ход с помощью кнопок OK и No. После подтверждения

    в ячейке появляется изображение результата хода, а в нижней левой части

    окна появляется сообщение о результате: «Попал» (рис.4) или «Промах!». Если

    был произведен результативный выстрел, то игроку дается право внеочередного

    хода. В противном случае право хода передается компьютеру. Победа

    присуждается за все потопленные корабли, и на этом игра заканчивается

    (рис.5).

    Горячие клавиши, применяемые при работе программы:

    1. Alt+И – Вызов пункта «Игра» главного меню

    2. F2 – Новая игра

    3. F10 – Выход в систему

    4. Alt+N – Отмена хода

    [pic]

    Рис.5. Победа в игре

    Если в процессе игры пользователю необходимо обратиться к правилам, то

    с помощью пункта «Помощь» главного меню можно вызвать подпункт «Правила

    игры». В результате появится окно справки, показанное на рис.6.

    [pic]

    Рис.6. Окно справки

    ЗАКЛЮЧЕНИЕ

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

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

    компонентов программной среды Borland Delphi 6.0, которые использовались

    при создании игры.

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

    полученного программного продукта:

    1. Низкий исскуственный интеллект, т.е. ход компьютера осуществляется

    случайным образом, что делает маловероятным победу компьютера;

    2. При полном потоплении корабля это никак не отражается;

    3. Невозможность возврата на несколько ходов назад;

    4. Работоспособность приложения только в среде Windows;

    5. Невозможность ручной расстановки кораблей игрока.

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

    продукта:

    1. Есть возможность отменить неверно сделанный ход с помощью кнопок

    подтверждения / отмены;

    2. Создана интерактивная справка с правилами игры;

    3. Программный продукт малотребователен к системным ресурсам компьютера.

    Минимальная конфигурация: процессор – не ниже Pentium, оперативная

    память – не ниже 16 Mb, операционная система – Windows 95 / 98/ Me /

    NT / 2000 / XP.

    В результате учета всех сделанных выше замечаний возможно улучшение

    созданного программного продукта, на которое потребуется минимум изменений

    исходного кода программы.

    СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

    1. Журнал Компьютер Пресс, N1, 1996

    2. Дворак Дж. 350 игр для IBM PC. –С-Пб.:Пергамент, 1994, -318с.

    3. Фаронов В.В. Delphi 4. Учебный курс. –М.: Нолидж, 1999. -447с.

    4. Дарахвелидзе П.Г., Марков Е.П. Delphi – среда визуального

    программирования. –СПб.:BHV-Санкт-Петербург, 1996. -352с.

    5. Епанешников А., Епанешников В. Программирование в среде Delphi 2.0.

    Учебное пособие. В 4-х частях. Ч.1. Описание среды. –М.:ДИАЛОГ-МИФИ,

    1997. -235с.

    6. Епанешников А., Епанешников В. Программирование в среде Delphi 2.0.

    Учебное пособие. В 4-х частях. Ч.2. Язык Object Pascal 9.0. –М.:ДИАЛОГ-

    МИФИ, 1997. -319с.

    7. Фаронов В.В. Турбо Паскаль 7.0. Начальный курс. Учебное пособие.

    –М.:Нолидж, 1997. -616с.

    8. Фаронов В.В. Турбо Паскаль 7.0. Практика программирования. Учебное

    пособие. –М.:Нолидж, 1997. -432с.

    -----------------------

    [pic]

    [pic]

    [pic]

    [pic]

    [pic]

    [pic]

    [pic]

    Страницы: 1, 2, 3


    Приглашения

    09.12.2013 - 16.12.2013

    Международный конкурс хореографического искусства в рамках Международного фестиваля искусств «РОЖДЕСТВЕНСКАЯ АНДОРРА»

    09.12.2013 - 16.12.2013

    Международный конкурс хорового искусства в АНДОРРЕ «РОЖДЕСТВЕНСКАЯ АНДОРРА»




    Copyright © 2012 г.
    При использовании материалов - ссылка на сайт обязательна.