133 lines
3.9 KiB
Java
133 lines
3.9 KiB
Java
import java.util.Scanner;
|
|
import java.io.File;
|
|
import java.io.FileNotFoundException;
|
|
import javax.swing.*;
|
|
import java.awt.*;
|
|
import java.lang.Math;
|
|
import java.util.Random;
|
|
import java.util.*;
|
|
|
|
public class yeet extends JFrame {
|
|
Scanner scan;
|
|
int n, e;// n: Anzahl Punkte, e: Anzahl Wege
|
|
String tmpStr1, filename;
|
|
int[] xarr, yarr;
|
|
int[][] earr;
|
|
char tmpChar;
|
|
|
|
public static void main(String[] args) {
|
|
if (args.length == 0) {
|
|
new yeet();
|
|
} else {
|
|
for (int i = 0; i < args.length; i++) {
|
|
new yeet(args[i]);
|
|
}
|
|
}
|
|
}
|
|
|
|
public yeet() {
|
|
setSize(800, 800);
|
|
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
|
setLocationRelativeTo(null);
|
|
setVisible(true);
|
|
setBackground(new Color(0, 0, 0));
|
|
filename = "input.txt";
|
|
steps();
|
|
}
|
|
|
|
public yeet(String input) {
|
|
setSize(800, 800);
|
|
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
|
setLocationRelativeTo(null);
|
|
setVisible(true);
|
|
setBackground(new Color(0, 0, 0));
|
|
filename = input;
|
|
steps();
|
|
}
|
|
|
|
public void steps() {
|
|
readFile(); // einlesen
|
|
readNE(); // anzahl von n und e finden. Als int n und e gespeichert
|
|
make(); // Arrays erstellen
|
|
repaint();
|
|
}
|
|
|
|
public void readFile() {
|
|
try {
|
|
scan = new Scanner(new File(filename));
|
|
} catch (FileNotFoundException e) {
|
|
e.printStackTrace();
|
|
}
|
|
|
|
}
|
|
|
|
public void readNE() {
|
|
n = 0;
|
|
e = 0;
|
|
while (scan.hasNext() == true) {
|
|
tmpChar = scan.next().charAt(0);
|
|
if (tmpChar == 'n') {
|
|
n++;
|
|
}
|
|
if (tmpChar == 'e') {
|
|
e++;
|
|
}
|
|
}
|
|
readFile();
|
|
}
|
|
|
|
public void make() {
|
|
readFile();
|
|
xarr = new int[n];// X Position
|
|
yarr = new int[n];// Y Position
|
|
earr = new int[e][3];// [x][y]; x:Wert, y:0=xPos, 1=yPos, 2=Abstand
|
|
for (int i = 0; i < n; i++) {
|
|
scan.next();
|
|
xarr[i] = scan.nextInt();
|
|
yarr[i] = scan.nextInt();
|
|
}
|
|
for (int i = 0; i < e; i++) {
|
|
scan.next();
|
|
earr[i][0] = scan.nextInt();// Start
|
|
earr[i][1] = scan.nextInt();// Ziel
|
|
earr[i][2] = scan.nextInt();// Entfernung
|
|
}
|
|
readFile();
|
|
}
|
|
|
|
public void paint(Graphics g) {
|
|
labAnzeigen(g);
|
|
}
|
|
|
|
public void neuzeichnen() {
|
|
repaint();
|
|
}
|
|
|
|
public void anzeigen(Graphics g) {
|
|
labAnzeigen(g);
|
|
}
|
|
|
|
public void labAnzeigen(Graphics g) {
|
|
g.clearRect(0, 0, 800, 800);// Feld clearen
|
|
g.setColor(new Color(200, 10, 100));// Farbe setzen
|
|
for (int i = 0; i < n; i++) {
|
|
g.fillOval(xarr[i], yarr[i], 36, 36);// Punkt fur Stadt erstellen
|
|
g.setColor(new Color(0, 0, 0));
|
|
g.drawString(Integer.toString(i), xarr[i] + 14, yarr[i] + 22);// Stadt bezeichnen
|
|
g.setColor(new Color(200, 10, 100));
|
|
}
|
|
for (int i = 0; i < e; i++) {
|
|
g.drawLine(xarr[earr[i][0]] + 16, yarr[earr[i][0]] + 16, xarr[earr[i][1]] + 16, yarr[earr[i][1]] + 16);// linie
|
|
// zwischen
|
|
// zwei
|
|
// Punkten
|
|
}
|
|
for (int i = 0; i < e; i++) {
|
|
g.setColor(new Color(100, 255, 100));
|
|
g.drawString(Integer.toString(earr[i][2]), (xarr[earr[i][0]] + xarr[earr[i][1]]) / 2 + 10,
|
|
(yarr[earr[i][0]] + yarr[earr[i][1]]) / 2 + 20);// zeichnung der Linie
|
|
g.setColor(new Color(200, 10, 100));
|
|
}
|
|
}
|
|
}
|