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

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

{

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

reg.Waiting ( );

inRect= true;

for(lnt i=0; l<3; I++)

{

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

dy + i*3, w, h, с, this.wind);

aL.add (b);

>

>

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

{

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

inRect= false;

>

>

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

setChanged ( );

notifyObservers (new Data (faise, nuil));

try

{

Thread.sleep (100);

}

catch(InterruptedException e) { >

>

>

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

public void Finish ( )

{

life= false;

try

{

t.join ();

catch(InterruptedExceptlon e) { >

>

public class Wlnd extends Frame implements Observer

{

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

Button butAdd; // Ссылка на кнопку

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

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

Random г; // Ссылкз нз объект сяучзиного числз

Object obj; // Ссылка на корневой класс

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

public Wind ()

{

setSize (400, 300);

setVisible (true);

setLayout (null);

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

reg= new Region ();

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

aL_big= new ArrayList ();

aL_big.clear ();

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

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

aL_small.clear ();

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

r= new Random ();

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

butAdd= new Button ("Add");

butAdd.setLocation (100, 24);

butAdd.setSize (32, 24);

add (butAdd);

obj= this;

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

butAdd.addActionListener (new ActionListener( )

{

public vold actlonPerformed (ActionEvent aE)

{

Color c= new Color (r.nextInt(255), r.nextInt(255),

r.nextInt(255));

lnt x= r,nextInt(50)+10;

int y= r.nextInt(50)+10;

lnt dx= r.nextInt(10)+5;

lnt dy= r.nextInt(10)+5;

BigBall b= new BigBall (x, у, dx, dy, 300, 200, reg, с,

aL_small, (Wind) obj);

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

b.addObserver ((Wind) obj);

aL_big.add (b);

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

this.addWindowListener (new WindowAdapter ( )

{

public void windowClosing (WlndowEvent wE)

{

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

for(inti= 0; i< aL_big.size(); i++)

{

BigBall b= (BigBall) aL_big.get(i);

b.Finish ( );

}

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

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

{

SmallBall b= (SmallBall) aLsmall.get(i);

b.Finish ( );

>

System.exit (0);

>

»;

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

public vold paint (Graphics g)

{

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

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

{

BigBall b= (BigBall) aL_big.get(i);

g.setColor (b.getColor());

g.drawOval (b.getX(), b.getY(), 20, 20);

>

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

for (int 1= 0; I < aL_small.size(); I++)

{

SmallBall b= (SmallBall) aL_small.get(i);

g.setColor (b.getColor());

g.drawOval (b.getX(), b.getY(), 10, 10);

>

g.setColor (Color.yellow);

g.drawRect (reg.r.x, reg.r.y, reg.r.width, reg.r.height);

public void update (Observable obs, Object obj)

{

synchronized (this)

{

Data d= (Data) obj;