Hallo Forum!
Ich habe gerade ein Programm geschrieben mit dem man den Verkehr auf einem Kreis simulieren kann. Das funzt alles bestens. Doch ich möchte das ganze noch grafisch darstellen.
Das Programm manipuliert nur ein Array. Im Array sind die Geschwindigkeiten gespeichert (-1: kein Auto in diesem Feld. 0 bis 5: Auto mit dieser Geschwindigkeit an diesem Ort). Die Länge des Arrays repräsentiert also quasi die Strasse. Ich möchte nun die Autos graphisch als Punkte darstellen und sie auf einem Kreis bewegen. Nun wäre ich dankbar wenn mir jemand sagen kann wie ich das am Besten angehe. Ich habe gedacht ich könnte nach jedem Schritt den Punkt zeichnen, danach die neue Position berechnen, dort den neuen Punkt hinsetzten, und den alten Punkt löschen. Aber leider ist mir diese JPanel Sache noch nicht so geläufig. Darum wäre es nett wenn mir jemand Tipps geben könnte.Danke!
Beispiel für LENGTH = 10 und 2 Autos:
-1 -1 -1 -1 -1 -1 0 0 -1 -1
-1 -1 -1 -1 -1 -1 0 -1 1 -1
2 -1 -1 -1 -1 -1 -1 1 -1 -1
-1 -1 2 -1 -1 -1 -1 -1 -1 2
-1 2 -1 -1 2 -1 -1 -1 -1 -1
-1 -1 1 -1 -1 -1 2 -1 -1 -1
-1 -1 -1 1 -1 -1 -1 -1 2 -1
2 -1 -1 -1 1 -1 -1 -1 -1 -1
-1 -1 -1 3 -1 -1 2 -1 -1 -1
-1 -1 -1 -1 1 -1 -1 -1 2 -1
Ich habe gerade ein Programm geschrieben mit dem man den Verkehr auf einem Kreis simulieren kann. Das funzt alles bestens. Doch ich möchte das ganze noch grafisch darstellen.
Das Programm manipuliert nur ein Array. Im Array sind die Geschwindigkeiten gespeichert (-1: kein Auto in diesem Feld. 0 bis 5: Auto mit dieser Geschwindigkeit an diesem Ort). Die Länge des Arrays repräsentiert also quasi die Strasse. Ich möchte nun die Autos graphisch als Punkte darstellen und sie auf einem Kreis bewegen. Nun wäre ich dankbar wenn mir jemand sagen kann wie ich das am Besten angehe. Ich habe gedacht ich könnte nach jedem Schritt den Punkt zeichnen, danach die neue Position berechnen, dort den neuen Punkt hinsetzten, und den alten Punkt löschen. Aber leider ist mir diese JPanel Sache noch nicht so geläufig. Darum wäre es nett wenn mir jemand Tipps geben könnte.Danke!
Java:
import java.awt.*;
import javax.swing.*;
public class Road extends JPanel{
//Instance variables
// road length
private final int LENGTH = 70;
// vehicles max speed
private final int MAX_SPEED = 5;
// total amount of cars on the Road
private int carsRoad;
double TROEDEL = 0.5;
// the road represented by an array of the speed
private int speed[];
//constructor habe ich mal mit geposted ...
public Road(int carsRoad)
{
this.carsRoad = carsRoad;
speed = new int[LENGTH];
int countCars = 0;
for(int i=0;i<LENGTH;i++)
{
speed[i] = -1;
}
while (countCars < carsRoad)
{
//randomNumber is below implemented
int p = randomNumber(LENGTH);
if (speed[p] == -1)
{
speed[p] = 0;
countCars++;
}
}
}
public void upadateRules()
{
//hier wird die Zahl die im Array gespeichert (Geschwindigkeit) für jedes Auto nach diversen Regeln angepasst. Durch wiederholtes Ausführen dieser Methode entsteht dann die eigentliche Simulation.
}
public void drawCar(Graphics page)
{
//TODO
}
public void removeCar(Graphics page)
{
//TODO
}
// for checking issues
public void checkArray()
{
for(int k=0;k<LENGTH;k++)
System.out.print(speed[k]+ " ");
System.out.print("\n");
}
}
Java:
public class Run {
public static void main(String[] args) {
Road road = new Road(10);
for(int n=0;n<10;n++)
{
road.upadateRules();
road.checkArray();
}
}
}
Beispiel für LENGTH = 10 und 2 Autos:
-1 -1 -1 -1 -1 -1 0 0 -1 -1
-1 -1 -1 -1 -1 -1 0 -1 1 -1
2 -1 -1 -1 -1 -1 -1 1 -1 -1
-1 -1 2 -1 -1 -1 -1 -1 -1 2
-1 2 -1 -1 2 -1 -1 -1 -1 -1
-1 -1 1 -1 -1 -1 2 -1 -1 -1
-1 -1 -1 1 -1 -1 -1 -1 2 -1
2 -1 -1 -1 1 -1 -1 -1 -1 -1
-1 -1 -1 3 -1 -1 2 -1 -1 -1
-1 -1 -1 -1 1 -1 -1 -1 2 -1