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

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

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

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












Отчет


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



курс: ТииИО

тема: работа с РДО


выполнил: Ананькин С.М.

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

























2008 г.











Содержание





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

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

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

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

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

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

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

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















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


В лабораторной работе на базе РДО построено игровое приложение, имитирующее противостояние человека и зомби в замкнутом помещении. Человек, являясь протагонистом игрока, может управляться с помощью клавиатуры (стрелки отвечают за движение, пробел – за стрельбу). Зомби постоянно движется на человека, и считается, что достигнув его, съедает.


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


Дажее будет описано поведение игры во всех возможных ситуациях с указаниями на возможные «концовки» - удачную для игрока и не очень.


  • Модель поведения зомби проста – мертвец выбирает одно из восьми возможны направлений (запад, восток, север, юг, юго-восток, юго-запад, северо-восток, северо-запад) согласно положению игрока, так чтобы все время двигаться по направлению к нему.

  • Человек перемещается по нажатию клавиш в одном из четырех направлений.

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

  • Игра заканчивается, если один из противников мертв.


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


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

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

В работе имеют место два типа ресурсов: зомби и люди. Их описание с указаниями и пояснениями будет приведено ниже.


$Resource_type Зомби : permanent

$Parameters

Состояние : (жив, мертв) = жив

Тип : (Человек, Собака) = Человек

Икс : integer[0..15] = 1

Игрик : integer[0..15] = 1

Действие : (идет, кусает) = идет

$End

$Resource_type Красавец : permanent

$Parameters

Состояние : (здоров, мертв) = здоров

Патроны : integer[0..12] = 12

Икс : integer[0..15] = 1

Игрик : integer[0..15] = 1

Убито : integer = 0

Этап : (стоим, идем, стреляем) = стоим

$End


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


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




Ресурсы

Разработанное приложение – имитация противостояния «один на один», поэтому в работе имеется два ресурса – один типа «человек» и один типа «зомби»:

Кика : Красавец * * 7 7 * *

Зомбота : Зомби * * * * *


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

В приложении представлены несколько образцов операций, которые по определенным признакам можно разбить на некие эфемерные группы:


1. Операции обработки ввода, осуществляющие движение человека:

//перемещение по горизонтали

$Pattern Образец_Кика_Горизонталь : keyboard

$Parameters

_param : integer

$Relevant_resources

_кика : Красавец Keep NoChange

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

$Body

_кика

Choice from

_кика.Этап = идем and

(_кика.Икс < 14 and _кика.Икс > 0)

first

Convert_begin

Икс set _кика.Икс + _param

Этап set стоим

$End

//перемещение по вертикали

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

$Parameters

_param : integer

$Relevant_resources

_кика : Красавец Keep NoChange

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

$Body

_кика

Choice from

_кика.Этап = идем and

(_кика.Игрик < 14 and _кика.Игрик > 0)

first

Convert_begin

Игрик set _кика.Икс + _param

Этап set стоим

$End




2. Действия нанесения и получения урона

//кика умирает

$Pattern Кика_Принимает_Удар : operation

$Relevant_resources

_зомбота : Зомби NoChange NoChange

_кика : Красавец Keep NoChange

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

$Body

_зомбота

Choice from _зомбота.Действие = кусает

_кика

Choice NoCheck

Convert_begin

Состояние set мертв

$End

//зомбота умирает

$Pattern Зомби_Принимает_Удар : operation

$Relevant_resources

_кика : Красавец NoChange NoChange

_зомбота : Зомби Keep NoChange

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

$Body

_кика

Choice from _кика.Этап = стреляем

_зомбота

Choice NoCheck

Convert_begin

Состояние set мертв

$End

//зомбота кусает

$Pattern Зомби_Атакует : operation

$Relevant_resources

_кика : Красавец NoChange NoChange

_зомбота : Зомби Keep NoChange

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

$Body

_кика

Choice NoCheck

_зомбота

Choice from _зомбота.Икс - _кика.Икс < 2 and _зомбота.Игрик - _кика.Игрик < 2

Convert_begin

Действие set кусает

$End

//мочить

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

$Relevant_resources

_зомбота : Зомби NoChange NoChange

_кика : Красавец Keep NoChange

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

$Body

_зомбота

Choice NoCheck

_кика

Choice from

abs(_кика.Икс - _зомбота.Икс) < 7 and

_кика.Патроны > 0

first

Convert_begin

Патроны set _кика.Патроны - 1

Этап set стреляем

$End



3. Перемещение Зомби

$Pattern Образец_Зомбота_ВлевоВниз : operation

$Relevant_resources

_кика : Красавец Keep Keep

_зомбота : Зомби Keep Keep

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

$Body

_кика

Choice from _кика.Этап = стоим

Convert_begin

Этап set идем

_зомбота

Choice from

_зомбота.Икс > _кика.Икс and

_зомбота.Игрик > _кика.Игрик

first

Convert_begin

Икс set _зомбота.Икс - 1

Игрик set _зомбота.Игрик - 1

$End

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

$Relevant_resources

_кика : Красавец Keep Keep

_зомбота : Зомби Keep Keep

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

$Body

_кика

Choice from _кика.Этап = стоим

Convert_begin

Этап set идем

_зомбота

Choice from

_зомбота.Икс > _кика.Икс and

_зомбота.Игрик < _кика.Игрик

first

Convert_begin

Икс set _зомбота.Икс - 1

Игрик set _зомбота.Игрик + 1

$End

$Pattern Образец_Зомбота_ВправоВниз : operation

$Relevant_resources

_кика : Красавец Keep Keep

_зомбота : Зомби Keep Keep

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

$Body

_кика

Choice from _кика.Этап = стоим

Convert_begin

Этап set идем

_зомбота

Choice from

_зомбота.Икс < _кика.Икс and

_зомбота.Игрик > _кика.Игрик

first

Convert_begin

Икс set _зомбота.Икс + 1

Игрик set _зомбота.Игрик - 1

$End

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

$Relevant_resources

_кика : Красавец Keep Keep

_зомбота : Зомби Keep Keep

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

$Body

_кика

Choice from _кика.Этап = стоим

Convert_begin

Этап set идем

_зомбота

Choice from

_зомбота.Икс < _кика.Икс and

_зомбота.Игрик < _кика.Игрик

first

Convert_begin

Икс set _зомбота.Икс + 1

Игрик set _зомбота.Игрик + 1

$End

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

$Relevant_resources

_кика : Красавец Keep Keep

_зомбота : Зомби Keep Keep

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

$Body

_кика

Choice from _кика.Этап = стоим

Convert_begin

Этап set идем

_зомбота

Choice from

_зомбота.Икс > _кика.Икс

first

Convert_begin

Икс set _зомбота.Икс - 1

$End

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

$Relevant_resources

_кика : Красавец Keep Keep

_зомбота : Зомби Keep Keep

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

$Body

_кика

Choice from _кика.Этап = стоим

Convert_begin

Этап set идем

_зомбота

Choice from

_зомбота.Икс < _кика.Икс

first

Convert_begin

Икс set _зомбота.Икс + 1

$End

$Pattern Образец_Зомбота_Вверх : operation

$Relevant_resources

_кика : Красавец Keep Keep

_зомбота : Зомби Keep Keep

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

$Body

_кика

Choice from _кика.Этап = стоим

Convert_begin

Этап set идем

_зомбота

Choice from

_зомбота.Игрик < _кика.Игрик

first

Convert_begin

Икс set _зомбота.Игрик + 1

$End

$Pattern Образец_Зомбота_Вниз : operation

$Relevant_resources

_кика : Красавец Keep Keep

_зомбота : Зомби Keep Keep

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

$Body

_кика

Choice from _кика.Этап = стоим

Convert_begin

Этап set идем

_зомбота

Choice from

_зомбота.Игрик > _кика.Игрик

first

Convert_begin

Икс set _зомбота.Игрик - 1

$End


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

Файл
14843-1.rtf
174258.rtf
159767.rtf
рпз.doc
РПЗ 62 Б.doc




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