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

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















Отчет


по лабораторной работе №1

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

















Выполнил

студент группы А-13-05

Леонов В.С.

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












2009 год.











Содержание



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


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


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


4. Приложение………………………………………………………………………….....8





























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

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




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

Данная модель описывает поведение бабки и деда: цель бабки – собрать все имеющиеся в парке пивные бутылки, цель деда – поймать бабку. Игра начинается с позиции, указанной на рис1. Начальное состояние игры задается в текстовом файле (кол-во бутылок; позиции бабки, деда и бутылок). При этом игра может закончиться в двух случаях: если бабка соберет все имеющиеся на поле бутылки, и если дед поймает бабку.


Окно программы-интерпретатора (начальное состояние, заданное в lab1.txt):



Рис 1.




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

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


Таблица №1 (бабка).













Бабка может двигаться только на одну клетку по вертикали или горизонтали. Шаг бабки в какую-либо сторону зависит от того, где находятся бутылки. Логика такова, что бабка всегда старается собрать бутылки.








Таблица №2 (дед).






Дед может двигаться только на одну клетку по вертикали или горизонтали. Он всегда находится в движении. Шаг деда в какую-либо сторону зависит от того, видит ли он бабку. Логика такова, что если бабка в поле зрения, то дед пытается по кратчайшему пути ее догнать.





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


Таблица №1.


Таблица №2.



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


  1. Бабака собрала все бутылки

  2. Бабка попалась




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

Модуль-интерпретатор реализован на языке Delphi. Он состоит из двух частей: Unit1.pas, который содержит код общения программы со средой СИМПР и возвращает ей результат запроса посредством объекта Message: TMessage, и Unit2.pas, который содержит описание объектов моделирования системы.


Unit1.pas:


const

MESSAGE_STR='MyMessage';

No=0;

Yes=1;


type


TForm = class(TForm)

...

procedure WndProc(var Message: TMessage);override;

...

public

msgSIMPR:UINT;

end;


procedure TCubeForm.FormCreate(Sender: TObject);

begin

MsgSIMPR:=RegisterWindowMessage(MESSAGE_STR);

end;


procedure TJuzn.WndProc(var Message: TMessage);

var

res:boolean;

begin

if message.Msg=msgSIMPR then

begin

//ПОЛУЧИЛИ СООБЩЕНИЕ!!!!!!!!!!

Res:=false;

if message.WParamHi=0 then

begin

//УСЛОВИЕ!!!!!!!!!!

case message.WParamLo of

1: //таблица 1

begin

Lab.TakeCoin;

case message.LParam of

1: // условие 1

begin

if ((Lab.Man.GetX = Lab.Enemy[k].GetX) and

(Lab.Man.GetY = Lab.Enemy[k].GetY)) then

Res := true;

end;

2: // условие 2

begin

if (Lab.IsCashOnWay(Lab.Man,Lab.Man.GetDirection)) then

Res := true;

end;

...

// условия 3-6

...

7:

begin

if (Lab.AreThereCoins) then

Res := true;

end;

end;

end;

2: //таблица 2

begin

case message.LParam of

1: // условие 1

begin

if ((Lab.Man.GetX = Lab.Enemy[k].GetX) and

(Lab.Man.GetY = Lab.Enemy[k].GetY)) then

Res := true;

end;

2: // условие 2

begin

if (Lab.IsManOnWay(Lab.Enemy[k],Lab.Enemy[k].LeftSide)) then

Res := true;

end;

3: // условие 3

begin

if (Lab.IsManOnWay(Lab.Enemy[k],Lab.Enemy[k].RightSide)) then

Res := true;

end;

4: // условие 4

begin

if (Lab.IsManOnWay(Lab.Enemy[k],Lab.Enemy[k].BackSide)) then

Res := true;

end;

end;

end;

end;

end;


if message.WParamHi = 1 then

begin

//Действие!!!!!!!!!!

case message.WParamLo of

1: //таблица 1

begin

case message.LParam of

1: // действие 1

begin

end;

2: // действие 2

begin

if Lab.IsForwardWay(Lab.Man) then

Lab.Man.Move

else

Lab.TurnRandomWay(Lab.Man);

end;

3: // действие 3

begin

Lab.Man.Turn(Lab.Man.LeftSide);

if Lab.IsForwardWay(Lab.Man) then

Lab.Man.Move

else

Lab.TurnRandomWay(Lab.Man);

end;

4: // действие 4

begin

Lab.Man.Turn(Lab.Man.RightSide);

if Lab.IsForwardWay(Lab.Man) then

Lab.Man.Move

else

Lab.TurnRandomWay(Lab.Man);

end;

5: // действие 5

begin

Lab.Man.Turn(Lab.Man.BackSide);

if Lab.IsForwardWay(Lab.Man) then

Lab.Man.Move

else

Lab.TurnRandomWay(Lab.Man);

end;

6: // действие 6

begin

ShowMessage('Завершение: Бабка собрала все бутылки');

end;

end;

end;

2: // действия таблицы 2: 1 -4

begin

end;

DrawGrid1.Repaint;

Sleep(500);

end;

end;

Res:=true;

end;


if res then

message.Result:=1

else

message.Result:=0;


end

else

inherited WndProc(Message);

end;


end.

10




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

Файл
163413.rtf
114833.rtf
ВСН 126-90.doc
36107.rtf
2645-1.rtf




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