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

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

























































  1. Оглавление.

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

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

Имитационная модель – стр. 2

Список литературы – стр. 25















































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



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



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



Название игры: «Буря в пустыне» (англ. Desert Storm). Поле игры представляет собой пустынный пейзаж, по которому и движется танк. При нажатии на кнопку «RIGHT» (стрелочка вправо), танк начинает двигаться вперёд. При нажатии пробела танк останавливается. При нажатии левой стрелочки танк движется назад. При нажатии кнопки «F» танк стреляет из орудия, при нажатии кнопки «G» танк стреляет из пулемёта.

Справа и слева от танка возникают другие танки, которые начинают вести по нему огонь из орудий. При этом в каждый момент времени существует только один противник (либо справа, либо слева). Орудия противников отнимают у танка 1% брони за выстрел. Если танк уничтожает противника справа, то он возникает слева, и наоборот. Игра заканчивается если значение брони для танка станет равно нулю (поражение), либо если танк подобьёт 20 противников (победа). За один выстрел орудия танк отбирает у противника 20% брони, а за один выстрел из пулемёта – 5%. Противник считается подбитым, если значение брони для него станет равным нулю.



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



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



В игре присутствует два типа ресурсов – танк игрока и танк противника.



Представление ресурса танка игрока в коде программы:



$Resource_type танк : permanent

$Parameters

Координата : real [0.0..700.0]

Стадия_движение : integer [1..2]

Стадия_остановка : integer [1..2]

Стадия_орудие : integer [1..2]

Стадия_пулемёт : integer [1..2]

Стадия_уничтожен : integer [1..2]

Действие :(остановка, движение, стрельба_из_орудия, стрельба_из_пулемёта, уничтожен, починить, закончить_играть) = остановка

Направление : (вперед, назад) = вперед

Блокировка : (да, нет) = нет

Броня : integer[-100..100] = 100

Число_врагов : integer

$End





Параметры:

  1. Координата – текущее положение танка по оси Х;

  2. Стадия_движение – показывает номер кадра анимации движения, которую сейчас надо отображать;

  3. Стадия_остановка – показывает номер кадра анимации остановки, который сейчас надо отображать;

  4. Стадия_орудие – показывает номер кадра анимации выстрела из орудия, который сейчас надо отображать;

  5. Стадия_пулемёт – показывает номер кадра анимации выстрела из пулемёта, который сейчас надо отображать;

  6. Стадия_уничтожен – показывает номер кадра анимации уничтожения танка игрока, который сейчас надо отображать;

  7. Действие – определяет текущее действие танка;

  8. Направление – определяет текущее направление танка;

  9. Блокировка – фиксирует начало изменения состояния танка (например, при начале движения);

  10. Броня – уровень брони танка;

  11. Число врагов – число танков противника, сбитых танком игрока.



Представление ресурса танка противника в коде программы:



$Resource_type противник : permanent

$Parameters

Координата_противник : real[0.0..700.0]

Направление_противник : (вперед, назад) = назад

Отображать : (да, нет) = нет

Стадия_орудие : integer[1..3]

Броня : integer[-100..100] = 100

Блокировка : (да, нет) = нет

Уничтожен : (да, нет) = нет

$End



Параметры:

  1. Координата_противник – текущее положение танка по оси Х;

  2. Направление_противник – определяет текущее направление танка;

  3. Стадия_орудие – показывает номер кадра анимации выстрела из орудия, который сейчас надо отображать;

  4. Броня – уровень брони танка;

  5. Блокировка – фиксирует начало изменения состояния танка;

  6. Блокировка – фиксирует начало изменения состояния танка (например, при начале движения);

  7. Уничтожен – определяет, подбит ли танк.

Ресурсы.

$Resources

т34 : танк 300.0 1 1 1 1 1 * * * * 0

т35 : противник 0.0 * * 1 * * *

$End


т34 – ресурс для танка игрока.

Т35 – ресурс для танка противника.


Операции.



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



а) Образец_стоит_клав – клавиатурная операция, которая задаёт остановку танка игрока. Вызывается по нажатии кнопки «ПРОБЕЛ».



$Pattern Образец_стоит_клав : keyboard trace

$Relevant_resources

танкт34 : т34 Keep NoChange

$Time = 0.0

$Body

танкт34

Choice from танкт34.Действие = движение

Convert_begin

Действие set остановка

Стадия_остановка set 1

$End



б) Образец_стоит – операция, которая выполняется, пока танк игрока находится в неподвижном положении и не выполняет никаких действий.



$Pattern Образец_стоит : operation trace

$Relevant_resources

танкт34 : т34 Keep Keep

$Time = 0.0001

$Body

танкт34

Choice from танкт34.Блокировка = нет and танкт34.Действие = остановка

Convert_begin

Блокировка set да

Convert_end

Стадия_остановка set Новая_Стадия_Остановка(танкт34.Действие, танкт34.Стадия_остановка)

Блокировка set нет

$End



в) Образец_движение_вперёд_клав, Образец_движение_назад_клав – клавиатурные операции, которые задают направление движения танка игрока. Первая вызывается нажатием клавиши «RIGHT», а вторая нажатием «LEFT». Соответственно одна из них задаёт направление движения вперёд, а вторая – назад.



$Pattern Образец_движение_вперёд_клав : keyboard trace

$Relevant_resources

танкт34 : т34 Keep NoChange

$Time = 0.0

$Body

танкт34

Choice from танкт34.Действие = остановка or танкт34.Действие = движение or танкт34.Действие = стрельба_из_орудия

or танкт34.Действие = стрельба_из_пулемёта

Convert_begin

Действие set движение

Стадия_движение set 1

Направление set вперед

$End



$Pattern Образец_движение_назад_клав : keyboard trace

$Relevant_resources

танкт34 : т34 Keep NoChange

$Time = 0.0

$Body

танкт34

Choice from танкт34.Действие = остановка or танкт34.Действие = движение or танкт34.Действие = стрельба_из_орудия

or танкт34.Действие = стрельба_из_пулемёта

Convert_begin

Действие set движение

Стадия_движение set 1

Направление set назад

$End



г) Образец_движение – операция, которая выполняется, пока танк движется.



$Pattern Образец_движение : operation trace

$Relevant_resources

танкт34 : т34 Keep Keep

$Time = 0.00002

$Body

танкт34

Choice from танкт34.Блокировка = нет and танкт34.Действие = движение

Convert_begin

Блокировка set да

Convert_end

Координата set танкт34.Координата +

Новая_координата(танкт34.Направление, танкт34.Действие, танкт34.Стадия_движение)

Стадия_движение set Новая_Стадия_Движение(танкт34.Действие, танкт34.Стадия_движение)

Направление set Новое_направление(танкт34.Направление, танкт34.Координата)

Блокировка set нет

$End



д) Образец_стреляет – клавиатурная операция, которая задаёт выстрел из орудия. Запускается по кнопке «F».



$Pattern Образец_стреляет_клав : keyboard trace

$Relevant_resources

танкт34 : т34 Keep NoChange

$Time = 0.0

$Body

танкт34

Choice from танкт34.Действие = движение or танкт34.Действие = остановка

Convert_begin

Действие set стрельба_из_орудия

Стадия_орудие set 1

$End



е) Образец_стреляет_1, Образец_стреляет_2 – операции, которые выполняются во время стрельбы из орудия. Первая операция выполняется при условии, что танк противника находится справа от танка игрока. Вторая операция выполняется, когда танк находится слева от игрока.



$Pattern Образец_стреляет_1 : operation trace

$Relevant_resources

танкт34 : т34 Keep Keep

танкт35 : т35 Keep NoChange

$Time = 0.00001

$Body

танкт34

Choice from танкт34.Действие = стрельба_из_орудия and танкт34.Блокировка = нет

and танкт34.Направление = назад

Convert_begin

Блокировка set да

Convert_end

Блокировка set нет

Стадия_орудие set Новая_Стадия_Орудие(танкт34.Действие, танкт34.Стадия_орудие)

Действие set Новое_Действие(танкт34.Действие, танкт34.Стадия_орудие, танкт34.Стадия_пулемёт)

танкт35

Choice from танкт35.Направление_противник = вперед

Convert_begin

Броня set танкт35.Броня - 20

$End



$Pattern Образец_стреляет_2 : operation trace

$Relevant_resources

танкт34 : т34 Keep Keep

танкт35 : т35 Keep NoChange

$Time = 0.00001

$Body

танкт34

Choice from танкт34.Действие = стрельба_из_орудия and танкт34.Блокировка = нет

and танкт34.Направление = вперед

Convert_begin

Блокировка set да

Convert_end

Блокировка set нет

Стадия_орудие set Новая_Стадия_Орудие(танкт34.Действие, танкт34.Стадия_орудие)


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

Файл
9845-1.rtf
3940.doc
69500.rtf
114064.rtf
102922.rtf




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