package salesman_2; import java.awt.Graphics; import java.util.Random; public class Salesman extends Thread { //koordinate int x, y; //pomeraji po x i y osi double dx, dy; //velicina koraka int step; int epsilon; boolean full; MarketPanel panel; //kapacitet trgovca //trgovac je uvek ili prazan ili pun, tj. iskoriscava //svoj kapacitet do maksimuma, nikad nije poluprazan int capacity; public Salesman(MarketPanel panel) { this.panel = panel; Random r = new Random(); dx = r.nextDouble() - 0.5; dy = r.nextDouble() - 0.5; boolean isInside = true; while (isInside) { x = r.nextInt(panel.getWidth()); y = r.nextInt(panel.getHeight()); isInside = false; for (Market m : panel.markets) { if (m.contains(x, y)) isInside = true; } } capacity = r.nextInt(50); step = 5; epsilon=5; start(); } void drawSelf(Graphics g) { if (full) g.fillOval(x, y, 10, 10); else g.drawOval(x, y, 10, 10); } void move() { //imamo nekoliko situacija Market m = panel.getMarket(this); //1. kada je trgovac naleteo na trziste if (m != null) { //izvrsavamo prodaju m.doSale(this); //i nakon toga menjamo pravac kretnja if ((x -m.x)= panel.getWidth() || x <= 0) dx = -dx; if (y >= panel.getHeight() || y <= 0) dy = -dy; } //u svakom slucaju se pomeramo u pravcu x i y ose x += (int) (dx * step); y += (int) (dy * step); } @Override public void run() { while (true) { move(); panel.repaint(); try { Thread.sleep(20); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }