Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая работа по дисциплине «Технология прог....doc
Скачиваний:
8
Добавлен:
27.10.2018
Размер:
1.05 Mб
Скачать

Приложение 2. Текст программы на языке Java

package anjava;

import java.awt.*;

import java.io.*;

import java.util.Observable;

import java.util.Observer;

import java.util.Vector;

class GlavnoeOkno extends Frame implements Runnable

{

Vector<Point> tochki_bolchogo_kruga; // список точек

Vector<Point> tochki_malogo_kruga; // список точек

Thread th;

boolean live;

Vector<Car> mashinki;

Zapravka zapravka;

OknoUpralveniya oknoUpravleniia;

public GlavnoeOkno()

{

setSize(800, 600);

this.setVisible(true);

live = true;

// создание точек, по которым будут двигаться машины

tochki_bolchogo_kruga = new Vector<Point>();

tochki_bolchogo_kruga.add(new Point(105, 206));

tochki_bolchogo_kruga.add(new Point(124, 160));

tochki_bolchogo_kruga.add(new Point(177, 102));

tochki_bolchogo_kruga.add(new Point(286, 69));

tochki_bolchogo_kruga.add(new Point(433, 114));

tochki_bolchogo_kruga.add(new Point(490, 231));

tochki_bolchogo_kruga.add(new Point(457, 381));

tochki_bolchogo_kruga.add(new Point(400, 432));

tochki_bolchogo_kruga.add(new Point(254, 449));

tochki_bolchogo_kruga.add(new Point(173, 418));

tochki_bolchogo_kruga.add(new Point(101, 341));

tochki_bolchogo_kruga.add(new Point(89, 278));

tochki_malogo_kruga = new Vector<Point>();

tochki_malogo_kruga.add(new Point(168, 251));

tochki_malogo_kruga.add(new Point(186, 198));

tochki_malogo_kruga.add(new Point(265, 144));

tochki_malogo_kruga.add(new Point(323, 137));

tochki_malogo_kruga.add(new Point(403, 185));

tochki_malogo_kruga.add(new Point(416, 296));

tochki_malogo_kruga.add(new Point(367, 372));

tochki_malogo_kruga.add(new Point(269, 386));

tochki_malogo_kruga.add(new Point(213, 357));

tochki_malogo_kruga.add(new Point(175, 299));

mashinki = new Vector<Car>();

th = new Thread(this, "repaintThread");

th.start();

zapravka = new Zapravka();

oknoUpravleniia = new OknoUpralveniya();

oknoUpravleniia.SetOkno(this);

oknoUpravleniia.setVisible(true);

}

public void Del()

{

//magazin.addTovar(tovar);

Car boat = mashinki.firstElement();

boat.stop();

mashinki.remove(boat);

}

public void Add()

{

Car boat = new Car(zapravka, String.valueOf(mashinki.size()), tochki_malogo_kruga, tochki_bolchogo_kruga);

mashinki.add(boat);

}

@Override

public void paint(Graphics g)

{

super.paint(g);

zapravka.paint(g);

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

{

mashinki.get(i).paint(g);

}

g.setColor(Color.blue);

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

{

g.fillRect(tochki_bolchogo_kruga.get(i).x, tochki_bolchogo_kruga.get(i).y, 4, 4);

}

g.setColor(Color.cyan);

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

{

g.fillRect(tochki_malogo_kruga.get(i).x, tochki_malogo_kruga.get(i).y, 4, 4);

}

}

public void run()

{

while (live)

{

this.repaint();

try

{

Thread.sleep(100);

}

catch (InterruptedException ex)

{

live = false;

}

}

}

@Override

public boolean handleEvent(Event evt)

{

if(evt.id == Event.WINDOW_DESTROY)

{

live = false;

setVisible(false);

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

{

mashinki.get(i).stop();

}

System.exit(0);

return true;

}

else

{

return super.handleEvent(evt);

}

}

}

public class Main

{

public static void main(String[] args)

{

//System.out.print("Enter number: ");

GlavnoeOkno onkno = new GlavnoeOkno();

onkno.setVisible(true);

}

}

----------------

package anjava;

import java.awt.*;

import java.util.Observable;

import java.util.Observer;

public class Zapravka

{

Rectangle rectangle;

public Zapravka()

{

rectangle = new Rectangle(50, 241, 30, 40);

}

public Rectangle Rect()

{

return rectangle;

}

public void paint(Graphics g)

{

g.setColor(Color.blue);

g.drawRect(rectangle.X, rectangle.Y, rectangle.Height, rectangle.Width);

}

}

---------------

package anjava;

import java.awt.Point;

public class Rectangle

{

public int X;

public int Y;

public int Height;

public int Width;

public Rectangle(int x, int y, int height, int width)

{

X = x;

Y = y;

Height = height;

Width = width;

}

public Point Location()

{

return new Point(X, Y);

}

}

------------

package anjava;

import java.awt.*;

import java.util.Observable;

import java.util.Vector;

public class Car implements Runnable

{

Vector<Point> tochki_bolchogo_kruga; // список точек

Vector<Point> tochki_malogo_kruga; // список точек

Thread th;

boolean live;

Point location;

String name;

Zapravka zapravka;

Color brush;

int fuel;

boolean v_malom_kruge; // признак того, что машинка заняла ресурс малого круга

int chislo_krugov; //счетчик кругов, которые машинка проехала по малому кругу

int tekushaya_tochka; // номер текущей точки

public Car(Zapravka zap, String Name, Vector<Point> tochkimalogokruga, Vector<Point> tochkibolchogokruga )

{

brush = Color.green;

zapravka = zap;

name = Name;

tekushaya_tochka = 2;

tochki_bolchogo_kruga = tochkibolchogokruga;

tochki_malogo_kruga = tochkimalogokruga;

location = (Point)tochki_bolchogo_kruga.get(1).clone();

v_malom_kruge = false;

chislo_krugov = 0;

fuel = 1200;

th = new Thread(this, Name);

live = true;

th.start();

}

public void paint(Graphics g)

{

g.setColor(brush);

g.fillRect(location.x, location.y, 20, 20);

g.drawString(String.valueOf(fuel), location.x, location.y);

}

public void stop()

{

System.out.println("stop");

live = false;

}

public void run()

{

try

{

while (live)

{

if (fuel > 0)

{

--fuel;

}

else

{

while (zapravka.Rect().Location().x != location.x

|| zapravka.Rect().Location().y != location.y)

{

//движение к азс

if (location.x < zapravka.Rect().Location().x)

{

location.x++;

}

if (location.x > zapravka.Rect().Location().x)

{

location.x--;

}

if (location.y < zapravka.Rect().Location().y)

{

location.y++;

}

if (location.y > zapravka.Rect().Location().y)

{

location.y--;

}

Thread.sleep(20); // приостановка потока, чтобы машинка не двигалась моментально

}

synchronized(zapravka)

{

Thread.sleep(2000); // имитируем процесс заправки

fuel = 1200;

}

}

if (!v_malom_kruge) //если не в малом круге

{

if (tekushaya_tochka < tochki_bolchogo_kruga.size()) // пока не пройдены все точки большого круга

{

//движение к следующей точке

if (location.x < tochki_bolchogo_kruga.get(tekushaya_tochka).x)

{

location.x++;

}

if (location.x > tochki_bolchogo_kruga.get(tekushaya_tochka).x)

{

location.x--;

}

if (location.y < tochki_bolchogo_kruga.get(tekushaya_tochka).y)

{

location.y++;

}

if (location.y > tochki_bolchogo_kruga.get(tekushaya_tochka).y)

{

location.y--;

}

if (location.equals(tochki_bolchogo_kruga.get(tekushaya_tochka))) // если машинка дохала до текущей точки

{

tekushaya_tochka ++; // переход к следующей

}

Thread.sleep(30); // приостановка потока, чтобы машинка не двигалась моментально

}

else //если пройдены все точки большого круга

{

tekushaya_tochka = 0; // повтор движения сначала

v_malom_kruge = true;

}

}

else

{ //иначе если машинка движется по малому кругу

if (tekushaya_tochka < tochki_malogo_kruga.size()) // пока не пройдены все точки малого круга

{

//движение к следующей точке

if (location.x < tochki_malogo_kruga.get(tekushaya_tochka).x)

{

location.x++;

}

if (location.x > tochki_malogo_kruga.get(tekushaya_tochka).x)

{

location.x--;

}

if (location.y < tochki_malogo_kruga.get(tekushaya_tochka).y)

{

location.y++;

}

if (location.y > tochki_malogo_kruga.get(tekushaya_tochka).y)

{

location.y--;

}

if (location.equals(tochki_malogo_kruga.get(tekushaya_tochka)))

{

tekushaya_tochka++;

}

Thread.sleep(30); // приостановка потока, чтобы машинка не двигалась моментально

}

else //если пройдены все точки малого круга

{

if (chislo_krugov == 1) // елси машинка прошла 2 раза по крушгу (0 и 1)

{

v_malom_kruge = false; // переход к большому кругу

chislo_krugov = 0;

}

else

{

chislo_krugov++;

}

tekushaya_tochka = 0; // повторное движение по малому кругу

}

}

}

}

catch (Exception e)

{

}

}

}

55