Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Медведев_С++_CLI_C#_Java_J#.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
5.17 Mб
Скачать

Int y; // Координата y пути грузовика

Random rand; // Ссылка на случайное число

ArrayList aL; // Ссылка на список объектов грузовиков

bool leftRight; // Признак направления перемещения грузовиков

// Конструктор

LorryAndWarhouses ( )

<

this.Text= "Test";

thls.CllentSlze= new Size (350, 130);

aL= new ArrayList ();

rand= new Random ( );

leftRight= true;

// Создать кнопки

butRun= new Button (); // Создать кнопку пуска

butRun.Location= new Point (240,5);

butRun.Size= new Slze (45, 20);

butRun.Text= "Run";

butRun.BackColor= Color.LightGray;

butRun.Click += new EventHandler(But_Run);

this.Controls.Add (butRun);

//

butStop= new Button (); // Создать кнопку останова

butStop.Location= new Point (290,5);

butStop.Size= new Slze (45, 20);

butStop.Text= "Stop";

but5top.BackColor= Color.LightGray;

butStop.Click += new EventHandler (But_Stop);

this.Controls.Add (butStop);

//

butAdd= new Button (); // Создать кнопку добавления

butAdd.Location= new Point (240,30);

butAdd.Size= new Size (65, 20);

butAdd.Text= "Добавить";

butAdd.BackColor= Color.UghtGray;

butAdd.Click += new EventHandler (But_Add);

this.Controls.Add (butAdd);

butDel= new Button (); // Создать кнопку удаления

butDel.Location= new Point (240,60);

butDel,Size= new Size (65, 20);

butDel.Text= "Удалить";

butDel. BackColor= Color. Lig htGray;

butDel.Click += new EventHandler (But_Del);

this.Controls.Add (butDei);

listBox= new ListBox (); // Создать элемент списка

listBox.Location= new Point (240, 90);

listBox.Size= new System.Drawing.Slze (60, 20);

this.Controls.Add (listBox);

// Создать склады

// Создать объект левого склада

leftWH= new Warehouse (true, true);

leftWH.Location= new Polnt (10, 10);

leftWH.Size= new Size (30, 100);

leftWH.BackColor= Color.White;

leftWH.evFromWarehouse+= new DelEvFromWarehouse

(this. EvFromWarehouseHandler);

this.Controls.Add (leftWH);

leftWH.Show ();

// Создать объект правого склада

rlghtWH= new Warehouse (false, false);

rightWH.Location= new Point (200, 10);

rightWH.Size= new Size (30, 100);

rig htWH. BackColor= Color.White;

this.Controls.Add (rightWH);

rightWH.evFromWarehouse+= new DelEvFromWarehouse

(this.EvFromWarehouseHandler);

rightWH.Show ();

// Создать область контроля

reglon= new ContrlRegion ( );

region.Location= new Point (100, 0);

region.Size= new Size (40, ClientSize.Height);

reglon,BackColor= Color.green;

this.Controls.Add (region);

region,Show ( );

// Создать поток перерисовки и запустить его

iife= true;

thread= new Thread (new ThreadStart (ThrPaint));

thread.Start();

>

// Обработать нажатие кнопки пуска

private void But_Run (object о, EventArgs e)

{

IEnumerator inum= aL.GetEnumerator ( );

while (inum.MoveNext ())

{

Lorry lorry= (Lorry) inum.Current;

lorry.Run ( );

>

>

// Обработать нажатие кнопки останова

private void But Stop (object о, EventArgs e )

{

IEnumerator lnum= aL.GetEnumerator ();

while (inum.MoveNext ())

{

Lorry lorry= (Lorry) inum.Current;

lorry.Stop ();

>

>

// Обработать нажатие кнопки добавления грузовика

private void But_Add (object о, EventArgs e)

{

numLorry++;

Y += 20;

lnt dX = rand.Next (5,10);

if (leftRight) dX= dX;

else dX= -dX;

lorry= new Lorry (numLorry, Y, dX,

leftWH, rightWH, region);

aL.Add (lorry);

llstBox.Items.Add (lorry.Number);

>

// Обработать нажатие кнопки удаления грузовика

private vold But_Del (object о, EventArgs e )

{

if (listBox.SelectedIndex == -1)

{

MessageBox.Show

("Выберете номер удаляемого грузовика в"

+ "\пэлементе списка перед нажатием кнопки");

>

else

<

int numSel= (int) listBox.SelectedItem;

llstBox.Items,Remove (numSel);

IEnumerator inum= aL.GetEnumerator ( );

while (inum.MoveNext ( ))

{

Lorry lorry= (Lorry) inum.Current;

if (lorry.Number == numSel)

{

lorry.Finish();

aL.Remove (lorry);

listBox.Items.Remove (lorry.Number);

return;

>

>

>

>

// Потоковая функция перерисовки

private void ThrPaint ( )

{

while (life)

{