Лабораторные работы (2009) (Правила игры)

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

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

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

















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

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











Выполнила студентка А-16-06

Грязнова Екатерина















Москва 2009

Игра «Ресторан»

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

Создаются группы, которые должны идти до ресторана и занимать свободные места. Если свободных мест нет- идти дальше.

Дано:

10 групп, которые создаются случайно: 1 или 2 человека.

Ресторан. 3 столика:

1 столик – для группы из одного человека.

2 столик – для группы из двух людей.

3 столик – для группы любого времени.

Время в ресторане – случайный параметр (6 или 10 циклов).



Шаги к ресторану:

Группа может сделать шаг, если перед ней есть пустая позиция, иначе остается на месте.



Выход из ресторана:

Когда время выходит группа занимает любое первое свободное место.

Когда группа достигает 10 позиции – она удаляется.



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

Состоит из двух таблиц:

1 таблица: правила движения:



С1: Есть ли группы?

С2: Есть ли еще шаги?

С3: Свободна ли следующая позиция?

С4: Шаг равен 10? Конец пути?

С5: Шаг равен 5? У ресторана?

С6: Все ли вышли?

R1: Сообщение: «Человек больше нет»

R2: Удалить группу

R3: Следующая

R4: Сделать шаг

R5: Сообщение: «Ошибка»

R6: Сообщение: «В ресторане» (не показывается)



2 таблица: правила поведения в ресторане.

С1: Сидит ли человек?

С2: Свободен 1 стол для 1 человека?

С3: Свободен ли второй стол?

С4: Свободен ли 3 стол для 2 человека?

С5: Вышло время в ресторане?

R1: Продолжает сидеть

R2: Садится за 1 столик

R3: садится за 2 столик

R4: Садится за 3 столик

R5: Группа уходит

R6: Следующая

R7: сообщение «ошибка»





Приложение.

Выполнено в Microsoft Visual Studio C#

class Class1: NativeWindow

{

[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]

static extern uint RegisterWindowMessage(string lpString);


uint simpr;

public ttest t;




public Class1(IntPtr hWnd)

{

t=new ttest();

// Assign the handle from the source window to this class.

simpr = RegisterWindowMessage("MyMessage");

this.AssignHandle(hWnd);


}


protected override void WndProc(ref Message m)

{

int wparamhi;

int wparamlo;

int wparam;

int lParam = Convert.ToInt32("" + m.LParam);

int w = 100;



if (m.Msg == simpr)

{


wparam = Convert.ToInt32("" + m.WParam);

wparamhi = wparam / 65536;

wparamlo = wparam - wparamhi * 65536;



if (wparamhi == 0)//условия

{

m.Result = new IntPtr(0);

if (wparamlo == 1)// таблица 1

{

if (lParam == 1)// таблица 1 условие 1

{

if (t.group==0)

{

//MessageBox.Show("есть ли человек?*");

m.Result = new IntPtr(1);

}

}

if (lParam == 2)// таблица 1 условие 1

{

if (t.step[t.active] <10)

{

// MessageBox.Show("Шаг <10?");

m.Result = new IntPtr(1);


}


}

if (lParam == 3)// таблица 1 условие 1

{

if (t.poz[(t.step[t.active]+1)]==true)

{

// MessageBox.Show("Позиция занята?");

m.Result = new IntPtr(1);

}


}

if (lParam == 4)// таблица 1 условие 1

{

if (t.step[t.active]==10)

{

t.poz[10] = true;

// MessageBox.Show("шаг=10");

m.Result = new IntPtr(1);


}


}

if (lParam == 5)// таблица 1 условие 1

{

if (t.step[t.active] == 5)

{

// MessageBox.Show("Шаг=5?");

m.Result = new IntPtr(1);


}


}

if (lParam == 6)// таблица 1 условие 1

{

if (t.scet > 100)

{

//MessageBox.Show("Счетчик = 5?");

m.Result = new IntPtr(1);


}


}

}

else if (wparamlo == 2)// таблица 2

{

if (lParam == 1)//таблица 2 условие 1

{

if (t.sid[t.active]!=0) m.Result = new IntPtr(1);

}

else if (lParam == 2)// таблица 2 условие 2

{


if ((t.stol[0] == 10) && (t.name[t.active] == "man1")) m.Result = new IntPtr(1);

}

else if (lParam == 3)// таблица 2 условие 3

{


if (t.stol[1] == 10) m.Result = new IntPtr(1);

}

else if (lParam == 4)// таблица 2 условие 4

{


if ((t.stol[2] == 10)&&(t.name[t.active]=="man2")) m.Result = new IntPtr(1);

}

else if (lParam == 5)// таблица 2 условие 5

{


if (t.sidtime[t.active]==0) m.Result = new IntPtr(1);

}


}

}

else if (wparamhi == 1)//действия

{

if (wparamlo == 1)// таблица 1

{

if (lParam == 1)// таблица 1 действие 1

{

t.main();

t.group = 5;

MessageBox.Show("Больше человек нет. Выход");

}

else if (lParam == 2)// таблица 1 действие 2

{

//MessageBox.Show("удаляем "+t.active+ "группу"+t.scet);

t.delgroup();

Application.DoEvents();

Thread.Sleep(w);


}

else if (lParam == 3)// таблица 1 действие 2

{

// MessageBox.Show("Переходим к " + (t.active + 1) + " группе. Всего " + t.group);

t.next();

Application.DoEvents();

Thread.Sleep(w);

}

else if (lParam == 4)// таблица 1 действие 2

{

// MessageBox.Show("грппа " + (t.active + 1) + "делает шаг");

t.st();

Application.DoEvents();

Thread.Sleep(w);

}

if (lParam == 5)// таблица 1 действие 1

{

MessageBox.Show("Rool ELSE");

}

if (lParam == 6)// таблица 1 действие 1

{

// MessageBox.Show("зашли в ресторан"+(t.active+1));

}

}

else if (wparamlo == 2)// таблица 2

{

if (lParam == 1)// таблица 2 действие 1

{

t.wait();

//MessageBox.Show("группа "+t.active+" сидит за " +t.sid[t.active]+"столиком. Осталось "+t.sidtime[t.active]+"ждать");

Application.DoEvents();

Thread.Sleep(w);

}

else if (lParam == 2)// таблица 2 действие 2

{

t.seat1();

//MessageBox.Show("группа " + t.active + "за 1 столиком. ");

Application.DoEvents();

Thread.Sleep(w);

}

else if (lParam == 3)// таблица 2 действие 2

{

t.seat2();

Application.DoEvents();

Thread.Sleep(w);

//MessageBox.Show("группа " + t.active + "за 2 столиком. ");

}

else if (lParam == 4)// таблица 2 действие 2

{

t.seat3();

Application.DoEvents();

Thread.Sleep(w);

//MessageBox.Show("группа " + t.active + "за 3 столиком. ");

}

else if (lParam == 5)// таблица 2 действие 2

{

t.go();

Application.DoEvents();

Thread.Sleep(w);


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

Файл
112551.rtf
146848.rtf
Logistic.doc
14196.rtf
109292.doc




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