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

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

Содержание:

Содержание: 2

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

Общее описание предметной области, схема и правила поведения объектов. 3

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

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

Ресурсы 6

Операции 6

Интерфейс. 7

Константы, функции и таблицы. 9

Приложение. 14



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


Промоделировать игру «Крот» в системе РДО.

Смысл игры: Некий объект, наделенный силой передвигать ящики, именуемый кротом, должен собрать разбросанные ящики по лабиринту в указанное место. Движения крота по лабиринту - являются реакциями на нажатия пользователем на соответствующие клавиши клавиатуры.



Общее описание предметной области, схема и правила поведения объектов.


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


Правила игры предусматривают в модели следующие ограничения:


- ящик двигается только по направлению движения крота;

- крот не наделен силой, чтобы двигать два ящика, стоящих друг за другом;

- крот может передвигаться и двигать ящик только по полу;


Для начала работы модели необходимо запустить файл Game.smr.

Для завершения работы модели в любое время пользователю необходимо воспользоваться клавишей Esc.

Файл Game.smr приложен в конце отчета.


Пример игрового поля представлен ниже:



На рисунке:

Серым обозначены – стены.

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

Желтыми квадратами – ящики.

Желтыми кружками – метки, куда должны быть передвинуты ящики. При попадании ящика на метку он становится красным.

Красный квадрат – ящик, находящийся на предназначенном месте.


Управление игрой производится с помощью клавиатуры:


Стрелка влево – движение крота влево, если это возможно.

Стрелка вправо – движение крота право, если это возможно.

Стрелка вверх – движение крота вверх, если это возможно.

Стрелка вниз – движение крота вниз, если это возможно.

N – переход на следующий уровень, если текущий уровень пройден.

1-3 – безусловный переход на соответствующий уровень.

Esc – выход из игры, можно осуществить в любое время.





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

Типы ресурсов: их назначение, сами типы ресурсов (из файла) с комментариями;


В модели используются следующие ресурсы:

  1. Таймер - ресурс для отслеживания времени


// Ресурс для отслеживания времени

$Resource_type Таймер : permanent

$Parameters

Состояние : integer = 0 //Значение таймера

$End


2.Крот – ресурс описывающий крота


// Ресурс описывающий крота

$Resource_type Крот : permanent

$Parameters

Состояние : (Влево, Вправо, Вверх, Вниз) //Направление движения

X : integer [1..10] //Координата в привязанной системе координат по горизонтали

Y : integer [1..10] //Координата в привязанной системе координат по вертикали

$End


3.Ящик – ресурс описывающий ящик


// Ресурс описывающий ящик

$Resource_type Ящик : permanent

$Parameters

Состояние : (На_Месте, Не_На_Месте) //Состояние

X : integer [0..10] //Координата в привязанной системе координат по горизонтали

Y : integer [0..10] //Координата в привязанной системе координат по вертикали

$End


4.Игра – ресурс описывающий игру


// Ресурс описывающий игру

$Resource_type Игра : permanent

$Parameters

Состояние : (НАЧАЛО_УРОВНЯ, ИГРА, УРОВЕНЬ_ПРОЙДЕН, ИГРА_ЗАКОНЧЕНА, ВЫХОД) //Состояние

Уровень : integer [0..3] //Уровень игры

$End


Ресурсы: их назначение, сами ресурсы (из файла) с комментариями);


Для работы нашей игры мы создаем экземпляры ресурсов: таймер, игра, крот и количество ящиков как максимальное среди всех уровней. Начальное значение нас не интересует, так как в модели сразу сработает правило по присваиванию нужных значений. Надо только выставить состояние игры как НАЧАЛО_УРОВНЯ и уровень равный 1.


$Resources

// Задаем сразу максимальное кол-во ящиков на всех уровнях

// и все остальные нужные для игры ресурсы

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

// которое задаст нужные параметры, при состояниее игры как НАЧАЛО_УРОВНЯ

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

Экземпляр_Ящик_1 : Ящик Не_На_Месте 0 0

Экземпляр_Ящик_2 : Ящик Не_На_Месте 0 0

Экземпляр_Ящик_3 : Ящик Не_На_Месте 0 0

Экземпляр_Ящик_4 : Ящик Не_На_Месте 0 0

Экземпляр_Крот : Крот Вниз 1 1

Экземпляр_Игра : Игра НАЧАЛО_УРОВНЯ 1

$End


Операции: самих операций, их назначение, список операций (из файла) с комментариями.


Для работы модели, имитирующей игру предусмотрены следующие операции.


Перевод времени :

// Иррегулярное правило

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


Правило, определяющее последовательно в каком состоянии находится игра:

// Правила связанные с состоянием игры

Начало_Уровня_Игры : Образец_Начало_Уровня_Игры

Переход_Уровня : Образец_Переход_Уровня

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

Операции для работы в интерактивном режиме:


// Реакции на нажатия клавиш

Сходить_Влево : Образец_Сходить_Влево 'LEFT'

Сходить_Вправо : Образец_Сходить_Вправо 'RIGHT'

Сходить_Вверх : Образец_Сходить_Вверх 'UP'

Сходить_Вниз : Образец_Сходить_Вниз 'DOWN'

Перейти_На_Следующий_Уровень: Образец_Перейти_На_Следующий_Уровень 'N'

Перейти_На_Уровень_1 : Образец_Перейти_На_Уровень_1 '1'

Перейти_На_Уровень_2 : Образец_Перейти_На_Уровень_2 '2'

Перейти_На_Уровень_3 : Образец_Перейти_На_Уровень_3 '3'

Выход : Образец_Выход 'ESCAPE'

Правило, позволяющее кроту оставаться на своем месте, если его ход не возможен:


// Правила по определению возможного места крота

В_Одном_Месте_Лево : Образец_В_Одном_Месте_Лево

В_Одном_Месте_Право : Образец_В_Одном_Месте_Право

В_Одном_Месте_Верх : Образец_В_Одном_Месте_Верх

В_Одном_Месте_Низ : Образец_В_Одном_Месте_Низ

$End


Интерфейс.


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


// Задний фон

$Back_picture = <0 0 0> 300 410


Потом рисунков уровня:


// Загрузка рисунков уровня

Show_if Экземпляр_Игра.Уровень = 1

s_bmp [0, 0, 300, 380, Уровень_1]

Show_if Экземпляр_Игра.Уровень = 2

s_bmp [0, 0, 300, 410, Уровень_2]

Show_if Экземпляр_Игра.Уровень = 3

s_bmp [0, 0, 300, 350, Уровень_3]


Рисуем крота и ящики в их месторасположениях:


// Отрисовываем крота с ящиками

Show

s_bmp [(Экземпляр_Крот.X - 1) * 30, (Экземпляр_Крот.Y - 1) * 30, 30, 30, вниз_0]

s_bmp [(Экземпляр_Ящик_1.X - 1) * 30, (Экземпляр_Ящик_1.Y - 1) * 30, 30, 30, Ящик]

s_bmp [(Экземпляр_Ящик_2.X - 1) * 30, (Экземпляр_Ящик_2.Y - 1) * 30, 30, 30, Ящик]

s_bmp [(Экземпляр_Ящик_3.X - 1) * 30, (Экземпляр_Ящик_3.Y - 1) * 30, 30, 30, Ящик]

s_bmp [(Экземпляр_Ящик_4.X - 1) * 30, (Экземпляр_Ящик_4.Y - 1) * 30, 30, 30, Ящик]


В случае если ящик стоит уже на месте, рисуем его красным:


// Если ящик на месте, то сделать его красным

Show_if Экземпляр_Ящик_1.Состояние = На_Месте

s_bmp [(Экземпляр_Ящик_1.X - 1) * 30, (Экземпляр_Ящик_1.Y - 1) * 30, 30, 30, Красный_ящик]

Show_if Экземпляр_Ящик_2.Состояние = На_Месте

s_bmp [(Экземпляр_Ящик_2.X - 1) * 30, (Экземпляр_Ящик_2.Y - 1) * 30, 30, 30, Красный_ящик]

Show_if Экземпляр_Ящик_3.Состояние = На_Месте

s_bmp [(Экземпляр_Ящик_3.X - 1) * 30, (Экземпляр_Ящик_3.Y - 1) * 30, 30, 30, Красный_ящик]

Show_if Экземпляр_Ящик_4.Состояние = На_Месте

s_bmp [(Экземпляр_Ящик_4.X - 1) * 30, (Экземпляр_Ящик_4.Y - 1) * 30, 30, 30, Красный_ящик]

В зависимости от того куда направляетяс крот, рисуем его изображение:

// Поочередно меняем рисунки крота в зависимости от его состояние

Show_if Экземпляр_Крот.Состояние = Вверх and Frac(Seconds/2) = 0

s_bmp [(Экземпляр_Крот.X - 1) * 30, (Экземпляр_Крот.Y - 1) * 30, 30, 30, вверх_0]

Show_if Экземпляр_Крот.Состояние = Вверх and Frac(Seconds/2) <> 0

s_bmp [(Экземпляр_Крот.X - 1) * 30, (Экземпляр_Крот.Y - 1) * 30, 30, 30, вверх_1]

Show_if Экземпляр_Крот.Состояние = Вниз and Frac(Seconds/2) = 0

s_bmp [(Экземпляр_Крот.X - 1) * 30, (Экземпляр_Крот.Y - 1) * 30, 30, 30, вниз_0]

Show_if Экземпляр_Крот.Состояние = Вниз and Frac(Seconds/2) <> 0

s_bmp [(Экземпляр_Крот.X - 1) * 30, (Экземпляр_Крот.Y - 1) * 30, 30, 30, вниз_1]

Show_if Экземпляр_Крот.Состояние = Влево and Frac(Seconds/2) = 0

s_bmp [(Экземпляр_Крот.X - 1) * 30, (Экземпляр_Крот.Y - 1) * 30, 30, 30, влево_0]

Show_if Экземпляр_Крот.Состояние = Влево and Frac(Seconds/2) <> 0

s_bmp [(Экземпляр_Крот.X - 1) * 30, (Экземпляр_Крот.Y - 1) * 30, 30, 30, влево_1]

Show_if Экземпляр_Крот.Состояние = Вправо and Frac(Seconds/2) = 0

s_bmp [(Экземпляр_Крот.X - 1) * 30, (Экземпляр_Крот.Y - 1) * 30, 30, 30, вправо_0]

Show_if Экземпляр_Крот.Состояние = Вправо and Frac(Seconds/2) <> 0

s_bmp [(Экземпляр_Крот.X - 1) * 30, (Экземпляр_Крот.Y - 1) * 30, 30, 30, вправо_1]


Если уровень пройден или игра закончена, то появлется соответствующее уведомление:


// Уведомление о состоянии игры

Show_if Экземпляр_Игра.Состояние = УРОВЕНЬ_ПРОЙДЕН

text [35, 50, 180, 15, transparent, <255 255 255>, < 'УРОВЕНЬ_ПРОЙДЕН!']

Show_if Экземпляр_Игра.Состояние = ИГРА_ЗАКОНЧЕНА

text [35, 50, 180, 15, transparent, <255 255 255>, < 'ИГРА_ЗАКОНЧЕНА']


Константы, функции и таблицы.

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


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

Constant

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

$End


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

$Type = algorithmic

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

$Body

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

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

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

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

$End


// Таблица уровней со стенами - 1, свободными полями - 0, и пунктами назначения - 2

$Function Таблица_3 : integer [0..4]

$Type = table

$Parameters

Параметр_1 : integer [1..10]

Параметр_2 : integer [1..10]

Параметр_3 : integer [1..3]

$Body

{ Параметр_3 = 1 }

{ Параметр_1 = 1 2 3 4 5 6 7 8 9 10 }

{ Параметр_2 }

{ 1 } 1 1 1 1 1 1 1 1 1 1

{ 2 } 1 1 1 2 1 1 1 1 1 1

{ 3 } 1 1 1 0 1 1 1 1 1 1

{ 4 } 1 1 1 0 0 0 2 1 1 1

{ 5 } 1 2 0 0 0 1 1 1 1 1

{ 6 } 1 1 1 1 0 1 1 1 1 1

{ 7 } 1 1 1 1 2 1 1 1 1 1

{ 8 } 1 1 1 1 1 1 1 1 1 1

{ 9 } 1 1 1 1 1 1 1 1 1 1

{ 10 } 1 1 1 1 1 1 1 1 1 1

{ Параметр_3 = 2 }

{ Параметр_1 = 1 2 3 4 5 6 7 8 9 10}

{ Параметр_2 }

{ 1 } 1 1 1 1 1 1 1 1 1 1

{ 2 } 1 0 0 0 1 1 1 1 1 1

{ 3 } 1 0 0 0 1 1 1 1 1 1

{ 4 } 1 0 0 0 1 1 1 2 1 1

{ 5 } 1 1 1 0 1 1 1 2 1 1

{ 6 } 1 1 1 0 0 0 0 2 1 1

{ 7 } 1 1 0 0 0 1 0 0 1 1

{ 8 } 1 1 0 0 0 1 1 1 1 1

{ 9 } 1 1 1 1 1 1 1 1 1 1

{ 10 } 1 1 1 1 1 1 1 1 1 1

{ Параметр_3 = 3 }

{ Параметр_1 = 1 2 3 4 5 6 7 8 9 10}

{ Параметр_2 }

{ 1 } 1 1 1 1 1 1 1 1 1 1

{ 2 } 1 1 0 0 0 0 0 1 1 1

{ 3 } 1 1 0 1 1 1 0 0 0 1

{ 4 } 1 0 0 0 0 0 0 0 0 1

{ 5 } 1 0 2 2 1 0 0 0 1 1

{ 6 } 1 1 2 2 1 0 0 0 1 1

{ 7 } 1 1 1 1 1 1 1 1 1 1

{ 8 } 1 1 1 1 1 1 1 1 1 1

{ 9 } 1 1 1 1 1 1 1 1 1 1

{ 10 } 1 1 1 1 1 1 1 1 1 1

$End


// Таблица с местоположением крота и ящиками на начало уровней

$Function Таблица_Координат : integer [0..10]

$Type = table

$Parameters

Параметр_1 : integer [1..2]

Параметр_2 : integer [1..5]

Параметр_3 : integer [1..3]

$Body

{ Параметр_3 = 1 }

{ Параметр_1 = X Y}

{ Параметр_2 }

{ Ящик_1 } 4 4

{ Ящик_2 } 4 5

{ Ящик_3 } 6 4

{ Ящик_4 } 5 6

{ Крот } 5 5

{ Параметр_3 = 2 }

{ Параметр_1 = X Y}

{ Параметр_2 }

{ Ящик_1 } 3 3

{ Ящик_2 } 4 3

{ Ящик_3 } 3 4

{ Ящик_4 } 0 0

{ Крот } 2 2

{ Параметр_3 = 3 }

{ Параметр_1 = X Y}

{ Параметр_2 }

{ Ящик_1 } 3 3

{ Ящик_2 } 5 4

{ Ящик_3 } 8 4

{ Ящик_4 } 7 5

{ Крот } 3 4

$End


// Состояние ящиков на начало уровней

$Function Таблица_Состояния_Ящиков : such_as Ящик.Состояние

$Type = table

$Parameters

Параметр_1 : integer [1..3]

Параметр_2 : integer [1..4]

$Body

{ Параметр_1 = 1 2 3 }

{ Параметр_2 }

{ Ящик_1 } Не_На_Месте Не_На_Месте Не_На_Месте

{ Ящик_2 } Не_На_Месте Не_На_Месте Не_На_Месте

{ Ящик_3 } Не_На_Месте Не_На_Месте Не_На_Месте

{ Ящик_4 } Не_На_Месте На_Месте Не_На_Месте

$End


//-------------------------------------------------------------------



// Проверку на блакаду

$Function Стена_Блокада_Сверху : integer

$Type = algorithmic

$Parameters

X1 : such_as Крот.X

Y1 : such_as Крот.Y

$Body

Calculate_if Таблица_3(X1, Y1 - 2, Экземпляр_Игра.Уровень) = 1

Стена_Блокада_Сверху = 1

Calculate_if not (Таблица_3(X1, Y1 - 2, Экземпляр_Игра.Уровень) = 1)

Стена_Блокада_Сверху = 0

$End


// Проверку на блакаду

$Function Ящик_Возможная_Блокада_Сверху : integer

$Type = algorithmic

$Parameters

X1 : such_as Ящик.X

Y1 : such_as Ящик.Y

X2 : such_as Крот.X

Y2 : such_as Крот.Y

$Body

Calculate_if X1 = X2 and Y1 = Y2 - 2

Ящик_Возможная_Блокада_Сверху = 1

Calculate_if not (X1 = X2 and Y1 = Y2 - 2)

Ящик_Возможная_Блокада_Сверху = 0

$End


// Возможен ли толчок?

$Function Толкнуть_Вверх : integer

$Type = algorithmic

$Parameters

X1 : such_as Ящик.X

Y1 : such_as Ящик.Y

X2 : such_as Ящик.X

Y2 : such_as Ящик.Y

X3 : such_as Крот.X

Y3 : such_as Крот.Y

$Body

Calculate_if X1 = X3 and Y1 = Y3 - 1 and Стена_Блокада_Сверху(X3, Y3) = 0 and Ящик_Возможная_Блокада_Сверху(X2, Y2, X3, Y3) = 0

Толкнуть_Вверх = 1

Calculate_if not (X1 = X3 and Y1 = Y3 - 1 and Стена_Блокада_Сверху(X3, Y3) = 0 and Ящик_Возможная_Блокада_Сверху(X2, Y2, X3, Y3) = 0)

Толкнуть_Вверх = 0

$End


//------------------------------------------------------------------------------------------------------------


// Проверку на блакаду

$Function Стена_Блокада_Снизу : integer

$Type = algorithmic

$Parameters

X1 : such_as Крот.X

Y1 : such_as Крот.Y

$Body

Calculate_if Таблица_3(X1, Y1 + 2, Экземпляр_Игра.Уровень) = 1

Стена_Блокада_Снизу = 1

Calculate_if not (Таблица_3(X1, Y1 + 2, Экземпляр_Игра.Уровень) = 1)

Стена_Блокада_Снизу = 0

$End


// Проверку на блакаду

$Function Ящик_Возможная_Блокада_Снизу : integer

$Type = algorithmic

$Parameters

X1 : such_as Ящик.X

Y1 : such_as Ящик.Y

X2 : such_as Крот.X

Y2 : such_as Крот.Y

$Body

Calculate_if X1 = X2 and Y1 = Y2 + 2

Ящик_Возможная_Блокада_Снизу = 1

Calculate_if not (X1 = X2 and Y1 = Y2 + 2)

Ящик_Возможная_Блокада_Снизу = 0

$End


// Возможен ли толчок?

$Function Толкнуть_Вниз : integer

$Type = algorithmic

$Parameters

X1 : such_as Ящик.X

Y1 : such_as Ящик.Y

X2 : such_as Ящик.X

Y2 : such_as Ящик.Y

X3 : such_as Крот.X

Y3 : such_as Крот.Y

$Body

Calculate_if X1 = X3 and Y1 = Y3 + 1 and Стена_Блокада_Снизу(X3, Y3) = 0 and Ящик_Возможная_Блокада_Снизу(X2, Y2, X3, Y3) = 0

Толкнуть_Вниз = 1

Calculate_if not (X1 = X3 and Y1 = Y3 + 1 and Стена_Блокада_Снизу(X3, Y3) = 0 and Ящик_Возможная_Блокада_Снизу(X2, Y2, X3, Y3) = 0)

Толкнуть_Вниз = 0

$End


//-------------------------------------------------------------------


// Проверку на блакаду

$Function Стена_Блокада_Слева : integer

$Type = algorithmic

$Parameters

X1 : such_as Крот.X

Y1 : such_as Крот.Y

$Body

Calculate_if Таблица_3(X1 - 2, Y1, Экземпляр_Игра.Уровень) = 1

Стена_Блокада_Слева = 1

Calculate_if not (Таблица_3(X1 - 2, Y1, Экземпляр_Игра.Уровень) = 1)

Стена_Блокада_Слева = 0

$End


// Проверку на блакаду

$Function Ящик_Возможная_Блокада_Слева : integer

$Type = algorithmic

$Parameters

X1 : such_as Ящик.X

Y1 : such_as Ящик.Y

X2 : such_as Крот.X

Y2 : such_as Крот.Y

$Body

Calculate_if X1 = X2 - 2 and Y1 = Y2

Ящик_Возможная_Блокада_Слева = 1

Calculate_if not (X1 = X2 - 2 and Y1 = Y2)

Ящик_Возможная_Блокада_Слева = 0

$End


// Возможен ли толчок?

$Function Толкнуть_Влево : integer

$Type = algorithmic

$Parameters

X1 : such_as Ящик.X

Y1 : such_as Ящик.Y

X2 : such_as Ящик.X

Y2 : such_as Ящик.Y

X3 : such_as Крот.X

Y3 : such_as Крот.Y

$Body

Calculate_if X1 = X3 - 1 and Y1 = Y3 and Стена_Блокада_Слева(X3, Y3) = 0 and Ящик_Возможная_Блокада_Слева(X2, Y2, X3, Y3) = 0

Толкнуть_Влево = 1

Calculate_if not (X1 = X3 - 1 and Y1 = Y3 and Стена_Блокада_Слева(X3, Y3) = 0 and Ящик_Возможная_Блокада_Слева(X2, Y2, X3, Y3) = 0)

Толкнуть_Влево = 0

$End


//-------------------------------------------------------------------


// Проверку на блакаду

$Function Стена_Блокада_Справа : integer

$Type = algorithmic

$Parameters

X1 : such_as Крот.X

Y1 : such_as Крот.Y

$Body

Calculate_if Таблица_3(X1 + 2, Y1, Экземпляр_Игра.Уровень) = 1

Стена_Блокада_Справа = 1

Calculate_if not (Таблица_3(X1 + 2, Y1, Экземпляр_Игра.Уровень) = 1)

Стена_Блокада_Справа = 0

$End


// Проверку на блакаду

$Function Ящик_Возможная_Блокада_Справа : integer

$Type = algorithmic

$Parameters

X1 : such_as Ящик.X

Y1 : such_as Ящик.Y

X2 : such_as Крот.X

Y2 : such_as Крот.Y

$Body

Calculate_if X1 = X2 + 2 and Y1 = Y2

Ящик_Возможная_Блокада_Справа = 1

Calculate_if not (X1 = X2 + 2 and Y1 = Y2)

Ящик_Возможная_Блокада_Справа = 0

$End


// Возможен ли толчок?

$Function Толкнуть_Вправо : integer

$Type = algorithmic

$Parameters

X1 : such_as Ящик.X

Y1 : such_as Ящик.Y

X2 : such_as Ящик.X

Y2 : such_as Ящик.Y

X3 : such_as Крот.X

Y3 : such_as Крот.Y

$Body

Calculate_if X1 = X3 + 1 and Y1 = Y3 and Стена_Блокада_Справа(X3, Y3) = 0 and Ящик_Возможная_Блокада_Справа(X2, Y2, X3, Y3) = 0

Толкнуть_Вправо = 1

Calculate_if not (X1 = X3 + 1 and Y1 = Y3 and Стена_Блокада_Справа(X3, Y3) = 0 and Ящик_Возможная_Блокада_Справа(X2, Y2, X3, Y3) = 0)

Толкнуть_Вправо = 0

$End


//----------------------------------------------------------


// На месте ли ящик?

$Function Ящик_На_Месте : such_as Ящик.Состояние

$Type = algorithmic

$Parameters

X1 : such_as Ящик.X

Y1 : such_as Ящик.Y

$Body

Calculate_if Таблица_3(X1, Y1, Экземпляр_Игра.Уровень) = 2

Ящик_На_Месте = На_Месте

Calculate_if not (Таблица_3(X1, Y1, Экземпляр_Игра.Уровень) = 2)

Ящик_На_Месте = Не_На_Месте

$End


Приложение.


Файл PAT

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

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

$Relevant_resources

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

$Time = 0.001

$Body

_Таймер

Convert_event

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

$End


//--------------------------------------------------------


// Начало уровня


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

Файл
140981.doc
С1-28.doc
101625.rtf
23145.rtf
16734.rtf




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