/** * piirtää reitin tiedostoon ja reittikartta taulukkoon * * @param käydytsolmut * @throws IOException */ public void piirräreitti(PriorityQueue<Solmu> käydytsolmut) throws IOException { String nimi = new String("uk"); BufferedWriter reittikarttatiedosto = new BufferedWriter(new FileWriter("uk")); Solmu solmu = new Solmu(0, 0, null, 0); while (!käydytsolmut.isEmpty()) { solmu = käydytsolmut.poll(); for (int n = 0; n < kartankoko; n++) { for (int i = 0; i < kartankoko; i++) { if (solmu.x == n && solmu.y == i) { // reittikartta[i][n] = '-'; reittikartta[i][n] = (char) (solmu.summaamatkat(0, solmu.annavanhempi()) + 65); // reittikarttatiedosto.write("-"); reittikarttatiedosto.write('-'); } else { reittikarttatiedosto.write(reittikartta[i][n]); } } reittikarttatiedosto.newLine(); } } reittikarttatiedosto.close(); tulostakartta(reittikartta); }
/** * arvottaa reitin sen perusteella mitä merkkejä kartassa on saa numeerisen kartan ja tekee siitä * yksinkertaisemman näköisen esim. kaikki random merkit jotka kaikki ovat yhtä arvokkaita niin * saavat saman arvon. * * @param kartta * @throws FileNotFoundException */ public void arvotareitti(char[][] kartta) throws FileNotFoundException { reittikartta = uusikartta(kartta); this.arvokartta = arvotakartta(kartta); for (int n = 0; n < kartankoko; n++) { for (int i = 0; i < kartankoko; i++) { if (arvokartta[n][i] == -1) { reittikartta[n][i] = 'L'; maalisolmu.x = i; maalisolmu.y = n; } else if (arvokartta[n][i] == 1) { reittikartta[n][i] = 'o'; } else if (arvokartta[n][i] == 30) { reittikartta[n][i] = '3'; } else if (arvokartta[n][i] == 400) { reittikartta[n][i] = '4'; } else if (arvokartta[n][i] == 0) { reittikartta[n][i] = 'A'; } } } }
public void arvotasolmu(Solmu solmu) { solmu.etäisyysvanhemmasta = arvokartta[solmu.y][solmu.x]; }