Лабораторные работы (2010) (Lab1_SIMPR)

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

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

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











Лабораторная работа №1 по курсу

«Теория игр и исследование операций»











Выполнила:

Маслова Анастасия

Группа А-13-06

Проверила:

Гречкина Полина Викторовна









Москва, 29.04.10 г.

Оглавление

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

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

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

Пример работы 12

Приложение 12



































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

Сформировать модель принятия решений в виде совокупности таблиц решений и написать модуль-интерпретатор для данной модели.

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

Данная модель описывает упрощенный вариант игры «Марио». Опишем объекты, присутствующие в игре.

Игровое поле 6х37 клеток.

Марио (вперед) (назад) (шаг вперед) (шаг назад). «Главный герой» игры. Его задача – пройти по игровое поле от начала до конца.

Марио может:

  • делать шаг вперёд (или назад, если он смотрит назад) по Почве или Блоковой части, если нет препятствия

  • поворачиваться в обратную сторону

  • запрыгивать на ступеньку из Блоковой части высотой 1 клетка

  • спрыгивать со ступеньки из Блоковой части высотой 1 клетка

  • запрыгивать на Полку, если она на высоте 2 клетки

  • спрыгивать с Полки, если она на высоте 2 клетки

  • запрыгивать на Карман

  • спрыгивать с Кармана

  • разбивать Стену

  • запрыгивать по диагонали (на 1 клетку вверх и 2 клетки в сторону)

  • спрыгивать вниз по диагонали (на 1 клетку вниз и 2 клетки в сторону)

  • перепрыгивать яму, если её длина 1 клетка

  • перепрыгивать дырку

  • подбирать и считать Звёздочки

  • считать Бомбочки

  • перепрыгивать Бомбочки, если нет полки впереди или потолка

  • «раздавить» и посчитать Грибок

Фон . Если клетка не занята каким-либо объектом, она занята фоном.

Почва . Занимает всю нижнюю строку. Марио может ходить по Почве. Если Почвы нет, то это считается ямой. Если яма длиной в одну клетку, её возможно перепрыгнуть, если в две, Марио не может ее перепрыгнуть.

Блоковая часть . Строительная единица препятствий. По ней сверху Марио может перемещаться, но не может через него проходить.

Флажок, символизирующий ФИНИШ . Подойдя к нему вплотную, Марио понимает, что прошел всё игровое поле. Располагается всегда в последнем столбце, только на почве. Является постоянным объектом с фиксированным местоположением.

Звёздочка. При обнаружении звёздочки Марио подбирает ее. Ведется подсчет собранных Звёздочек. Но собирание Звёздочек не является главной задачей Марио, т.е. если он встретил Звёздочку он ее возьмёт, но если он обошёл Звёздочку другим путём, то возвращаться за ней Марио не будет. Является статичным объектом, но наличие/отсутствие и местоположение (при наличии) задается случайным образом в отведенных местах. Может располагаться только на Почве.

Бомбочка . При обнаружении Бомбочки Марио перепрыгивает её (если есть возможность) или обходит её другим путём. Ведётся подсчёт встреченных Бомбочек. Является статичным объектом, но наличие/отсутствие и местоположение (при наличии) задается случайным образом в отведенных местах. Может располагаться только на Почве.



Грибок . При обнаружении Грибка у Марио стоит задача запрыгнуть на него сверху и «раздавить». При отсутствии возможности (наличие «потолка») запрыгнуть Марио развернется и будет идти назад, пока либо не появится возможность прыгнуть и раздавить, либо не сможет запрыгнуть на полку и, спрыгнув с нее, «раздавить» Грибок. Грибок является полустатичным объектом. То есть, пока Марио не пойдёт к нему вплотную, он остаётся на своём месте, но если Марио начинает отходить назад, то Грибок его преследует: шаг Марио – шаг грибка к Марио и т.д. Наличие/отсутствие и местоположение (при наличии) грибка задается случайным образом в отведенных местах. Может располагаться только на Почве.

Символ исчезновения чего-либо . Появляется при подбирании Звёздочки на месте Звёздочки, на месте Грибка, когда Марио его раздавил, на месте Блоковых частей стены, которую разбивает Марио.

Определим понятия:

Яма – отсутствие почвы на нижней строчке.

Дырка – 1 клетка Фона между 2 клетками Блоковой части, расположенными на одной строке.

Потолок – клетка над Марио занята Блоковой частью.

Стена – преграда из трёх Блоковых частей, расположенных вертикально. Марио может её разбить. (Смотри Блок №4).

Полка – одна или несколько Блоковых частей, расположенных горизонтально через одну или более строчек от Почвы. (Смотри Блок №2, Блок №3, Блок №5, Блок №6, Блок №7, Блок №12).

Карман – полка, расположенная через одну строчку от Почвы и под самой правой Блоковой частью имеющая ещё одну Блоковую часть, которая как бы соединяет полку с Почвой. (Смотри Блок №1.)

Блок – составная часть игрового поля 6х8 клеток. Для игры определено 13 различных Блоков. Определены особые Стартовый (6х2, в котором нет ничего, кроме Фона, Почвы и Марио слева на Почве) и Финишный(6х3, в котором нет ничего, кроме Фона, Почвы и Флага справа на Почве) блоки.



Блок №0

Блок №1

Блок №2

Блок №3

Блок №4

Блок №5

Блок №6

Блок №7

Блок №8

Блок №9

Блок №10

Блок №11

Блок №12

Стартовый блок

Финишный блок





Для каждого Блока в отдельности определены места, в которых могут появляться Звёздочки, Бомбочки, Грибки:

Блок

Звёздочка

Бомбочка

Грибок

Блок №0

-------

-------

-------

Блок №1

1,2,3 и 4 клетки

2,3 и 4 клетки

1,2,3 и 4 клетки

Блок №2

1,2,3 и 8 клетки

2 и 3 клетки

1,2 и 3 клетки

Блок №3

1, 2, 3,4,5 и 7 клетки

2, 3,4,5 и 8 клетки, если уже есть Звёздочка или Грибок, то Бомбочки не будет

6 и 7 клетки

Блок №4

1, 2 и 6 клетки

-------

1 и 2 клетки

Блок №5

-------

-------

8 клетка

Блок №6

6 клетка

-------

8 клетка

Блок №7

-------

-------

-------

Блок №8

-------

-------

8 клетка

Блок №9

-------

-------

-------

Блок №10

1, 2, 3,4,5 и 7 клетки

2, 3,4,5 и 8 клетки, если в следующей клетке после Бомбочки есть Звёздочка или Грибок, то Бомбочки не будет

1, 2, 3,4,5 и 7 клетки

Блок №11

-------

-------

-------

Блок №12

1,2 и 3 клетки

2 и 3 клетки

1,2 и 3 клетки

Стартовый блок

-------

-------

-------

Финишный блок

-------

-------

-------



Игровое поле формируется из Стартового блока, четырёх произвольно выбранных Блоков, заполненных Звёздочками, Бомбочками и Грибками, и Финишного блока.

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

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

Таблица №1 «Движение»

Таблица №2 «Грибок»



Оптимизированная трансляция

Таблица №1



Таблица №2

Пример работы

Приложение

//$$---- Form CPP ----

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

#include

#pragma hdrstop

#include "MainUnit.h"

#include

#include

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

#pragma package(smart_init)

#pragma resource "*.dfm"

#define USERMESSAGE "MyMessage"

#define YES 1

#define NO 0

#define CONDITIONS 0

#define ACTIONS 1

#define BACK -1

#define FORWARD 1

TForm1 *Form1;

TStringList *ListIn = new TStringList;

AnsiString InFile = "Blocks.txt";

int playField[6][37];

int blocks[6][13][8];

bool bOpenFlag = true;

AnsiString strLine = "";

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

class TMario{

public:

int posx;

int posy;

int stars;

int mash;

int bombs;

int direction;

public:

__fastcall TMario() { posx = 0; posy = 4; direction = FORWARD; stars = 0; mash = 0; bombs = 0;};

//////////////////Условия - "Движение"///////////////////////////////////

int cond1(){ if(playField[posy][posx+1*direction]!=0)return TRUE; else return FALSE;};


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

Файл
141308.rtf
96977.rtf
4266.rtf
19612-1.rtf
158691.rtf




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