Witam szukam pomysły na rozwiązanie problemu. Napisałem gotowy program konsolowy, jednak chciałbym zrobić go w graficznej formie. Tutaj pojawia się problem w programie samoloty mają poruszać się pomiędzy punktami, jednak cały program jest bez współrzędnych opiera się na odległościach. Czy jest możliwość wykonania czegoś takiego w taki sposób, czy jednak muszę przerabiać wszystko na współrzędnych?

package data;

import java.util.ArrayList;
import java.util.Random;

public class Start {

	public static void main(String[] args) {
		new Start();
	}
	public Start()
	{
		String[] airportName = {"Wrocław", "Karków", "Warszawa"};
		double[][] distance = {{0, 235, 308}, {235, 0, 527}, {235, 409, 0} };
		ArrayList<Airport> airport = new ArrayList<Airport>();
		Random generator = new Random();
		
		for(int i=0; i<airportName.length; i++)
		{
			airport.add(new Airport (airportName[i], distance [i]));
		}
		
		int planeNumber = generator.nextInt(40)+10, start, end;
		
		for(int i=0; i<planeNumber; i++)
		{
			start = generator.nextInt(3);
			end = generator.nextInt(3);
			while(start==end)
			{
				end = generator.nextInt(3);
			}	
			(new Airplane(i, start, end, 350+generator.nextInt(250), airport)).start();
			try{
				Thread.sleep(150);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}		
}
package data;

import java.util.ArrayList;
import java.util.Random;

public class Airplane extends Thread {
	private int id;
	private int fuel;
	private int start;
	private int end;
	private ArrayList<Airport> air;
	public Airplane(int id, int start, int end, int fuel, ArrayList<Airport> air) {
		super();
		this.id = id;
		this.fuel = fuel;
		this.start = start;
		this.end = end;
		this.air = air;
	}
	public long getId() {
		return id;
	}
	public int getFuel() {
		return fuel;
	}
	public int getStart() {
		return start;
	}
	public int getEnd() {
		return end;
	}
	public void setId(int id) {
		this.id = id;
	}
	public void setFuel(int fuel) {
		this.fuel = fuel;
	}
	public void setStart(int start) {
		this.start = start;
	}
	public void setEnd(int end) {
		this.end = end;
	}
	public void run () {
		int fly=0;
		Random generator = new Random();
		while(true){
			if(fly==0){
				System.out.println("Samolot "+id+" wylecial z lotniska w "+air.get(start).getName()+" do " + air.get(end).getName());
				air.get(start).setRunway(false);
				System.out.println("Samolot o nr "+id+ " leci do lotniska "+ air.get(end).getName());
			}
			if(fly>fuel){
				System.out.println("Samolot "+id+" rozbil sie z powodu paliwa");
				System.out.println("Utworzenie nowego samolotu o id "+id+"");
	        	int start2, end2;
	        	start2 = generator.nextInt(3);
	        	end2 = generator.nextInt(3);
	    		while(end2==start2)
	    		{
		        	end2 = generator.nextInt(3);
		        }
	    		(new Airplane(id, 350+generator.nextInt(250), start2, end2, air)).start();
				break;
			}
			if(fly<air.get(start).getDistance(end)){
				fly++;
			}
			else{
				if(air.get(end).getRunway()==true){
					System.out.println("Samolot "+id+" oczekuje na zwolnienie pasa w "+air.get(end).getName());
					fly++;
				}
				else{
					air.get(end).setRunway(true);
					System.out.println("Samolot "+id+" zajmuje pas na lotnisku w "+air.get(end).getName());
		        	System.out.println("Samolot "+id+" wyladowal na lotnisku w "+air.get(end).getName());
		        	start=end;
		        	end = generator.nextInt(3);
		        	while(end==start){
		        		end = generator.nextInt(3);
		        	}
		        	fly = 0;
				}
			}
				try {
					Thread.sleep(50);
				} catch (InterruptedException e) {
					e.printStackTrace();
				
			}
		}
		
	}
	
	
	
}
package data;

public class Airport {
	private String name;
	private boolean runway;
	private double[] distance;
	public Airport(String name, double[] distance) {
		super();
		this.name = name;
		this.runway = false;
		this.distance = distance;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public synchronized boolean getRunway() {
		return runway;
	}
	public synchronized void setRunway(boolean runway) {
		this.runway = runway;
	}
	public double getDistance(int id) {
		return distance[id];
	}
	
	
	
	
}