E
Eskimo12
Gast
Hallo Zusammen,
ich programmiere momentan eine Rasenmähroboter Simulation und stoße dabei an meine Grenzen.
Ich lese mein Grundstück über eine Textdatei ein, in der ich auch meinen Roboter setze. Das ganze passiert so:
Zunächst soll der Roboter aus der Ladestation starten, also rückwärts rausfahren, sich drehen und dann zufällig mähen. Dabei soll er sich merken wo er lang ist um bei einem gewissen Akkustand den gleichen Weg zurück zu nehmen. Die Robotersteuerung wollte ich nun in einer neuen Klassen Roboter erstellen. Diese soll sagen können ob die Messer aktiv sind, dass der Roboter prüfen soll welche Art Feld vor ihm liegt und was er in welchem Fall tun muss. ICh denke hierbei ist eine intelligente Steuerung für mich zu komplex und daher wirds die Zufallssteuerung.
Meine Klasse Roboter sieht bisher so aus:
ich habe leider keine Ahnung wie ich nun weiter Vorgehen soll. Habt ihr evtl Tipps oder Lösungansätze?
Grüße
Eskimo
ich programmiere momentan eine Rasenmähroboter Simulation und stoße dabei an meine Grenzen.
Ich lese mein Grundstück über eine Textdatei ein, in der ich auch meinen Roboter setze. Das ganze passiert so:
Java:
public class Spielfeld
{
private int hoehe;
private int breite;
private Untergrund[][] untergrundMatrix;
/**
* Konstruktor der Klasse Spielfeld
*/
public Spielfeld(int hoehe, int breite, char[][] feldinhalt)
{
this.hoehe = hoehe;
this.breite = breite;
Untergrund[][] untergrundMatrix = new Untergrund[breite][hoehe];
}
/**
* Diese Methode erzeugt die Objekte und legt diese in der UntergrundsMatrix ab.
*
* @param grundstueck Das charArray grundstueck beinhaltet die chars, die aus der Datei eingelesen wurden.
*
*/
public Untergrund[][] erzeugeFelder(char[][] grundstueck, Untergrund[][] untergrundMatrix)
{
for(int y = 0; y < hoehe; y++){
for(int x = 0; x < breite; x++){
if(grundstueck[x][y] == 'R'){
boolean gemaeht = false;
Vektor position = new Vektor(x ,y);
Untergrundtyp typ = Untergrundtyp.RasenUngemäht;
Rasen rasen = new Rasen(gemaeht, position, typ);
untergrundMatrix[x][y] = rasen;
}
else if(grundstueck[x][y] == 'r'){
boolean gemaeht = true;
Vektor position = new Vektor(x, y);
Untergrundtyp typ = Untergrundtyp.RasenGemäht;
Rasen rasen = new Rasen(gemaeht, position, typ);
untergrundMatrix[x][y] = rasen;
}
else if(grundstueck[x][y] == 'B'){
Vektor position = new Vektor(x, y);
Untergrundtyp typ = Untergrundtyp.Baum;
Untergrund untergrund = new Untergrund(position, typ);
untergrundMatrix[x][y] = untergrund;
}
else if(grundstueck[x][y] == 'H'){
Vektor position = new Vektor(x, y);
Untergrundtyp typ = Untergrundtyp.Hecke;
Untergrund untergrund = new Untergrund(position, typ);
untergrundMatrix[x][y] = untergrund;
}
else if(grundstueck[x][y] == 'E'){
Vektor position = new Vektor(x, y);
Untergrundtyp typ = Untergrundtyp.Beet;
Untergrund untergrund = new Untergrund(position, typ);
untergrundMatrix[x][y] = untergrund;
}
else if(grundstueck[x][y] == 'A'){
Vektor position = new Vektor(x, y);
Untergrundtyp typ = Untergrundtyp.Strauch;
Untergrund untergrund = new Untergrund(position, typ);
untergrundMatrix[x][y] = untergrund;
}
else if(grundstueck[x][y] == 'T'){
Vektor position = new Vektor(x, y);
Untergrundtyp typ = Untergrundtyp.Terrasse;
Untergrund untergrund = new Untergrund(position, typ);
untergrundMatrix[x][y] = untergrund;
}
else if(grundstueck[x][y] == 'U'){
Vektor position = new Vektor(x, y);
Untergrundtyp typ = Untergrundtyp.Haus;
Untergrund untergrund = new Untergrund(position, typ);
untergrundMatrix[x][y] = untergrund;
}
else if(grundstueck[x][y] == 'M'){
Vektor position = new Vektor(x, y);
Untergrundtyp typ = Untergrundtyp.Mauer;
Untergrund untergrund = new Untergrund(position, typ);
untergrundMatrix[x][y] = untergrund;
}
else if(grundstueck[x][y] == 'I'){
Vektor position = new Vektor(x, y);
Untergrundtyp typ = Untergrundtyp.Teich;
Untergrund untergrund = new Untergrund(position, typ);
untergrundMatrix[x][y] = untergrund;
}
else if(grundstueck[x][y] == 'G'){
Vektor position = new Vektor(x, y);
Untergrundtyp typ = Untergrundtyp.Gehweg;
Untergrund untergrund = new Untergrund(position, typ);
untergrundMatrix[x][y] = untergrund;
}
else if(grundstueck[x][y] == '1'){
Vektor position = new Vektor(x, y);
Ausrichtung ausrichtung = Ausrichtung.Norden;
Untergrundtyp typ = Untergrundtyp.RasenUngemäht;
boolean gemaeht = false;
Rasen rasen = new Rasen(gemaeht, position, typ);
Roboter roboter = new Roboter(ausrichtung, position);
untergrundMatrix[x][y] = rasen;
}
else if(grundstueck[x][y] == '2'){
Vektor position = new Vektor(x, y);
Ausrichtung ausrichtung = Ausrichtung.Osten;
Untergrundtyp typ = Untergrundtyp.RasenUngemäht;
boolean gemaeht = false;
Rasen rasen = new Rasen(gemaeht, position, typ);
Roboter roboter = new Roboter(ausrichtung, position);
untergrundMatrix[x][y] = rasen;
}
else if(grundstueck[x][y] == '3'){
Vektor position = new Vektor(x, y);
Ausrichtung ausrichtung = Ausrichtung.Süden;
Untergrundtyp typ = Untergrundtyp.RasenUngemäht;
boolean gemaeht = false;
Rasen rasen = new Rasen(gemaeht, position, typ);
Roboter roboter = new Roboter(ausrichtung, position);
untergrundMatrix[x][y] = rasen;
}
else if(grundstueck[x][y] == '4'){
Vektor position = new Vektor(x, y);
Ausrichtung ausrichtung = Ausrichtung.Westen;
Untergrundtyp typ = Untergrundtyp.RasenUngemäht;
boolean gemaeht = false;
Rasen rasen = new Rasen(gemaeht, position, typ);
Roboter roboter = new Roboter(ausrichtung, position);
untergrundMatrix[x][y] = rasen;
}
else if(grundstueck[x][y] == 'n'){
Vektor position = new Vektor(x, y);
Ausrichtung ausrichtung = Ausrichtung.Norden;
Untergrundtyp typ = Untergrundtyp.Ladestation;
Ladestation ladestation = new Ladestation(position, typ, ausrichtung);
untergrundMatrix[x][y] = ladestation;
}
else if(grundstueck[x][y] == 'o'){
Vektor position = new Vektor(x, y);
Ausrichtung ausrichtung = Ausrichtung.Osten;
Untergrundtyp typ = Untergrundtyp.Ladestation;
Ladestation ladestation = new Ladestation(position, typ, ausrichtung);
untergrundMatrix[x][y] = ladestation;
}
else if(grundstueck[x][y] == 's'){
Vektor position = new Vektor(x, y);
Ausrichtung ausrichtung = Ausrichtung.Süden;
Untergrundtyp typ = Untergrundtyp.Ladestation;
Ladestation ladestation = new Ladestation(position, typ, ausrichtung);
untergrundMatrix[x][y] = ladestation;
}
else if(grundstueck[x][y] == 'w'){
Vektor position = new Vektor(x, y);
Ausrichtung ausrichtung = Ausrichtung.Westen;
Untergrundtyp typ = Untergrundtyp.Ladestation;
Ladestation ladestation = new Ladestation(position, typ, ausrichtung);
untergrundMatrix[x][y] = ladestation;
}
else if(grundstueck[x][y] == 'N'){
Vektor position = new Vektor(x, y);
Ausrichtung ausrichtungRoboter = Ausrichtung.Süden;
Ausrichtung ausrichtungLadestation = Ausrichtung.Norden;
Roboter roboter = new Roboter(ausrichtungRoboter, position);
Untergrundtyp typ = Untergrundtyp.Ladestation;
Ladestation ladestation = new Ladestation(position, typ, ausrichtungLadestation);
untergrundMatrix[x][y] = ladestation;
}
else if(grundstueck[x][y] == 'O'){
Vektor position = new Vektor(x, y);
Ausrichtung ausrichtungRoboter = Ausrichtung.Westen;
Ausrichtung ausrichtungLadestation = Ausrichtung.Osten;
Roboter roboter = new Roboter(ausrichtungRoboter, position);
Untergrundtyp typ = Untergrundtyp.Ladestation;
Ladestation ladestation = new Ladestation(position, typ, ausrichtungLadestation);
untergrundMatrix[x][y] = ladestation;
}
else if(grundstueck[x][y] == 'S'){
Vektor position = new Vektor(x, y);
Ausrichtung ausrichtungRoboter = Ausrichtung.Norden;
Ausrichtung ausrichtungLadestation = Ausrichtung.Süden;
Roboter roboter = new Roboter(ausrichtungRoboter, position);
Untergrundtyp typ = Untergrundtyp.Ladestation;
Ladestation ladestation = new Ladestation(position, typ, ausrichtungLadestation);
untergrundMatrix[x][y] = ladestation;
}
else if(grundstueck[x][y] == 'W'){
Vektor position = new Vektor(x, y);
Ausrichtung ausrichtungRoboter = Ausrichtung.Osten;
Ausrichtung ausrichtungLadestation = Ausrichtung.Westen;
Roboter roboter = new Roboter(ausrichtungRoboter, position);
Untergrundtyp typ = Untergrundtyp.Ladestation;
Ladestation ladestation = new Ladestation(position, typ, ausrichtungLadestation);
untergrundMatrix[x][y] = ladestation;
}
else {System.out.println("nichts passendes gefuznden"); }
}
} return untergrundMatrix;
}
Zunächst soll der Roboter aus der Ladestation starten, also rückwärts rausfahren, sich drehen und dann zufällig mähen. Dabei soll er sich merken wo er lang ist um bei einem gewissen Akkustand den gleichen Weg zurück zu nehmen. Die Robotersteuerung wollte ich nun in einer neuen Klassen Roboter erstellen. Diese soll sagen können ob die Messer aktiv sind, dass der Roboter prüfen soll welche Art Feld vor ihm liegt und was er in welchem Fall tun muss. ICh denke hierbei ist eine intelligente Steuerung für mich zu komplex und daher wirds die Zufallssteuerung.
Meine Klasse Roboter sieht bisher so aus:
Java:
public class Robot
{
private Ausrichtung ausrichtung;
private Vektor position;
private boolean messerAktiv;
/**
* Konstruktor der Klasse Roboter
*/
public Robot(Ausrichtung ausrichtung, Vektor position)
{
}
}
Grüße
Eskimo