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

If(reg.R.Contains(p) && !inRect)

{

// Шар внутри особой области

reg.Waiting ( );

inRect= true;

for(int i=0; i<3; i++)

{

SmallBall b= new SmallBall(x+i, y+i, dx,

dy + 1*3, w, h, с, wind);

aL.Add(b);

>

>

If(!reg.R,Contains(p) && lnRect)

{

|| Шар вышел из особой области

InRect= false;

>

>

// Сгенерировать событие перерисовки

if (ev 1= null)

ev ( );

}

Thread.Sleep (100);

>

>

// Завершить поток большого шара

public vold Finish ( )

{

life- fdlbe;

t.Join ( );

} >

// Класс прикладного окна

class Wlnd : Form

{

public Region reg;

Button butAdd;

ArrayList aL_blg;

ArrayList aL_small;

Random r;

// Ссылка на спец.область

// Ссылка на кнопку

// Ссылка на список больших шаров

// Ссылка на список небольших шаров

// Ссылка на объект случайного числа

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

public Wind ( )

{

// Создать объект особой зоны

reg= new Region ();

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

aL_big= new ArrayList ();

aL_blg.Clear ();

// Создать объектсписка небольших шаров

aL_small= new ArrayList (); // Создать список

aL_small.Clear ();

// Создать объект случайного числа

r= new Random ( );

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

butAdd= new Button();

butAdd.Location = new Point (100, 24);

butAdd.Size = new Size (32, 24);

butAdd.Text = "Add";

// Подписать обработчик OnButAdd кнопки butAdd на событие Click

butAdd.Click += new EventHandler (OnButAdd);

Controls.Add (butAdd);

>

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

Void OnButAdd (object obj, EventArgs arg)

{

Colorc= (Color.FromArgb (r,Next(255), r.Next(255), r.Next(255)));

BigBall b= new BigBall (r.Next(this.Width),r.Next(this.Height),

r.Next(5, 10),r.Next(5, 15), this.ClientSize.Width,

this.ClientSize.Height, reg, c, ref al small, this);

// Подписать обработчик на событие перерисовки

b.ev += new delEv (HandlerEv );

// Включить объект большого шара в список больших шаров

aL_big.Add (b);

>

// Перерисовать окно

protected override voia OnPaint (PaintEventArgs arg)

{

base.OnPaint (arg);

// Просмотреть список больших шаров и нарисовать их

IEnumerator inumBig= aL_big.GetEnumerator ();

while (inumBig.MoveNext())

{

BigBall big= (BigBall) inumBig.Current;

arg.Graphlcs.DrawEllipse (new Pen (big.c),

big.X, big.Y, 20, 20);

>

// Просмотреть список небольших шаров и нарисовать их

for (lnt i= 0; i < aL_small.Count; i++)

{

SmallBall b= (SmallBall) aL_small[i];

arg.Graphics.DrawElllpse (new Pen (b.c), b.X, b.Y, 10, 10);

>

// Нарисовать особую область

arg .Graphics,DrawRectangle (new Pen (Color.Yellow), reg.r);

>

// Обработать событие перерисовки от шара

Void HandlerEv ( )

{

Invalidate ();

}

// Обработать событие перерисовки от шара

public void HandlerEvS (SmallBall sm)

{

lock(this)

{

aL_small.Remove ((SmailBall)sm);

}

}

// Обработать событие закрытия окна

protected override void OnClosed (EventArgs e)

{

base.OnClosed(e);

// Завершить потоки больших шаров

for (int i= 0; i < aL_blg.Count; i++)

BigBall b= (BigBall) aL„big[i];

b.Finish ( );

>

// Завершить потоки небольших шаров

for (int i= 0; i < aL_small.Count; i++)

{

SmallBall b= (SmallBall) aL_small[i];

b.Finlsh ( );

>

>

// Выполнить основной поток

static void Main()

{

Wind w= new Wind( );

Application.Run(w); >

>

///////////////

// Java