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

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

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

Технический Университет










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

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

по курсу

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















Выполнила: студентка группы А-13-05

Акашкина Мария

Проверила: Гречкина П.В.








2009г.

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


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

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


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


На игровом поле находятся четыре стрелки разных направлений (вверх, вправо, вниз, влево). (Рис. 1) Справа от стрелок находятся поля с текущими значениями состояния игры и уровня игры.


Рис. 1. Начальное состояние игры


Существует 3 уровня игры. В каждом уровне последовательность различна и состоит из 5 миганий.


Игрок может запустить игру с помощью кнопки ПРОБЕЛ. При запуске игры стрелочки начинают мигать (становятся ярче) (Рис. 2). Мигание происходит в такой последовательности, в какой она задана в зависимости от уровня.


Рис 2. Игра запущена. Загорелась левая (красная) стрелочка


Игроку необходимо запомнить и повторить в строгой очередности последовательность мигания, используя соответствующие кнопки клавиатуры (стрелка вверх, стрелка вниз, стрелка вправо, стрелка влево).

Если Игрок повторит всю последовательность верно, то можно перейти на следующий уровень, нажав кнопку ПРОБЕЛ.

Если Игрок ошибется, то выдается сообщение с ошибкой. (Рис. 3) В таком случае, чтобы начать прохождение этого же уровня и освежить в памяти последовательность мигания, Игрок должен нажать кнопку DELETE.

Рис. 3. Сообщение об ошибке.

Если все 3 уровня пройдены, то выдается сообщение о прохождении всех уровней (Рис. 4)

Рис. 4. Сообщение о прохождении всех уровней.


Для завершения работы модели в любое время Игроку необходимо нажать кнопку
ESC.



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


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


Время работы игры, значение по умолчанию ноль.

$Resource_type Таймер : permanent

$Parameters

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

$End



$Resource_type Игра : permanent

$Parameters

Состояние: (НЕ_НАЧАТА, МИГАНИЕ, В_ПРОЦЕССЕ, СЛЕД_УРОВЕНЬ, ОШИБКА, ЭТАПЫ_ПРОЙДЕНЫ, ВЫХОД) = НЕ_НАЧАТА

Прохождение : integer[0..6]=0

Уровень: integer[0..4]=0

$End


  • Состояние – состояние игры

  • Прохождение – количество уже загоревшихся стрелок (при мигании), количество правильно нажатых стрелок (при прохождении)

  • Уровень – вариант последовательности мигания стрелок


$Resource_type Стрелки: permanent

$Parameters

Состояние: integer [0..1]

ТипРисунка : integer[0..4]

Нажатие : integer[0..1]

$End


  • Состояние – состояние картинки (0 – темная, 1 – светлая)

  • ТипРисунка – вид картинки (0 – никакой, 1 – стрелка вверх, 2 – стрелка вправо, 3 - стрелка вниз, 4 – стрелка влево)

  • Нажатие – показатель нажатия стрелки (0 –не нажата, 1 - нажата)




  1. Ресурсы:


$Resources

Экземпляр_Таймер : Таймер * по умолчанию Состояние = 0

Экземпляр_Игра : Игра НЕ_НАЧАТА 0 1 состояние =НЕ_НАЧАТА, прохождение=0,уровень = 0

Экземпляр_Стрелки: Стрелки 0 1 0 темная стрелка вверх, не нажата

$End


  1. Операции, представленные в приложении:


$Operations


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

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

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

Стрелка_Вверх : Образец_Стрелка_Вверх 'UP'

Стрелка_Вниз : Образец_Стрелка_Вниз 'DOWN'

Ошибка: Образец_Ошибка 'DELETE'

Запуск : Образец_Запуск

Мигание : Образец_Мигание

Старт : Образец_Старт 'SPACE'

СледУровень: Образец_СледУровень

Неправильно: Образец_Неправильно

Правильно: Образец_Правильно

Конец: Образец_Конец


$End



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


Начать игру - кнопка ПРОБЕЛ.

На экране отображаются стрелочки. Справа от стрелок находятся поля с текущими значениями состояния игры и уровня игры.


При показе последовательности стрелочки загораются, в процессе игры при нажатии игроком стрелочки загораются соответственно.


О прохождении всех уровней или ошибке – вылетают сообщения.








  1. Файл выполнения


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

Model_name = strelo4ki

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

Resource_file = strelo4ki

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

OprIev_file = strelo4ki

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

Statistic_file = strelo4ki

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

Results_file = strelo4ki

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

Trace_file = strelo4ki

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

Frame_file = strelo4ki

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

Frame_number = 1

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

Show_mode = Animation

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

Show_rate = 100.0

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

Terminate_if Экземпляр_Игра.Состояние = ВЫХОД

ПРИЛОЖЕНИЕ.

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

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

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

$Relevant_resources

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

$Time = 0.02

$Body

_Таймер

Convert_event

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

$End


// ход вверх

$Pattern Образец_Стрелка_Вверх : keyboard

$Relevant_resources

_Стрелки : Стрелки Keep Keep

$Time = 0.0

$Body


_Стрелки

Choice NoCheck

Convert_begin

Состояние set 1

ТипРисунка set 1

Нажатие set 1

$End


// ход вправо

$Pattern Образец_Стрелка_Вправо : keyboard

$Relevant_resources

_Стрелки : Стрелки Keep Keep

$Time = 0.0

$Body


_Стрелки

Choice NoCheck

Convert_begin

Состояние set 1

ТипРисунка set 2

Нажатие set 1

$End


// ход вниз

$Pattern Образец_Стрелка_Вниз : keyboard

$Relevant_resources

_Стрелки : Стрелки Keep Keep

$Time = 0.0

$Body


_Стрелки

Choice NoCheck

Convert_begin

Состояние set 1

ТипРисунка set 3

Нажатие set 1

$End


// ход влево

$Pattern Образец_Стрелка_Влево : keyboard

$Relevant_resources

_Стрелки : Стрелки Keep Keep

$Time = 0.0

$Body


_Стрелки

Choice NoCheck

Convert_begin

Состояние set 1

ТипРисунка set 4

Нажатие set 1

$End


//Правило, если кнопка нажата правильно

$Pattern Образец_Правильно : rule

$Relevant_resources

_Стрелки : Стрелки Keep

_Игра : Игра Keep

$Body

_Стрелки Choice from _Стрелки.Состояние = 1 and _Стрелки.Нажатие = 1

Convert_rule

Нажатие set 0


_Игра Choice from _Игра.Состояние = В_ПРОЦЕССЕ and Очередь(_Игра.Прохождение, _Игра.Уровень) = _Стрелки.ТипРисунка

Convert_rule

Прохождение set _Игра.Прохождение + 1

$End


//Правило, если кнопка нажата неправильно

$Pattern Образец_Неправильно : rule

$Relevant_resources

_Стрелки : Стрелки Keep

_Игра : Игра Keep

$Body

_Стрелки Choice from _Стрелки.Состояние = 1 and _Стрелки.Нажатие = 1

Convert_rule

Состояние set 1

_Игра Choice from _Игра.Состояние = В_ПРОЦЕССЕ and Очередь(_Игра.Прохождение, _Игра.Уровень) <> _Стрелки.ТипРисунка

Convert_rule

Прохождение set 0

Состояние set ОШИБКА


$End


//Переход на следующий уровень (при праввильном нажатии всей последовательности)

$Pattern Образец_СледУровень : rule

$Relevant_resources

_Игра : Игра Keep

_Стрелки : Стрелки Keep

$Body

_Игра Choice from _Игра.Состояние = В_ПРОЦЕССЕ and _Игра.Прохождение = 6

Convert_rule

Состояние set НЕ_НАЧАТА

Прохождение set 0

_Стрелки Choice from _Стрелки.Нажатие = 0

Convert_rule

Состояние set 1

$End


//Правило, если все уровни пройдены успешно

$Pattern Образец_Конец : rule

$Relevant_resources

_Игра : Игра Keep

$Body

_Игра Choice from _Игра.Уровень = 3 and _Игра.Состояние = НЕ_НАЧАТА

Convert_rule

Состояние set ЭТАПЫ_ПРОЙДЕНЫ

$End


//Правило старта игры

$Pattern Образец_Старт : keyboard

$Relevant_resources

_Игра : Игра Keep Keep

$Time = 0.0

$Body

_Игра

Choice from _Игра.Состояние = НЕ_НАЧАТА

Convert_begin

Состояние set МИГАНИЕ

Уровень set _Игра.Уровень + 1

$End


//Правило при ошибке

$Pattern Образец_Ошибка : keyboard

$Relevant_resources

_Игра : Игра Keep Keep

$Time = 0.0

$Body

_Игра

Choice from _Игра.Состояние = ОШИБКА

Convert_begin

Состояние set МИГАНИЕ

Уровень set _Игра.Уровень

$End


//Правило,чтобы стрелки загорались (становились светлыми,яркими)

$Pattern Образец_Запуск : rule

$Relevant_resources

_Игра : Игра Keep

_Стрелки : Стрелки Keep

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

$Body

_Игра Choice from _Игра.Состояние = МИГАНИЕ and _Игра.Прохождение <= 5

Convert_rule

Прохождение set _Игра.Прохождение + 1

_Стрелки Choice NoCheck

Convert_rule

Состояние set 1

ТипРисунка set Очередь(_Игра.Прохождение, _Игра.Уровень)

_Таймер

Choice from Frac(_Таймер.Состояние/2) = 0 and _Таймер.Состояние <> 0

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


$End


//Правило,чтобы стрелки потухали (становились темными)

$Pattern Образец_Мигание: rule

$Relevant_resources

_Игра : Экземпляр_Игра Keep

_Стрелки : Стрелки Keep

$Body


_Игра

Choice from _Игра.Состояние = МИГАНИЕ and _Игра.Прохождение = 6

Convert_rule

Прохождение set 1

Состояние set В_ПРОЦЕССЕ

_Стрелки

Choice NoCheck

Convert_rule

Состояние set 0

$End


//Правило выхода

$Pattern Образец_Стоп : keyboard

$Relevant_resources

_Игра : Игра keep keep

$Time = 0.0

$Body

_Игра

Choice NoCheck

Convert_begin

Состояние set ВЫХОД

$End


  1. Функции


//задание максимума для состояния таймера

$Constant

Максимум : integer = 500

$End


//Функция, переводящая таймер

$Function Перевести_Таймер : integer

$Type = algorithmic

$Parameters _Новое_Состояние : integer

$Body

Calculate_if _Новое_Состояние < Максимум

Перевести_Таймер = _Новое_Состояние + 1

Calculate_if _Новое_Состояние >= Максимум

Перевести_Таймер = 0

$End


//Функция, задающая последовательность мигания стрелочек в зависимости от уровня


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

Файл
34587.rtf
26661-1.rtf
79399.rtf
149237.rtf
60852.rtf




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