Лабораторные работы (2009) (Отчет по лабораторной работе 31 РДО)

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

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

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





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

«Моделирование с помощью системы интеллектуального имитационного моделирования РДО»

по курсу

«Теория игр и исследование операций»







Подготовил:

Студент А-13-05

Гончар М.А.


Проверила:

Гречкина П.В.









2009 год

Содержание:

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

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

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


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

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

    3. Операции………………………………………………………………3

    4. Функции……………………………………………………………….5

Кадры анимации……………………………………………………...6

    1. Интерфейс…………………………………………………………….6

    2. Выполнение…………………………………………………………..7





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

Разработать модель игры «Хоккей с шайбой» и имитационный модуль программы игры «Хоккей с шайбой» в среде РДО.




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

В данной работе представлена модель игры «Хоккей с шайбой».

Идея: Есть две клюшки и шайба, действие происходит на поле с границами. Необходимо не пропустить шайбу, отбив клюшкой (игра не управляется пользователем). Игра завершена, если один из игроков забил гол (игрок противоположной команды не смог отбить шайбу).

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



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



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


Имеем два типа:

Типы ресурсов используются для описания структур объектов моделируемой системы


$Resource_type ресурс_Клюшка : permanent

$Parameters

length : real

speed : integer

X : real

position: (Верхняя, Нижняя)

status : (Готов, Не готов)

$End


$Resource_type ресурс_Шайба : permanent

$Parameters

speed : real

angle : real

X : real

Y : real

status : (Готов, Не готов)

$End



  1. Ресурсы.


$Resources

верхняя_Клюшка : ресурс_Клюшка 80 5 140 Верхняя Готов

нижняя_Клюшка : ресурс_Клюшка 80 8 200 Нижняя Готов

Шайба : ресурс_Шайба trace 5 0.71 100 100 Готов

$End





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


$Pattern Образец_Движение_Клюшек : operation

$Relevant_resources

_Клюшка : ресурс_Клюшка Keep Keep

$Time = 0.1

$Body

_Клюшка

Choice from _Клюшка.status = Готов

Convert_begin

status set Неготов

Convert_end

X set Смещение_Клюшки(_Клюшка.X, _Клюшка.length, _Клюшка.speed, Шайба.X)

status set Готов

$End


$Pattern Образец_Движение_Шайбы : operation

$Relevant_resources

_Шайба : Шайба Keep Keep

$Time = 0.1

$Body

_Шайба

Choice from _Шайба.status = Готов and

_Шайба.Y > 0 and _Шайба.Y < height

Convert_begin

status set Неготов

Convert_end

X set Смещение_Шайбы_X()

Y set Смещение_Шайбы_Y()

status set Готов

$End


$Pattern Образец_Отскок_Шайбы_От_Клюшки : operation

$Parameters

Клюшка : such_as ресурс_Клюшка.position

$Relevant_resources

_Клюшка : ресурс_Клюшка NoChange NoChange

_Шайба : Шайба Keep NoChange

$Time = 0.1

$Body

_Клюшка

Choice from _Клюшка.position = Клюшка

_Шайба

Choice from (_Клюшка.position = Верхняя and

_Шайба.Y > 0 and

_Шайба.Y <= 10 and sin(_Шайба.angle) > 0 and

_Шайба.X >= _Клюшка.X - _Клюшка.length/2 and _Шайба.X <= _Клюшка.X + _Клюшка.length/2) or

(_Клюшка.position = Нижняя and

_Шайба.Y < height and

_Шайба.Y >= height - 20 and sin(_Шайба.angle) < 0 and

_Шайба.X >= _Клюшка.X - _Клюшка.length/2 and _Шайба.X <= _Клюшка.X + _Клюшка.length/2)

Convert_begin

angle set Угол_отскока_от_Клюшки(_Клюшка.position)

$End


$Pattern Образец_Отскок_Шайбы_От_Стенки : rule trace

$Relevant_resources

_Шайба : Шайба Keep

$Body

_Шайба

Choice from (_Шайба.X <= 0 and cos(_Шайба.angle) < 0) or

(_Шайба.X >= width - 10 and cos(_Шайба.angle) > 0)

Convert_rule

angle set Угол_отскока_от_стенки()

X set Смещение_Шайбы_X()

Y set Смещение_Шайбы_Y()

$End


$Pattern Образец_Ускорение : irregular_event

$Relevant_resources

_Шайба : Шайба Keep

$Time = 25

$Body

_Шайба

Convert_event

speed set _Шайба.speed + 2

$End



Операции:


Здесь определяются все правила функционирования модели


$Operations

Операция1 : Образец_Движение_Клюшек

Операция2 : Образец_Движение_Шайбы

Операция3 : Образец_Отскок_Шайбы_От_Клюшки Нижняя

Операция4 : Образец_Отскок_Шайбы_От_Клюшки Верхняя

Операция5 : Образец_Отскок_Шайбы_От_Стенки

Ускорение : Образец_Ускорение

$End


  1. Функции.


$Constant

width : integer = 400

height : integer = 400

$End


$Function Смещение_Клюшки : real = 0

$Type = algorithmic

$Parameters

Координата_Клюшки : real

Длина_Клюшки : real

Скорость_Клюшки : real

Координата_Шайбы : real

$Body

Calculate_if Координата_Клюшки > Координата_Шайбы + 5 and

Координата_Клюшки - Длина_Клюшки/2 > 0

Смещение_Клюшки = Координата_Клюшки - Скорость_Клюшки

Calculate_if Координата_Клюшки < Координата_Шайбы + 5 and

Координата_Клюшки + Длина_Клюшки/2 < width

Смещение_Клюшки = Координата_Клюшки + Скорость_Клюшки

Calculate_if Координата_Клюшки = Координата_Шайбы + 5 or

Координата_Клюшки - Длина_Клюшки/2 <= 0 or

Координата_Клюшки + Длина_Клюшки/2 >= width

Смещение_Клюшки = Координата_Клюшки

$End


$Function Смещение_Шайбы_X : real

$Type = algorithmic

$Body

Смещение_Шайбы_X = Шайба.X + cos(Шайба.angle) * Шайба.speed

$End


$Function Смещение_Шайбы_Y : real

$Type = algorithmic

$Body

Смещение_Шайбы_Y = Шайба.Y - sin(Шайба.angle) * Шайба.speed

$End


$Function Угол_отскока_от_Клюшки : real = 0

$Type = algorithmic

$Parameters

Клюшка : such_as ресурс_Клюшка.position

$Body

Calculate_if Клюшка = Верхняя

Угол_отскока_от_Клюшки = 6.28 - Шайба.angle

Calculate_if Клюшка = Нижняя

Угол_отскока_от_Клюшки = 6.28 - Шайба.angle

$End


$Function Угол_отскока_от_стенки : real = 0

$Type = algorithmic

$Body

Calculate_if cos(Шайба.angle) > 0 and

sin(Шайба.angle) < 0 and

Шайба.X >= 290

Угол_отскока_от_стенки = 9.42 - Шайба.angle

Calculate_if cos(Шайба.angle) > 0 and

sin(Шайба.angle) > 0 and

Шайба.X >= 290

Угол_отскока_от_стенки = 3.14 - Шайба.angle

Calculate_if cos(Шайба.angle) < 0 and

sin(Шайба.angle) < 0 and

Шайба.X <= 0

Угол_отскока_от_стенки = 9.42 - Шайба.angle

Calculate_if cos(Шайба.angle) < 0 and

sin(Шайба.angle) > 0 and

Шайба.X <= 0

Угол_отскока_от_стенки = 3.14 - Шайба.angle

$End



  1. Кадры анимации


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


$Frame frame_1

$Back_picture = <255 255 255> pole3

Show


rect [ верхняя_Клюшка.X - верхняя_Клюшка.length/2, 0, верхняя_Клюшка.length, 10, <255,0,0>, <255,0,0> ]

rect [ нижняя_Клюшка.X - нижняя_Клюшка.length/2, 390, нижняя_Клюшка.length, 10, <0,0,255>, <0,0,255> ]

ellipse [ Шайба.X, Шайба.Y, 10, 10, <0, 0, 0>, <0, 0, 0> ]


$End



  1. Интерфейс.









  1. Выполнение.


// Имя модели (*.pat, *.rtp, *.fun и *.dpt)

Model_name = mymodel


// Ресурсы (*.rss)

Resource_file = mymodel


// Операции (*.opr)

// Одновременно в модели может присутствовать или файл *.opr или файл *.dpt, но не оба сразу

OprIev_file = mymodel


// Собираемые показатели (*.pmd)

Statistic_file = mymodel


// Результаты прогона (*.pmv), выводятся внизу экрана

Results_file = mymodel


// Трассировка (*.trc)

// Если файл трассировки закомментировать, то отключится вся трассировка в модели

Trace_file = mymodel


// Анимация (*.trc)

Frame_file = mymodel

// Отображение анимации начинается с кадра Frame_number

Frame_number = 1


// Режим прогона, включить анимацию

Show_mode = Animation

// Скорость анимации. Чем больше значение, тем быстрее прогон

Show_rate = 10000.0


// Условие остановки модели.

Terminate_if Шайба.Y <= 0 or Шайба.Y >= height

2




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

Файл
141122.rtf
168414.rtf
48097.rtf
3474-1.rtf
МДС 13- 6.2000.doc




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