Лабораторные работы (2011) (Лаб3 - отчет)

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

Московский Энергетический Институт (Технический Университет)











ОТЧЕТ

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











Выполнила: Дудкина А.

Группа: А-13-07

Предмет: Теория игр и Исследование операций

Проверили: Гречкина П.В., Еремеев А.П.













2011 г.

Оглавление

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

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

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

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

Ресурсы … 4

Операции … 4

Интерфейс … 5

Выполнение … 6

Статистика … 6

  1. Приложение … 7



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

Разработать игру с помощью системы имитационного моделирования РДО.

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

На игровом поле в начальном положении – в нижнем левом углу – находится прицел. Генерируются и появляются снизу воздушные шарики четырех цветов. Цель игрока – сбить максимальное количество шариков, пока они не покинули пределы поля. За каждый сбитый шарик игроку начисляется 10 призовых очков. Игра заканчивается в двух случаях: выигрышем, если игрок набрал 100 очков, или проигрышем, если игрок не успел уложиться в заданное время. Шарики летят вертикально вверх, время появления сгенерировано рандомно, с небольшим разбросом (чтобы они не появлялись все в одно время).

Игрок может управлять прицелом с помощью клавиш-стрелок (Up – вверх, Down – вниз, Left – влево, Right – вправо), выстрел производится по нажатию клавиши Enter.



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

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

Используются 4 типа ресурсов: Таймер, Шарик, Прицел и Процесс.

Таймер: используется для непрерывного отображения анимации.

$Resource_type Таймер : permanent

$Parameters

Состояние : integer = 0

$End


Шарик: параметры X и Y необходимы для позиционирования шарика в пространстве, параметр Цвет задает цвет шарика, Состояние меняется из исходного «Виден» в «Не_виден», если игрок попадает в цель, параметр Действие определяет «Начало» или «Конец» движения шарика.


$Resource_type Шарик : permanent

$Parameters

X : integer [1..16]

Y : integer [1..7]

Цвет : (Красный, Синий, Зелёный, Жёлтый)

Состояние : (Виден, Не_виден)

Действие : (Начало, Конец)

$End


Прицел: описывает положение прицела.


$Resource_type Прицел : permanent

$Parameters

X : integer [1..10]

Y : integer [1..10]

$End


Ресурс Процесс: параметр Пристрелено_шариков задается для начисления очков за пристреленный шарик.


$Resource_type Процесс : permanent

$Parameters

Пристрелено_шариков : integer [0..4]

$End



Ресурсы

Ниже описаны создающиеся ресурсы с соответствующими начальными параметрами: Таймер в начальном (нулевом) состоянии, ресурс Процесс с нулевым количеством пристреленных шариков, 4 Шарика (красный, желтый, зеленый и синий) и Прицел.

$Resources

Экземпляр_Таймер : Таймер 0

Экземпляр_Процесс: Процесс 0

Экземпляр_красный_шарик : Шарик 2 4 Красный Виден Начало

Экземпляр_жёлтый_шарик : Шарик 6 1 Жёлтый Виден Начало

Экземпляр_зелёный_шарик : Шарик 4 2 Зелёный Виден Начало

Экземпляр_синий_шарик : Шарик 8 3 Синий Виден Начало

Экземпляр_Прицел: Прицел 1 1

$End



Операции

Реализовано 5 клавиатурных операций: Пристрелить_шарик по нажатию клавиши Enter и 4 Перемещения по нажатию стрелок Lift, Right, Up и Down; 6 операций реализовывают создание, движение и исчезновение шарика при успешном выстреле в него; наконец Таймер для отображения работы программы в текущий момент.

$Operations

Таймер : Образец_Таймер

Генерация_красного_шарика : Образец_Генерация_красного_шарика

Генерация_жёлтого_шарика : Образец_Генерация_жёлтого_шарика

Генерация_синего_шарика : Образец_Генерация_синего_шарика

Генерация_зелёного_шарика : Образец_Генерация_зелёного_шарика

Шарик_улетает : Образец_Шарик_улетает

Пристрелить_шарик : Образец_Пристрелить_шарик 'RETURN'

Шар_не_виден : Образец_Шарик_не_виден

Перемещение_Влево : Образец_Перемещение_Влево 'LEFT'

Перемещение_Вправо : Образец_Перемещение_Вправо 'RIGHT'

Перемещение_Вверх : Образец_Перемещение_Вверх 'UP'

Перемещение_Вниз : Образец_Перемещение_Вниз 'DOWN'

$End






Интерфейс

Использован один кадр анимации: поле, на котором находятся шарики и прицел.

На скриншоте ниже видно начальное положение прицела и шарики.



Набрано 60 очков при застреливании 6 шариков:



Непосредственно застреливание шарика:

Использовано 6 изображений: 4 шарика, прицел и фон.



Выполнение

Объект прогона:

Model_name = Game

Resource_file = Game

OprIev_file = Game

Statistic_file = Game

Results_file = Game

Trace_file = Game

Frame_file = Game

Frame_number = 1

Show_mode = Animation

Show_rate = 100.0


Terminate_if Time_now >= 1.0 or Экземпляр_Процесс.Пристрелено_шариков=100


Условия завершения прогона: если время прогона превышает заданное значение или набрано необходимое количество очков.



Статистика

Анализируется статистика для двух параметров: количества сбитых шариков и времени, затраченного на игру.

$Results

Сбито_шариков : get_value (Экземпляр_Процесс.Пристрелено_шариков)/10

Затрачено_времени : get_value Time_now

$End


Пример выданных результатов:


Сбито_шариков 10

Затрачено_времени 0.68799



Приложение

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


// таймер для отображения работы программы в текущий момент

$Pattern Образец_Таймер : irregular_event

$Relevant_resources

_Таймер : Экземпляр_Таймер Keep

$Time = 0.001

$Body

_Таймер

Convert_event

Состояние set Перевести_Таймер(_Таймер.Состояние)

$End


// перемещение влево

$Pattern Образец_Перемещение_Влево : keyboard

$Relevant_resources

_Процесс : Процесс NoChange NoChange

_Прицел : Прицел Keep NoChange

$Time = 0.0

$Body

_Процесс

Choice NoCheck

first

_Прицел

Choice from

_Прицел.X > 1 and

_Процесс.Пристрелено_шариков < 100

first

Convert_begin

X set _Прицел.X - 1

$End


// перемещение вправо

$Pattern Образец_Перемещение_Вправо : keyboard

$Relevant_resources

_Процесс : Процесс NoChange NoChange

_Прицел : Прицел Keep NoChange

$Time = 0.0

$Body

_Процесс

Choice NoCheck

first

_Прицел

Choice from

_Прицел.X < 16 and

_Процесс.Пристрелено_шариков < 100

first

Convert_begin

X set _Прицел.X + 1

$End


// перемещение вверх

$Pattern Образец_Перемещение_Вверх : keyboard

$Relevant_resources

_Процесс : Процесс NoChange NoChange

_Прицел : Прицел Keep NoChange

$Time = 0.0

$Body

_Процесс

Choice NoCheck

first

_Прицел

Choice from

_Прицел.Y < 7 and

_Процесс.Пристрелено_шариков < 100

first

Convert_begin

Y set _Прицел.Y + 1

$End


// перемещение вниз

$Pattern Образец_Перемещение_Вниз : keyboard

$Relevant_resources

_Процесс : Процесс NoChange NoChange

_Прицел : Прицел Keep NoChange

$Time = 0.0

$Body

_Процесс

Choice NoCheck

first

_Прицел

Choice from

_Прицел.Y > 1 and

_Процесс.Пристрелено_шариков < 100

first

Convert_begin

Y set _Прицел.Y - 1

$End


// генерация красного шарика

$Pattern Образец_Генерация_красного_шарика : irregular_event trace

$Relevant_resources

_шарик : Экземпляр_красный_шарик Keep

$Time = Рандом(0.08 , 0.14)

$Body

_шарик

Convert_event

X set 2

Y set 1

Состояние set Виден

$End


// генерация жёлтого шарика

$Pattern Образец_Генерация_жёлтого_шарика : irregular_event trace

$Relevant_resources

_шарик : Экземпляр_жёлтый_шарик Keep

$Time = Рандом(0.07 , 0.13)

$Body

_шарик

Convert_event

X set 6

Y set 1

Состояние set Виден

$End


// генерация синего шарика

$Pattern Образец_Генерация_синего_шарика : irregular_event trace

$Relevant_resources

_шарик : Экземпляр_синий_шарик Keep

$Time = Рандом(0.06 , 0.12)

$Body

_шарик

Convert_event

X set 8

Y set 1

Состояние set Виден

$End


// генерация зеленого шарика

$Pattern Образец_Генерация_зелёного_шарика : irregular_event trace

$Relevant_resources

_шарик : Экземпляр_зелёный_шарик Keep

$Time = Рандом(0.09 , 0.16)

$Body

_шарик

Convert_event

X set 4

Y set 1

Состояние set Виден

$End


// движение шарика вверх

$Pattern Образец_Шарик_улетает: operation trace

$Relevant_resources

_шарик : Шарик Keep Keep

$Time = 0.01

$Body

_шарик

Choice from

_шарик.Действие = Начало and

_шарик.Состояние = Виден and

_шарик.Y < 8

first

Convert_begin

Действие set Конец

Convert_end

Y set _шарик.Y + 1

Действие set Начало

$End


// убиение шарика и начисление очков

$Pattern Образец_Пристрелить_шарик : keyboard //trace

$Relevant_resources

_Прицел : Прицел NoChange NoChange

_шарик : Шарик Keep Keep

_Процесс : Процесс Keep NoChange

$Time = 0.0

$Body

_Прицел

Choice NoCheck

first

_шарик

Choice from

_шарик.X = _Прицел.X and

_шарик.Y = _Прицел.Y

first

Convert_begin

Действие set Конец

X set 2

Y set 1

Convert_end

Состояние set Не_виден

Действие set Начало

_Процесс

Choice from

_Процесс.Пристрелено_шариков < 100

first

Convert_begin

Пристрелено_шариков set Процесс.Пристрелено_шариков + 10

$End


// исчезновение шарика

$Pattern Образец_Шарик_не_виден : rule trace

$Relevant_resources

_шарик : Шарик Keep

$Body

_шарик

Choice from

// _шарик.Y = 7 or

_шарик.Y = 8

first

Convert_rule

Состояние set Не_виден

Y set 1

$End




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

Файл
17316-1.rtf
94486.rtf
26863.rtf
169560.rtf
55208.rtf




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