Files
it-convos/Dijkstra_vs/yeet.java
2022-10-12 19:59:56 +02:00

171 lines
4.7 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;
int[] dist; // distanzen
int[][] con; // connections
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=Start, 1=Ziel, 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 int[] qwerty(int node) {
dist = new int[n]; // kurzeste Distanz von 0 zu Punkt i
int boi = 0;
for (int r = 0; r < n; r++) {
if (conn(node, r)) {
boi++;
}
}
int[] out;
out = new int[boi];
int boii = 0;
for (int r = 0; r < n; r++) {
if (conn(node, r)) {
out[boii] = r;
}
}
return out;
}
public boolean conn(int input, int input2) {
boolean fish = false;
for (int i = 0; i < n; i++) {
if (earr[i][0] == input && earr[i][1] == input2) {
fish = true;
}
if (earr[i][0] == input2 && earr[i][1] == input) {
fish = true;
}
}
return fish;
}
public int distance(int input, int input2) {
for (int i = 0; i < n; i++) {
if (earr[i][0] == input && earr[i][1] == input2) {
return earr[i][2];
}
if (earr[i][0] == input2 && earr[i][1] == input) {
return earr[i][2];
}
}
return 0;
}
public void paint(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
}
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));
}
}
}