Otchet (990470)

Файл №990470 Otchet (Лабораторные работы (2007))Otchet (990470)2015-08-22СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

Отчет к лабораторной работе № 1

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

Проектирование с помощью инструментального комплекса СИМПР

Программа имитирующая «Парк»

Выполнила студентка Группы А-05-03

Чуброва Н.Е

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

Еремеев А.П.

18.04.2007

МЭИ. 2007 г.

Содержание.

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

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

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

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

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

Разработать табличную модель принятия решений в среде СИМПР для модели парка, и разработать имитационный модуль программы модели «Парк» с тремя людьми.

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

Цель модели: Пройти заданное расстояние каждым человеком.

Человек 1 должен пройти по часовой стрелке 3 круга в парке, при этом, если встречает человека 2, он должен его пропустить, а если человека 3 – обойти.

Человек 2 проходит один раз парк из одного угла в противоположный, при этом, если он встречает человека 1, он проходит мимо, если человека 3, тоже, а если обоих, то пропускает человека 3.

Человек 3 должен пройти 3 круга против часовой стрелки, если встречает человека 1 – проходит мимо, человека 2 пропускает, а если обоих – проходит.

Вид программы:

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

Для реализации игры потребовалось 5 таблиц.

Таблица 1: Начало

Создает людей в начале игры

Таблица 2: Распределительная таблица

Принимает решение кому отдать ход.

Таблица 3: Стратегия человека 1

Принимает решение на очередной ход.

Таблица 4: Стратегия человека 2

Принимает решение на очередной ход.

Таблица 5: Стратегия человека 3

Принимает решение на очередной ход.

Приложение. Модуль исходных текстов программы. Разработано в среде Borland Developer Studio 2006.

unit ParkU1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ImgList, ExtCtrls, StdCtrls;

const

MESSAGE_STR='MyMessage';

No=0;

Yes=1;

type

TForm1 = class(TForm)

Image1: TImage;

ImageList1: TImageList;

Image2: TImage;

Image3: TImage;

Image4: TImage;

ListBox1: TListBox;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

procedure FormCreate(Sender: TObject);

Procedure WNDProc ( var Message: Tmessage); override;

private

{ Private declarations }

public

msgSIMPR: UINT;

{ Public declarations }

end;

Type TMen = record

Edge : byte; //сторона квадрата, на которой человек [1,2,3,4]

PosM : byte; //точка на которой сейчас находится [1..107]

beg : boolean; //начал ли игрок

act : boolean; //присутствует ли сейчал в парке

obh : boolean; //обходит ли кого либо

PosO : byte; //номер шага обхода

Prop : boolean; //пропускаем ли кого то

PosP : byte; // шаг пропуска

IndE : array [1..4] of byte; //Номер картинки на стороне 1,2,3,4

SmX : Integer; // Смещение по Х

SmY : Integer; // Смещение по У

colK : byte; // количество пройденных кругов

NE : byte; // начальная сторона

NP : byte; // Начальная точка

end;

Type TPeople = array [1..3] of TMen;

var

Form1: TForm1;

mens : TPeople;

stor : byte; //задание начальной стороны человека

mp : byte; //задание случайной позиции человека

hod : byte; // кто последний ходил

met12 : Integer; // Метрики, для сохранения

Omet12 : Integer; // расстояния между людьми

met13 : Integer; // Если они уменьшаются, то люди приближаются

Omet13 : Integer; // --//--

met23 : Integer; // --//--

Omet23 : Integer; // --//--

flag : boolean; //просто флаг

last : integer; //кто последний ходил

count : integer; //сколько раз подряд

implementation

{$R *.dfm}

//процедура задержки

procedure Delay(msecs : Longint);

var FirstTick : longint;

begin FirstTick:=GetTickCount;

repeat Application.ProcessMessages;

until GetTickCount-FirstTick >= msecs;

end;

procedure TForm1.WndProc (var Message : TMessage);

var

res: boolean;

begin // of proc wnd

res:= false;

If message.Msg=msgSIMPR then

begin //2begin

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

// Условия

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

If message.WParamHi=0 then

begin

case message.WParamLo of //Выбор таблиц условий

//------------------------------Таблица № 1 Условия---------------------------

1: begin // 1

case message.LParam of

1: begin

if ((mens[1].beg=false )and

(mens[2].beg=false )and

(mens[3].beg=false)) then res := true;

end;

2: begin

res := mens[1].beg;

end;

3: begin

res := mens[2].beg;

end;

4: begin

res := mens[3].beg;

end;

end; //case Таблица 1 (условия)

end; //end таблицы 1 (условия)

//

//-------------(Условия)Таблица №2 - Распределитель парка-----------------------

2: begin // 2

case message.LParam of //c2

1: begin

if hod=0 then res := true;

if count>=30 then begin

mens[1].Prop:= false;

mens[2].Prop:= false;

mens[3].Prop:= false;

mens[1].PosP:=0;

mens[2].PosP:=0;

mens[3].PosP:=0;

end;

end;

2: begin

if hod=1 then res := true;

if count>=30 then begin

mens[1].Prop:= false;

mens[2].Prop:= false;

mens[3].Prop:= false;

mens[1].PosP:=0;

mens[2].PosP:=0;

mens[3].PosP:=0;

end;

end;

3: begin

if hod=2 then res := true;

if count>=30 then begin

mens[1].Prop:= false;

mens[2].Prop:= false;

mens[3].Prop:= false;

mens[1].PosP:=0;

mens[2].PosP:=0;

mens[3].PosP:=0;

end;

end;

4: begin

if hod=3 then res := true;

if count>=30 then begin

mens[1].Prop:= false;

mens[2].Prop:= false;

mens[3].Prop:= false;

mens[1].PosP:=0;

mens[2].PosP:=0;

mens[3].PosP:=0;

end;

end;

5: begin

if mens[1].act=true then res := true;

if count>=30 then begin

mens[1].Prop:= false;

mens[2].Prop:= false;

mens[3].Prop:= false;

mens[1].PosP:=0;

mens[2].PosP:=0;

mens[3].PosP:=0;

end;

end;

6: begin

if mens[2].act=true then res := true;

if count>=30 then begin

mens[1].Prop:= false;

mens[2].Prop:= false;

mens[3].Prop:= false;

mens[1].PosP:=0;

mens[2].PosP:=0;

mens[3].PosP:=0;

end;

end;

7: begin

if mens[3].act=true then res := true;

if count>=30 then begin

mens[1].Prop:= false;

mens[2].Prop:= false;

mens[3].Prop:= false;

mens[1].PosP:=0;

mens[2].PosP:=0;

mens[3].PosP:=0;

end;

end;

8: begin

if ((mens[1].act=false)and

(mens[2].act=false)and

(mens[3].act=false))then res := true;

ListBox1.Items.Clear;

label1.Caption:=IntToStr(met12);

label2.Caption:=IntToStr(met13);

label3.Caption:=IntToStr(met23);

label4.Caption:=IntToStr(omet12);

label5.Caption:=IntToStr(omet13);

label6.Caption:=IntToStr(omet23);

if count>=30 then begin

mens[1].Prop:= false;

mens[2].Prop:= false;

mens[3].Prop:= false;

mens[1].PosP:=0;

mens[2].PosP:=0;

mens[3].PosP:=0;

end;

end;

end; //case Таблица 2 (условия)

end; // end таблицы 2 (условия)

//

//-------------Таблица №3(Условия) Человек1 ------------------------------------

3: begin // 3

case message.LParam of //c3

1: begin

if ((met12>30)and((met13>40)or(mens[1].Edge<>mens[3].Edge) ))then res := true;

if (((met12<30)and(Omet12-met12<0))and

((met13>40)or (Omet13-met13<0))) then res := true;

if (((met13<40)and(Omet13-met13<0))and

((met12>30)or (Omet12-met12<0))) then res := true;

ListBox1.Items.Add('ч1 у1 ='+BoolToStr(res));

end;

2: begin

if (met12<=30) then res := true;

ListBox1.Items.Add('ч1 у2 ='+BoolToStr(res));

end;

3: begin

if (((met13<=40)and(mens[1].PosM+mens[3].PosM<107)and

(mens[1].Edge=mens[3].Edge))) then res := true;

ListBox1.Items.Add('ч1 у3 ='+BoolToStr(res));

label1.Caption:=IntToStr(met12);

label2.Caption:=IntToStr(met13);

label3.Caption:=IntToStr(met23);

label4.Caption:=IntToStr(omet12);

label5.Caption:=IntToStr(omet13);

label6.Caption:=IntToStr(omet23);

end;

4: begin

if met12<met13 then res := true;

ListBox1.Items.Add('ч1 у4 ='+BoolToStr(res));

end;

5: begin

if met13<met12 then res := true;

ListBox1.Items.Add('ч1 у5 ='+BoolToStr(res));

end;

6: begin

res := Mens[1].obh;

ListBox1.Items.Add('ч1 у6 ='+BoolToStr(res));

end;

7: begin

res := Mens[1].Prop;

ListBox1.Items.Add('ч1 у7 ='+BoolToStr(res));

end;

8: begin

if ((Mens[1].NE = Mens[1].Edge) and

(Mens[1].NP = Mens[1].PosM)) then res := true;

ListBox1.Items.Add('ч1 у8 ='+BoolToStr(res));

end;

9: begin

if Mens[1].colK=4 then res := true;

ListBox1.Items.Add('ч1 у9 ='+BoolToStr(res));

end;

end; //case Таблица 3 (условия)

end; // end таблицы 3 (условия)

//

//-------------Таблица №4(Условия) - Человек 2 ---------------------------------

4: begin // 4

case message.LParam of //c4

1: begin

if ((met12>30)and(met23>30))then res := true;

if (((met12<30)and(Omet12-met12<0))and

((met23>30)or (Omet23-met23<0))) then res := true;

if (((met23<30)and(Omet23-met23<0))and

((met12>30)or (Omet12-met12<0))) then res := true;

ListBox1.Items.Add('ч2 у1 ='+BoolToStr(res));

end;

2: begin

if (met12<=30) then res := true;

ListBox1.Items.Add('ч2 у2 ='+BoolToStr(res));

end;

3: begin

if (met23<=30) then res := true;

ListBox1.Items.Add('ч2 у3 ='+BoolToStr(res));

end;

4: begin

case mens[2].NE of

1: begin

if Image3.Top<33 then res:= true;

end;

2: begin

if Image3.Top>247 then res := true;

end;

3: begin

if Image3.Left<90 then res := true;

end;

4: begin

if Image3.Left>520 then res := true;

end;

end;

ListBox1.Items.Add('ч2 у4 ='+BoolToStr(res));

end;

end; //case Таблица 4 (условия)

end; // end таблицы 4 (условия)

//

//-------------Таблица №5(Условия) - Человек 3----------------------------------

5: begin // 5

case message.LParam of //c5

1: begin

if (((met13>40)or(mens[1].Edge<>mens[3].Edge) )and(met23>30))then res := true;

if (((met13<40)and(Omet13-met13<0))and

((met23>30)or (Omet23-met23<0))) then res := true;

if (((met13<40)and(Omet13-met13<0))and

((met23>30)or (Omet23-met23<0))) then res := true;

ListBox1.Items.Add('ч3 у1 ='+BoolToStr(res));

end;

2: begin

if ((met13<=40)and(mens[1].Edge=mens[3].Edge)) then res := true;

ListBox1.Items.Add('ч3 у2 ='+BoolToStr(res));

label1.Caption:=IntToStr(met12);

label2.Caption:=IntToStr(met13);

Характеристики

Тип файла
Документ
Размер
1,91 Mb
Тип материала
Высшее учебное заведение

Тип файла документ

Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.

Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.

Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.

Список файлов лабораторной работы

Лабораторные работы (2007)
Cat&Mouse
Images
CC3260MT.DLL
SIMPR6.EXE
bcbsmp60.bpl
project1.exe
rtl60.bpl
vcl60.bpl
vclx60.bpl
Кот и мышь.smp
Durak
Tasya.exe
FootBall
SIMPR
MSDATGRD.OCX
MSFLXGRD.OCX
SIMPR6.EXE
images
Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7028
Авторов
на СтудИзбе
260
Средний доход
с одного платного файла
Обучение Подробнее