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

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

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

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












Отчет


По лабораторной работе №3:

«Работа с РДО»




выполнил: Шибаршин А.Г.

группа: А-13-04


























2008 г.











Содержание





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

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

Имитационная модель ................................................................................4

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

Ресурсы ...............................................................................................5

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

Операции ............................................................................................8

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















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


В лабораторной работе построено приложение, реализующее модель ситуации «Пробитие пенальти». Пользователь имеет возможность указать сложность игры (т.е. по сути уровень умений вратаря) и направление удара. Игра завершается в двух случаях – забит гол или вратарь взял удар.


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


Опишем процесс игры.


Сначала игрок устанавливает уровень сложности клавишами «вверх» и «вниз» и направление удара клавишами «влево» и «вправо». Всего возможных направлений удара 5 – по центру, по углам и два промежуточных варианта.


После всей этой подготовки игрок производит удар клавишей «пробел». Далее вратарь пытается угадать, куда игрок будет бить и выбирает случайным образом одно из трех действий: остаться в центре, сместиться немного вправо или влево. После этого мяч начинает лететь в указанном направлении, а вратарь пытается его поймать, смещаясь в его сторону.


Игра заканчивается, когда мяч пересекает линию ворот или когда вратарь достаточно близко к мячу, чтобы его отбить.







Имитационная модель

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

В лабораторной работе представлено два типа ресурсов: вратарь и мяч. Их описание:


$Resource_type Вратарь : permanent

$Parameters

Позиция : integer = 250

Скилл : integer = 1

$End


$Resource_type Мяч : permanent

$Parameters

Х : integer = 0

У : integer = 0

Цель : integer = 0

Сост : (Летит, Стоит, Готовится) = Готовится

$End


У вратаря имеется два параметра. Позиция – это координаты в пикселях по оси Х. Координаты по оси У нам не нужны, т.к. вратарь не может по ней смещаться. Скилл – это уровень навыка вратаря. Конкретно он определяет, с какой скоростью вратарь будет смещаться в сторону мяча.

У мяча есть уже координаты по обеим осям. Параметр Цель определяет направление удара. Он может изменяться от -2 до 2. Крайние значения соответствуют левому и правому углу ворот. Также у мяча есть параметр Сост – состояние, в котором он сейчас находится. Он нужен для поддержания очередности ходов.



Ресурсы

В работе представлено два ресурса, собственно, вратарь и мяч:

РМяч : Мяч 250 250 * *

РВратарь : Вратарь 250 *


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

  1. Операции «подготовки» к игре, т.е. выбор сложности, направления удара и сам удар.


$Pattern Образец_Выбор_Цели : keyboard

$Parameters

_param : integer

$Relevant_resources

_Мяч : Мяч Keep NoChange

$Time = К_Ход

$Body

_Мяч

Choice from

_Мяч.Сост = Готовится and

_Мяч.Цель > -2 and _Мяч.Цель < 2

first

Convert_begin

Цель set _Мяч.Цель + _param

$End




$Pattern Образец_Смена_Сложности : keyboard

$Parameters

_param : integer

$Relevant_resources

_Мяч : Мяч NoChange NoChange

_Вратарь : Вратарь Keep NoChange

$Time = К_Ход

$Body

_Мяч

Choice from

_Мяч.Сост = Готовится

first

_Вратарь

Choice from

_Вратарь.Скилл >= 1 and _Вратарь.Скилл <= 3

first

Convert_begin

Скилл set _Вратарь.Скилл + _param

$End








$Pattern Образец_Удар : keyboard

$Relevant_resources

_Мяч : Мяч Keep NoChange

_Вратарь : Вратарь Keep NoChange

$Time = К_Ход

$Body

_Мяч

Choice from

_Мяч.Сост = Готовится and

_Мяч.Цель >= -2 and _Мяч.Цель <= 2

first

Convert_begin

Сост set Летит

_Вратарь

Choice NoCheck

first

Convert_begin

Позиция set 250 + (50 * рэндом(Time_now))

$End



  1. Операции, осуществляющие перемещение мяча.

$Pattern Образец_Полет_Влево : operation

$Relevant_resources

_Мяч : Мяч Keep NoChange

$Time = К_Ход

$Body

_Мяч

Choice from

_Мяч.Сост = Летит and _Мяч.Цель < 0

first

Convert_begin

Х set _Мяч.Цель * 5 + _Мяч.Х

У set -20 + _Мяч.У

Сост set Стоит

$End




$Pattern Образец_Полет_Вправо : operation

$Relevant_resources

_Мяч : Мяч Keep NoChange

$Time = К_Ход

$Body

_Мяч

Choice from

_Мяч.Сост = Летит and _Мяч.Цель > 0

first

Convert_begin

Х set _Мяч.Цель * 5 + _Мяч.Х

У set -20 + _Мяч.У

Сост set Стоит

$End










$Pattern Образец_Полет_Центр : operation

$Relevant_resources

_Мяч : Мяч Keep NoChange

$Time = К_Ход

$Body

_Мяч

Choice from

_Мяч.Сост = Летит and _Мяч.Цель = 0

first

Convert_begin

У set -20 + _Мяч.У

Сост set Стоит

$End


  1. Операции, осуществляющие перемещение вратаря.

$Pattern Образец_Вратарь_Вправо : operation

$Relevant_resources

_Мяч : Мяч Keep NoChange

_Вратарь : Вратарь Keep NoChange

$Time = К_Ход

$Body

_Мяч

Choice from

_Мяч.Сост = Стоит

first

Convert_begin

Сост set Летит

_Вратарь

Choice from

_Вратарь.Позиция < _Мяч.Х

first

Convert_begin

Позиция set _Вратарь.Позиция + _Вратарь.Скилл * 3

$End




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

$Relevant_resources

_Мяч : Мяч Keep NoChange

_Вратарь : Вратарь Keep NoChange

$Time = К_Ход

$Body

_Мяч

Choice from

_Мяч.Сост = Стоит

first

Convert_begin

Сост set Летит

_Вратарь

Choice from

_Вратарь.Позиция > _Мяч.Х

first

Convert_begin

Позиция set _Вратарь.Позиция - _Вратарь.Скилл * 3

$End










$Pattern Образец_Вратарь_Стоит : operation

$Relevant_resources

_Мяч : Мяч Keep NoChange

_Вратарь : Вратарь Keep NoChange

$Time = К_Ход

$Body

_Мяч

Choice from

_Мяч.Сост = Стоит

first

Convert_begin

Сост set Летит

_Вратарь

Choice from

_Вратарь.Позиция = _Мяч.Х

first

Convert_begin

Позиция set _Вратарь.Позиция

$End


Операции

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


Цель_Влево : Образец_Выбор_Цели 'LEFT' -1

Цель_Вправо : Образец_Выбор_Цели 'RIGHT' 1

Легче : Образец_Смена_Сложности 'DOWN' -1

Сложнее : Образец_Смена_Сложности 'UP' 1

Удар : Образец_Удар 'SPACE'

Полет_Влево : Образец_Полет_Влево

Полет_Вправо : Образец_Полет_Вправо

Полет_Центр : Образец_Полет_Центр

Вратарь_Вправо : Образец_Вратарь_Вправо

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

Вратарь_Стоит : Образец_Вратарь_Стоит

























Интерфейс


Окно программы выглядит так:


Справа выводятся числовые значения начальных условий.

Следует заметить, что Франческо «il Capitano» Тотти, пробивающий пенальти, является частью фона.

9




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

Файл
92344.rtf
150922.rtf
162518.rtf
62830.rtf
165942.rtf




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