Лабораторные работы (2009) (РДО)

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

МОСКОВСКИЙ ЭНЕРГЕТИЧЕСКИЙ ИНСТИТУТ

(ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ)













Лабораторная работа №3























Выполнили Леонов В.

Федосюк Е.

А-13-05







2009

Содержание:

Содержание: 1

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

Общее описание предметной области, схема и правила поведения объектов. 3

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

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

Ресурсы 5

Операции 5

Интерфейс. 5

Приложение. 6



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


Промоделировать игру «Спейс» в системе РДО.

Смысл игры: Космический корабль, умеющий двигаться только вправо или влево, именуемый кораблем, должен ловить объекты – бочки с топливом или же ящики с патронами, которые двигаются сверху вниз. Движение корабля на игровом поле - являются реакцией на нажатия пользователем на соответствующие клавиши клавиатуры – стрелки вправо или влево. Если корабль поймает кометы или же астероид, то у него уменьшится количество жизней на одну соответственно. Если корабль ловит топливные бочки или ящики с патронами, то увеличивается количество пойманных объектов, соответственно на 1. Лимит жизней - 5.


Общее описание предметной области, схема и правила поведения объектов.


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


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


- ящик корабль двигается только вправо или влево;

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

- игру можно начать заново в любой момент времени, точно так же как и выйти из игры;


Для начала работы модели необходимо запустить файл lab3.smr.

Для завершения работы модели в любое время пользователю необходимо воспользоваться клавишей N.

Файл lab3.smr приложен в конце отчета.


Пример игрового поля представлен ниже:



На рисунке:

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


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


Стрелка влево – движение корабля влево, если это возможно.

Стрелка вправо – движение корабля вправо, если это возможно.

N – выход из игры осуществляется в любое время.

Y – начать заново игру.

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

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

Эти ресурсы описывают саму игру и все её составляющие.


$Resource_type Игры : permanent

$Parameters

колво_камней : integer = 100

колво_поймал : integer = 0

колво_жизни : integer = 5

корабль : integer [0..5] = 3

объект_тип : integer [0..2] = 0 //0 - собираем ; 1 - не собираем 2- финиш

объект_х : integer[0..6] = 2

объект_у : integer[0..11] = 0

объект_тип_рис : integer [0..2] = 0

$End

Ресурсы

В модели имеется единственный ресурс – игра (типа Игры).

$Resources
Игра_1 : Игры
trace * * * * * * * *

$End

Сами операции

Сами операции соответствуют образцам один к одному.

корабль_летит_влево : Образец_Сходить_Влево 'LEFT'

корабль_летит_вправо :Образец_Сходить_Вправо 'RIGHT'

заново : Образец_Заново 'Y'

завершить :Образец_Завершить 'N'

корабль_ловит : Образец_корабль_ловит

корабль_погибает : Образец_корабль_погибает

нет_жизни : Образец_Нет_жизни

объект_падает : Образец_Объект_падает

объект_сначала : Образец_Рестарт_объект

Интерфейс.

Интерфейс состоит из одного карда анимации. В текстовом поле отображается состоянии игры – количество объектов пойманных и оставшихся и количество жизней.


В конце игры в зависимости от ее исхода выдается сообщение о выигрыше



или проигрыше





Файл PAT

$Pattern Образец_Сходить_Влево : keyboard

$Relevant_resources

_игра : Игра_1 Keep Keep

$Time = 0.0

$Body

_игра

Choice from

_игра.корабль > 0 and

_игра.объект_у > 0 and

( (_игра.объект_х <> _игра.корабль) or

((_игра.объект_х = _игра.корабль) and (_игра.объект_у < 9) and (_игра.объект_тип = 0)) or

((_игра.объект_х = _игра.корабль) and (_игра.объект_у < 10) and (_игра.объект_тип = 1))

) and

_игра.колво_камней > 0

first

Convert_begin

корабль set _игра.корабль - 1

объект_у set _игра.объект_у - 1

$End

$Pattern Образец_Завершить : keyboard

$Relevant_resources

_игра : Игра_1 Keep Keep

$Time = 0.0

$Body

_игра

Choice NoCheck

first

Convert_begin

колво_камней set -2

$End

$Pattern Образец_Заново : keyboard

$Relevant_resources

_игра : Игра_1 Keep Keep

$Time = 0.0

$Body

_игра

Choice NoCheck

first

Convert_begin

колво_камней set 100

колво_поймал set 0

колво_жизни set 5

корабль set 3

объект_тип set Генератор(0,1)

объект_х set Генератор2(0,5)

объект_у set 0

объект_тип_рис set Генератор(0,2)

$End

$Pattern Образец_Сходить_Вправо : keyboard

$Relevant_resources

_игра : Игра_1 Keep Keep

$Time = 0.0

$Body

_игра

Choice from

_игра.корабль < 5 and

_игра.объект_у > 0 and

( (_игра.объект_х <> _игра.корабль) or

((_игра.объект_х = _игра.корабль) and (_игра.объект_у < 9) and (_игра.объект_тип = 0)) or

((_игра.объект_х = _игра.корабль) and (_игра.объект_у < 10) and (_игра.объект_тип = 1))

) and

_игра.колво_камней > 0

first

Convert_begin

корабль set _игра.корабль + 1

объект_у set _игра.объект_у - 1

$End


$Pattern Образец_корабль_ловит : operation

$Relevant_resources

_игра : Игра_1 Keep Keep

$Time = Время_одного_хода

$Body

_игра

Choice from

_игра.корабль = _игра.объект_х and

_игра.объект_у > 9 and

_игра.объект_тип = 0 and

_игра.колво_камней > 0

first

Convert_begin

колво_поймал set _игра.колво_поймал + 1

объект_у set 0

объект_х set Генератор2(0,5)

объект_тип set Генератор(0,1)

колво_камней set _игра.колво_камней - 1

объект_тип_рис set Генератор(0,2)

$End


$Pattern Образец_корабль_погибает : operation

$Relevant_resources

_игра : Игра_1 Keep Keep

$Time = Время_одного_хода

$Body

_игра

Choice from

_игра.корабль = _игра.объект_х and

_игра.объект_у > 9 and

_игра.объект_тип = 1 and

_игра.колво_камней > 0

first

Convert_begin

колво_жизни set _игра.колво_жизни - 1

объект_у set 0

объект_х set Генератор2(0,5)

объект_тип set Генератор(0,1)

колво_камней set _игра.колво_камней - 1

объект_тип_рис set Генератор(0,2)

$End


$Pattern Образец_Объект_падает : operation

$Relevant_resources

_игра : Игра_1 Keep Keep

$Time = Время_одного_хода

$Body

_игра

Choice from

_игра.объект_у < 11

Convert_begin

объект_у set _игра.объект_у + 1

$End



$Pattern Образец_Рестарт_объект : operation

$Relevant_resources

_игра : Игра_1 Keep Keep

$Time = Время_одного_хода

$Body

_игра

Choice from

_игра.объект_у = 11 and

_игра.колво_камней > 0

Convert_begin

объект_у set 0

объект_х set Генератор2(0,5)

объект_тип set Генератор(0,1)

колво_камней set _игра.колво_камней - 1

объект_тип_рис set Генератор(0,2)

$End



$Pattern Образец_Нет_жизни : operation

$Relevant_resources

_игра : Игра_1 Keep Keep

$Time = Время_одного_хода

$Body

_игра

Choice from

_игра.колво_жизни = 0

Convert_begin

объект_тип set 2

$End

Lab3.smr

9





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

Файл
153282.rtf
78615.rtf
23784-1.rtf
97018.rtf
kursovik.doc




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