X + 5, a->Y + 5);//номера машин } } }; static void main() { Application::Run(gcnew Avtos()); } Результат: Пример 5">Студопедия — If (dvig)
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

If (dvig)





{

dx1 = (int)(19 * System::Math::Sin(fi));

dy1 = (int)(19 * System::Math::Cos(fi));

 

x += dx1;

y += dy1;

 

 

}

else

{

dx2 = (int)(28 * System::Math::Sin(fi));

dy2 = (int)(28 * System::Math::Cos(fi));

y -= dx2;

x -= dy2;

 

 

}

 

fi += 0.1;

 

}

 

evSpecial();

 

 

}

}

 

void Suspend()

{

if (run)

{

run = false;

 

}

}

 

void Resume()

{

if (!run)

{

run = true;

 

}

}

};

 

 

ref class Avtos: public Form

{

private:

ArrayList ^al; //ссылка на список машин

int num;// = 0;//номер объекта машины

Form ^f;// ссылка на дочернее окно управления

Button ^add;// ссылки на кнопки

bool run;// = true;//признак движения машин

 

public:

Avtos()

{

num=0;

al = gcnew ArrayList();

run = true;

Size = Drawing::Size(770, 770);

Text = "Шоссе";

 

 

f = gcnew Form();

f->Text = "Control";

f->Size = Drawing::Size(300, 150);

f->Show();

 

add = gcnew Button();

add->Text = "Add";

add->Size = Drawing::Size(45, 30);

add->Location = Point(5, 50);

add->Click += gcnew EventHandler(this, &Avtos::ADD);

f->Controls->Add(add);

 

}

 

public:

void ADD(Object ^obj, EventArgs ^arg)

{

num++;

Avto ^b;

Random ^r = gcnew Random();

//Random rand = new Random();

if (num % 2 == 0)

{

Avto ^a = gcnew Avto(num, 385, 660, r->Next(50, 100));

System::Console::WriteLine("Добавлен автомобиль"+num);

a->dvig = false;

b = a;

}

else

{

Avto ^a = gcnew Avto(num, 195, 400, r->Next(50, 100));

System::Console::WriteLine("Добавлен автомобиль"+num);

a->dvig = true;

// a.ev += new Del(this.Handlerev);

b = a;

}

 

al->Add(b);

IEnumerator ^inum = al->GetEnumerator();

while (inum->MoveNext())

{

Avto ^q = (Avto^)inum->Current;

q->evSpecial += gcnew delEv(this, &Avtos::HandlerEvSpecial);

}

}

 

public:

void HandlerEvSpecial()

{

Invalidate();

}

 

protected:

virtual void OnPaint(PaintEventArgs ^arg) override

{

arg->Graphics->FillEllipse(gcnew SolidBrush(Color::Gray), 100, 100, 604, 604);//внешнее кольцо

arg->Graphics->FillEllipse(gcnew SolidBrush(Color::White), 173, 173, 454, 454);//разделительная полоса

arg->Graphics->FillEllipse(gcnew SolidBrush(Color::Gray), 175, 175, 450, 450);//внутреннее кольцо

arg->Graphics->FillEllipse(gcnew SolidBrush(Color::YellowGreen), 245, 245, 300, 300);

this->BackColor = Color::YellowGreen; // Закрасить фон зеленым

this->MaximizeBox = false; // Убрать кнопку "Развернуть окно"

this->DoubleBuffered = true; // Включить буферизацию изображения

IEnumerator ^inum = al->GetEnumerator();

while (inum->MoveNext())

{

Avto ^a = (Avto^)inum->Current;

arg->Graphics->FillEllipse(gcnew SolidBrush(Color::Red), a->X, a->Y, 25, 25);//машина

arg->Graphics->DrawString(a->N.ToString(), gcnew Drawing::Font("Comic Sans MS", 10), gcnew SolidBrush(Color::White), a->X + 5, a->Y + 5);//номера машин

 

}

}

};

 

static void main()

{

Application::Run(gcnew Avtos());

}

Результат:

 

Пример 5.3.3.3. Реализация третьего этапа разработки Avtos–приложения на языке Java.

 

import java.util.*;

import java.awt.*;

import java.awt.event.*;

import java.io.*;

 

public class Avto extends Observable implements Runnable

{

public int num;

public int x, y;

public double fi = 0.1;

public int dx1, dy1, dx2, dy2;

Thread thr;

public boolean dvig = true, run = true;

boolean life;

public int speed;

 

 

public int N() { return num; }

public int X() { return x; }

public int Y() { return y; }

 

 

public Avto(int N, int X, int Y, int Speed)

{

num = N;

x = X; y = Y;

speed = Speed;

life = true;

thr = new Thread(this);

thr.start();

 

}

 

public void report()

{

setChanged();

notifyObservers();

}

 

public void Finish()

{

Resume();

life = false;

}

 

public void run()

{

while (life)

{

if (run)

{

 

try

{

Thread.sleep(speed);

}

catch (InterruptedException e) { }

 

if (dvig)

{

x += dx1;

y += dy1;

 

dx1 = (int)(19 * Math.sin(fi));

dy1 = (int)(19 * Math.cos(fi));

}

else

{

y -= dx2;

x -= dy2;

dx2 = (int)(28 * Math.sin(fi));

dy2 = (int)(28 * Math.cos(fi));

 

}

 

fi += 0.1;

report();

}

 

}

}

 

public void Suspend()

{

if (run)

{

run = false;

 

}

}

public void Resume()

{

if (!run)

{

run = true;

}

}

}

 

public class Autos extends Frame implements Observer, ActionListener, ItemListener

{

public ArrayList al;

private boolean run;

private Frame f;

private Button add;

private int num = 0;

private Random r;

 

 

public Autos()

{

al = new ArrayList();

r = new Random();

this.addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent wE)

{

for (int n = 0; n < al.size(); n++)

{

Avto a = (Avto)al.get(n);

a.Suspend();

}

System.exit(0);

}

});

 

setTitle("Шоссе");

setLocation(new Point(600, 0));

setBackground(Color.green);

run = true;

f = new Frame();

f.setSize(300, 100);

f.setTitle("Control");

f.setLocation(new Point(150,150));

f.setLayout(new FlowLayout());

 

add = new Button("Add");

add.setActionCommand("ADD");

add.addActionListener(this);

f.add(add);

f.setVisible(true);

 

}

//обработать уведомдение

public void update(Observable obj, Object arg)

{

repaint();

}

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

public void paint(Graphics g)

{

 

g.setColor(Color.gray);

g.fillOval(100, 100, 604, 604);

g.fillOval(175, 175, 450, 450);

g.setColor(Color.white);

g.fillOval(173, 173, 454, 454);

g.setColor(Color.gray);

g.fillOval(175, 175, 450, 450);

g.fillOval(175, 175, 450, 450);

g.setColor(Color.green);

g.fillOval(245, 245, 300, 300);

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

{

g.setColor(Color.red);

Avto a = (Avto)al.get(i);

g.fillOval(a.X(), a.Y(), 25, 25);

g.setColor(Color.white);

g.drawString(Integer.toString(a.num), a.X() + 5, a.Y() + 15);

 

}

 

}

//выполнить команды для нажатия кнопок

public void actionPerformed(ActionEvent aE)

{

String str = aE.getActionCommand();

if (str.equals("ADD"))

{

num++;

Avto b;

r = new Random();

if (num % 2 == 0)

 

{

Avto a = new Avto(num, 385, 666, r.nextInt(100)+50);

System.out.println("Dobavlen avto " + num);

a.dvig = false;

b = a;

}

else

{

Avto a = new Avto(num, 195, 400, r.nextInt(100)+50);

System.out.println("Dobavlen avto " + num);

a.dvig = true;

b = a;

}

b.addObserver(this);

al.add(b);

 

}

repaint();

}

 

 

public void itemStateChanged(ItemEvent e)

{

repaint();

}

 

public static void main(String[] args)

{

Autos auto = new Autos();







Дата добавления: 2015-06-15; просмотров: 597. Нарушение авторских прав; Мы поможем в написании вашей работы!




Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...


ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...


Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...


Логические цифровые микросхемы Более сложные элементы цифровой схемотехники (триггеры, мультиплексоры, декодеры и т.д.) не имеют...

Влияние первой русской революции 1905-1907 гг. на Казахстан. Революция в России (1905-1907 гг.), дала первый толчок политическому пробуждению трудящихся Казахстана, развитию национально-освободительного рабочего движения против гнета. В Казахстане, находившемся далеко от политических центров Российской империи...

Виды сухожильных швов После выделения культи сухожилия и эвакуации гематомы приступают к восстановлению целостности сухожилия...

КОНСТРУКЦИЯ КОЛЕСНОЙ ПАРЫ ВАГОНА Тип колёсной пары определяется типом оси и диаметром колес. Согласно ГОСТ 4835-2006* устанавливаются типы колесных пар для грузовых вагонов с осями РУ1Ш и РВ2Ш и колесами диаметром по кругу катания 957 мм. Номинальный диаметр колеса – 950 мм...

БИОХИМИЯ ТКАНЕЙ ЗУБА В составе зуба выделяют минерализованные и неминерализованные ткани...

Типология суицида. Феномен суицида (самоубийство или попытка самоубийства) чаще всего связывается с представлением о психологическом кризисе личности...

ОСНОВНЫЕ ТИПЫ МОЗГА ПОЗВОНОЧНЫХ Ихтиопсидный тип мозга характерен для низших позвоночных - рыб и амфибий...

Studopedia.info - Студопедия - 2014-2026 год . (0.01 сек.) русская версия | украинская версия