КузнецовАГ-СтрашныйСонСотрудникаМилиции (990909)
Текст из файла
Лабораторная работа №3
РДО
Кузнецов Андрей Геннадьевич
А-16-05
Москва 2008
Содержание:
-
Постановка задачи ..........................................................................................................3
-
Описание предметной области ..................................................................................... 4
-
Описание имитационной модели ……………………………………………………. 4
3.1) Типы ресурсов ............................................................................................................... 4
3.2) Ресурсы .......................................................................................................................... 4
3.3) Операции ........................................................................................................................5
3.4) Анимация ....................................................................................................................... 5
3.5) Рисунки использованные в программе ........................................................................7
4) Приложени (функции и константы) ............................................................................... 9
-
Постановка задачи:
На языке программирования РДО (язык имитационного моделирования) необходимо реализовать какую-либо задачу, включающую в себя модель принятия решения.
Я решил реализовать игру с условными “врагами”(два врага, ходят поочерёдно), которые на поле 10х10 клеток, имея возможность двигаться вправо,влево, вверх (начальная позиция “врагов” – нижняя часть доски, а игрока - верхняя). Игрок же имеет возможность двигаться во всех четырёх направлениях используя “стрелки” клавиатуры, его главной задачей является обойти “врагов” и дойти до нижней границы доски. В случае если “враги” пересекаются по координатам с игроком, игра устанавливается в начальное положение, за исключением счёта игрока – он изменяется. Игра останавливается по достижении игроком нижней границы поля (или достижения “врагами” верхней, что идеалогически равнозначно). По достижении финального состояния игрок получает сообщение в зависимости от того несколько хорошо он обошел “врагов”.
Название игры: “Кашмарный Сон Сотрудника Милиции”
Концепция игры: На поле 10х10 клеток в сторону сотрудника поочерёдно двигаются две взятки (визуально отличны друг от друга). Задача сотрудника милиции дойти от верхней до нижней границы поля, не “взяв” взятку. В случае если сотрудник взял взятку “сон” начинается с исходного положения, но при этом в счёт игрока плюсуется стоимость взятки. Хорошим окончанием игры считается нулевой счёт игрока. Плохим – положительный счёт.
Описание имитационной модели
-
Типы ресурсов:
А) Сотрудник (игрок)
X,Y – координаты
Взятка: счёт игрока
Б) Взятка (тип взятки)
X,Y – координаты
Номер – одна из двух видов взяток
Очередь – состояние хода конкретной взятки
В) Игра (ход игры)
Состояние – какое действие/событие происходит
Ход – чей ход, игрока или взяток
Пропуск – пропускает ли активная сторона свой ход
Представление типов в коде программы:
$Resource_type Сотрудник : permanent
$Parameters
X : integer [1..10]
Y : integer [1..10]
Взятка2 : integer = 0
$End
$Resource_type Взятка : permanent
$Parameters
Номер : (Взятка, Взятка2)
Очередь : (ХОДИТ, ЖДЕТ)
X : integer [1..20]
Y : integer [1..20]
$End
$Resource_type Игра : permanent
$Parameters
Состояние : (ИГРА, Сотрудник_Взял_Взятку, Сотрудник_Удержался_От_Взяток,Взятки)
Ход : (Взятки, Сотрудник)
Пропуск : integer [0..2]
$End
-
Ресурсы:
А) Экземпляр_Взятка – враг №1
Б) Экземпляр_Взятка2 – враг №2
В) Экземпляр_Сотрудник – игрок
Г) Экземпляр_Игра – ход игры
Представление ресурсов в коде программы:
$Resources
Экземпляр_Взятка : Взятка Взятка ХОДИТ 5 1
Экземпляр_Взятка2 : Взятка Взятка2 ЖДЕТ 7 1
Экземпляр_Сотрудник : Сотрудник 3 10 0
Экземпляр_Игра : Игра ИГРА Сотрудник 0
$End
-
Операции
А)Образец_Сходить_Влево : keyboard, Образец_Сходить_Вправо : keyboard, Образец_Сходить_Вверх : keyboard, Образец_Сходить_Вниз : keyboard
- перемещение сотрудника милиции по полю, выполняются при активном ходе сотрудника и нажатии “стрелок на клавиатуре”
Б) Образец_Сотрудник_Взял_Взятку – выполняется в случае пересечения координат одной из взяток и сотрудника. Переводит игру в состояние перезапуска, добавляет цену взятки в счёт игрока.
В) Образец_Перезапуск – выполняет инициализационную настройку – расстановку игрока и взяток на поле.
Г) Образец_Сотрудник_Удержался_От_Взяток1,
Образец_Сотрудник_Удержался_От_Взяток11, Образец_Сотрудник_Удержался_От_Взяток2 – Три вида набора условий при которых игра переходин в завершенное состояние. Выполнятеся в случае а) игрок дошел до конца поля б) взякти дошли до конца поля в) Взятки пропускают ходы.
Д) Образец_Ход_Вправо, Образец_Ход, Образец_Обязательный_Ход, Образец_Пропуск_Хода – условия для выполнения активного хода активного противника.
-
Анимация
Использован 1 кадр анимации.
Общая (не условная анимация) отображает игровое поле, игрока, противников, счёт игры, подсказку управления.
Код представления общей части кадра в программе:
s_bmp [0, 0, 500, 400, Board, BoardMask]
s_bmp [100+Экземпляр_Сотрудник.X * 40 - 40, 400 - Экземпляр_Сотрудник.Y * 40, 40, 40, Police, PoliceMask]
s_bmp [100+Экземпляр_Взятка.X * 40 - 40, 400 - Экземпляр_Взятка.Y * 40, 40, 40, Dollar, DollarMask]
s_bmp [100+Экземпляр_Взятка2.X * 40 - 40, 400 - Экземпляр_Взятка2.Y * 40, 40, 40, Coin, CoinMask]
text [7, 7, 160, 15, transparent, <255 255 255>, < 'Взяток:']
text [7, 21, 160, 15, transparent, <255 255 255>, < '$']
text [16, 21, 160, 15, transparent, <255 255 255>, < Экземпляр_Сотрудник.Взятка2]
Тут последовательно:
А) задник
Б) сотрудник
В) Взятка №1 (банкнота)
Г) Взятка №2 (монета)
Д) Три тексовых поля для отображения счёта игрока
Условная часть кадра:
(Сообщение отображается в зависимотси от счёта игрока)
Код для сообщения “Ужас! Вы не удрежались от взяток”
Show_if Экземпляр_Игра.Состояние = Сотрудник_Удержался_От_Взяток and Экземпляр_Сотрудник.Взятка2 > 0
s_bmp [180, 130, 197, 119, Message]
text [200, 180, 180, 15, transparent, <0 0 0>, < 'Ужас! вы не']
text [200, 195, 180, 15, transparent, <0 0 0>, < 'удержались от взяток']
Код для сообщения “Поздравляем, вы удержались от взяток”
Show_if Экземпляр_Игра.Состояние = Сотрудник_Удержался_От_Взяток and Экземпляр_Сотрудник.Взятка2 = 0
s_bmp [180, 130, 197, 119, Message]
text [200, 180, 180, 15, transparent, <0 0 0>, < 'Поздравляем, вы']
text [200, 195, 180, 15, transparent, <0 0 0>, < 'удержались от взяток']
Рисунки:
а) Поле
Б) Слева направо: Сотрудник, Взятка 1, Взятка 2
В) Подложка под сообщения
Приложение (константы, функции):
$Constant
Максимум : integer = 500
Правая_Граница_Доски : integer = 10
Верхняя_Граница_Доски : integer = 10
$End
$Function Перевести_Таймер : integer
$Type = algorithmic
$Parameters
_Новое_Состояние : integer
$Body
Calculate_if _Новое_Состояние < Максимум
Перевести_Таймер = _Новое_Состояние + 1
Calculate_if _Новое_Состояние >= Максимум
Перевести_Таймер = 0
$End
$Function Сделать_Ход : integer
$Type = algorithmic
$Parameters
_X : integer
$Body
Calculate_if _X = 1
Сделать_Ход = _X + 1
Calculate_if _X = Правая_Граница_Доски or _X > 1 and _X < Правая_Граница_Доски
Сделать_Ход = _X - 1
$End
$Sequence Экспоненц_интервал : real [0.0 .. 0.5]
$Type = exponential 123456789
$End
9
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.














