Лабораторные работы (2008) (Отчет лаб 3)

Посмотреть архив целиком

Московский Энергетический Институт

(технический университет)








Отчет по лабораторной работе №3

«РДО»

по дисциплине ТИ и ИО








Выполнил:

Студент гр. А-13-04

Соколюк В.В.






















Москва 2008

Содержание:


1.Постановка задачи……………………………………………………3

2.Описание предметной области………………………………………3

3.Описание имитационной модели……………………………………3

3.1.Типы ресурсов………………………………………………..3

3.2.Ресурсы…………………………………………………….…3

3.3.Образцы операций……………………………………….…..4

3.4.Операции……………………………………………….…….7

3.5.Анимация……………………………………………….…….8

3.6.Прогон………………………………………………….……..8



































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


Реализовать в системе имитационного моделирования РДО дуэль, в которой участвуют два персонажа – маг и воин.


2. Описание предметной области.


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

При уровне здоровья мага больше чем 2/3 маг наносит обычные удары, при уровне от 1/3 до 2/3 здоровье мага увеличивается на половину нанесенного урона противнику, при уровне менее 1/3 сила удара мага увеличивается при уменьшении его здоровья.

При уменьшении уровня здоровья воина до 1/3, он использует умение “неуязвимость”. Это умение воин может использовать только один раз за дуэль. Во время неуязвимости противник не наносит воину удары. За время действия неуязвимости воин успевает нанести 6 ударов.

Дуэль заканчивается при достижении уровня здоровья одного из персонажей 0 единиц.


3. Описание имитационной модели.


Типы ресурсов.

В модели присутствует один тип ресурсов ТипПВП, описывающий все составляющие дуэли.


$Resource_type ТипПВП : permanent

$Parameters

состояние_игры : (ожидание, победа_мага, победа_воина, борьба) = борьба

ХП_мага : integer [-200..1000] = 1000

ХП_воина : integer [-600..3000] = 3000

удар_мага : integer [0..200] = 0

уровень_ХП : (фулл, две_трети, треть) = фулл

проверка : integer [0..1] = 1

ульта : integer [0..1] = 0

исп_ульты : integer [0..1] = 0

состояние_мага : (жду, бью, удар) = жду

состояние_воина : (жду, бью, удар) = жду

прорисовка_мага : integer [0..10] = 1

прорисовка_воина : integer [0..10] = 1

конец : integer [0..1] = 0

$End



Ресурсы.


В модели используется один ресурс «дуэль»


$Resources

дуэль : ТипПВП trace борьба 1000 3000 0 фулл 1 0 0 жду жду 1 1 0

$End


Образцы операций.

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


$Pattern О_конечное_состояние : rule

$Relevant_resources

_ПВП : ТипПВП Keep

$Body

_ПВП

Choice from _ПВП.состояние_игры = победа_мага or _ПВП.состояние_игры = победа_воина

first

Convert_rule

конец set 1

$End


Образец операции, выполняющейся при победе мага


$Pattern О_победа_мага : operation

$Relevant_resources

_ПВП : ТипПВП Keep Keep

$Time = 0.01

$Body

_ПВП

Choice from _ПВП.состояние_игры = борьба and

_ПВП.ХП_воина < 1 and

_ПВП.состояние_мага = жду

first

Convert_begin

состояние_игры set ожидание

прорисовка_мага set 3

прорисовка_воина set 0

Convert_end

состояние_игры set победа_мага

$End


Образец операции, выполняющейся при победе воина аналогичен.

Образец операции, выполняющейся при достижении воином 1/3 здоровья


$Pattern О_ульта : operation

$Relevant_resources

_ПВП : ТипПВП Keep Keep

$Time = время_ульты

$Body

_ПВП

Choice from _ПВП.ХП_воина < 1000 and _ПВП.состояние_воина = жду and _ПВП.исп_ульты = 0

first

Convert_begin

ульта set 1

исп_ульты set 1

Convert_end

ульта set 0


$End


Образец операции, проверяющей уровень здоровья мага


$Pattern О_проверка_хп : rule

$Relevant_resources

_ПВП : ТипПВП Keep

$Body

_ПВП

Choice from _ПВП.проверка = 0

first

Convert_rule

уровень_ХП set Выбор_ХП(_ПВП.ХП_мага)

прорисовка_мага set 1

проверка set 1

$End


Образец операции, отвечающей за прорисовку удара мага.


$Pattern О_удар1 : operation

$Relevant_resources

_ПВП : ТипПВП Keep Keep

$Time = время_каста / 3

$Body

_ПВП

Choice from _ПВП.состояние_мага = удар

first

Convert_begin

прорисовка_мага set 2 * Сравнение(_ПВП.прорисовка_мага)

состояние_мага set бью

Convert_end

прорисовка_мага set 1 * Сравнение(_ПВП.прорисовка_мага)

состояние_мага set жду


$End

Образец операции, отвечающей за прорисовку удара воина аналогичен.

Образцы операций, выполняющих удары мага


$Pattern О_удар_мага_тип1 : operation

$Relevant_resources

_ПВП : ТипПВП Keep Keep

$Time = время_каста

$Body

_ПВП

Choice from _ПВП.состояние_игры = борьба and

_ПВП.ульта = 0 and

_ПВП.уровень_ХП = фулл and

_ПВП.состояние_мага = жду

first

Convert_begin

состояние_мага set бью

Convert_end


ХП_воина set _ПВП.ХП_воина - урон(125, 25) * Сравнение(_ПВП.прорисовка_мага)

проверка set 0

состояние_мага set удар


$End


$Pattern О_удар_мага_тип2 : operation

$Relevant_resources

_ПВП : ТипПВП Keep Keep

$Time = время_каста

$Body

_ПВП

Choice from _ПВП.состояние_игры = борьба and

_ПВП.ульта = 0 and

_ПВП.уровень_ХП = две_трети and

_ПВП.состояние_мага = жду

first

Convert_begin

состояние_мага set бью

Convert_end

удар_мага set урон(125, 25) * Сравнение(_ПВП.прорисовка_мага)

ХП_воина set _ПВП.ХП_воина - _ПВП.удар_мага

ХП_мага set _ПВП.ХП_мага + _ПВП.удар_мага / 2

проверка set 0

состояние_мага set удар


$End


$Pattern О_удар_мага_тип3 : operation

$Relevant_resources

_ПВП : ТипПВП Keep Keep

$Time = время_каста

$Body

_ПВП

Choice from _ПВП.состояние_игры = борьба and

_ПВП.ульта = 0 and

_ПВП.уровень_ХП = треть and

_ПВП.состояние_мага = жду

first

Convert_begin

состояние_мага set бью

Convert_end

ХП_воина set _ПВП.ХП_воина - урон(125, 25) - (400 - _ПВП.ХП_мага)

проверка set 0

состояние_мага set удар


$End


Образец операции, выполняющей удар воина


$Pattern О_удар_воина : operation

$Relevant_resources

_ПВП : ТипПВП Keep Keep

$Time = время_удара

$Body

_ПВП

Choice from _ПВП.состояние_игры = борьба and

_ПВП.состояние_воина = жду

first

Convert_begin

состояние_воина set бью

Convert_end

ХП_мага set _ПВП.ХП_мага - урон_в(50, 15) * Сравнение(_ПВП.прорисовка_воина)

состояние_воина set удар


$End


Операции.


$Operations

Опр_конечное_состояние : О_конечное_состояние

Опр_победа_мага : О_победа_мага

Опр_победа_воина : О_победа_воина

Опр_проверка_хп : О_проверка_хп

Опр_ульта : О_ульта

Опр_удар1 : О_удар1

Опр_удар2 : О_удар2

Опр_удар_мага_тип1 : О_удар_мага_тип1

Опр_удар_мага_тип2 : О_удар_мага_тип2

Опр_удар_мага_тип3 : О_удар_мага_тип3

Опр_удар_воина : О_удар_воина

$End


Анимация.

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


$Frame Кадр_1

$Back_picture = <255 255 255> fonbmp

Show

text [100, 100, 70, 20, <255 255 255>, <255 50 50>, < дуэль.ХП_мага]

text [640, 100, 70, 20, <255 255 255>, <255 50 50>, > дуэль.ХП_воина]


Show_if дуэль.ульта = 1

text [500, 250, 200, 20, transparent, <255 128 64>, < 'НЕУЯЗВИМОСТЬ!!!']


Show_if дуэль.прорисовка_мага = 1 or дуэль.прорисовка_мага = 3

bitmap [150, 300, mag1bmp, mag1mask]

Show_if дуэль.прорисовка_мага = 2

bitmap [230, 200, mag2bmp, mag2mask]

Show_if дуэль.прорисовка_воина = 1 or дуэль.прорисовка_воина = 3

bitmap [460, 280, tank1bmp, tank1mask]

Show_if дуэль.прорисовка_воина = 2

bitmap [400, 280, tank2bmp, tank2mask]

Show_if дуэль.прорисовка_мага = 3

text [200, 250, 200, 20, transparent, <255 70 70>, < 'ПОБЕДИТЕЛЬ!!!']

Show_if дуэль.прорисовка_воина = 3

text [500, 250, 200, 20, transparent, <255 70 70>, < 'ПОБЕДИТЕЛЬ!!!']


$End


Прогон.


Model_name = labka


Resource_file = labka

OprIev_file = labka

Statistic_file = labka

Results_file = labka

Trace_file = labka

Frame_file = labka

Frame_number = 1

Show_mode = Animation

Show_rate = 10


Terminate_if дуэль.конец = 1


Случайные файлы

Файл
21326-1.rtf
128518.doc
ref-20957.doc
115885.rtf
19000-1.rtf




Чтобы не видеть здесь видео-рекламу достаточно стать зарегистрированным пользователем.
Чтобы не видеть никакую рекламу на сайте, нужно стать VIP-пользователем.
Это можно сделать совершенно бесплатно. Читайте подробности тут.