Hallo!
Eigentlich ist meine Aufgabe keine richtige Hausaufgabe, eher eine Übungsaufgabe, deshalb bin ich mir nicht so sicher ob ich jetzt im richtigen Unterforum poste.
Folgendes ist meine Aufgabe:
Und hier ist das was ich bisher habe:
Okay, das mit der Vierteldrehung gestaltet sich für mich schwerer als zuerst gedacht. Da ich ja mit int arbeiten soll wird meine Idee nicht funktionieren.
Ich hatte mir gedacht das ich den Roboter auf einer x und y Achse hoch, runter, links und rechts gehen lassen kann. Bei +1 soll der Roboter entweder hoch oder nach rechts gehen. Bei -1 nach unten oder nach links. Nun das mit der Vierteldrehung funktioniert da ich keine 0.25 als int Wert verwenden kann. Arrrrgh.
Vielleicht hat ja jemand einen Tipp wie ich das Problem lösen kann.
Gruß,
El Kabong
Eigentlich ist meine Aufgabe keine richtige Hausaufgabe, eher eine Übungsaufgabe, deshalb bin ich mir nicht so sicher ob ich jetzt im richtigen Unterforum poste.
Folgendes ist meine Aufgabe:
Implementieren Sie eine Klasse zur Simulation von Robotern.
Ein Roboter hat eine Position (angegeben durch zwei int-Koordinaten) und eine Blick- bzw. Bewegungsrichtung
(Norden, Osten, Süden, Westen oder auch oben, unten, rechts, links).
Sehen Sie verschiedene Konstruktoren vor (mit Defaultwerten für Position und Richtung bzw. mit zu übergebenden
Werten).
Roboter können einen Schritt in die jeweils aktuelle Richtung gehen (step()) oder eine Vierteldrehung nach
links bzw rechts machen (turnLeft(), turnRight()).
Implementieren Sie zusätzlich eine Methode, mit der ein Roboter gleich mehrere Schritte macht. Die Anzahl der
Schritte soll als Parameter übergeben werden.
Außerdem soll es eineMethode show() geben, die die aktuelle Position und Blickrichtung eines Roboters anzeigt.
Und hier ist das was ich bisher habe:
Java:
public class Roboter {
Scanner sc = new Scanner(System.in);
int xposition;
int yposition;
int richtung;
int NORDEN;
int SUEDEN;
int WESTEN;
int OSTEN;
int auswahl = sc.nextInt();
public Roboter(int xposition, int yposition) {
this.xposition = xposition;
this.yposition = yposition;
}
public Roboter(int richtung) {
this.NORDEN = 0;
this.SUEDEN = 1;
this.WESTEN = 2;
this.OSTEN = 3;
this.richtung = richtung % 4;
if (this.richtung < 0) {
this.richtung *= -1;
}
}
public void step() {
switch (auswahl) {
case 1:
this.yposition = this.yposition + 1;
case 2:
this.yposition = this.yposition - 1;
case 3:
this.xposition = this.xposition - 1;
case 4:
this.xposition = this.xposition + 1;
}
}
public void turnLeft() {
switch (auswahl) {
case 1:
this.yposition = this.yposition + 1 % 4;
case 2:
this.yposition = this.yposition - 1 % 4;
case 3:
this.xposition = this.xposition - 1 % 4;
case 4:
this.xposition = this.xposition + 1 % 4;
}
}
public void turnRight() {
switch (auswahl) {
case 1:
this.yposition = this.yposition + 1 % 4;
case 2:
this.yposition = this.yposition - 1 % 4;
case 3:
this.xposition = this.xposition - 1 % 4;
case 4:
this.xposition = this.xposition + 1 % 4;
}
}
public void schritte(int schritte) {
switch (auswahl) {
case 1:
this.yposition = this.yposition + 2;
case 2:
this.yposition = this.yposition - 2;
case 3:
this.xposition = this.xposition - 2;
case 4:
this.xposition = this.xposition + 2;
}
}
public void show() {
System.out.println("xposition" + xposition);
System.out.println("yposition" + yposition);
System.out.println("Richtung" + richtung);
}
}
Okay, das mit der Vierteldrehung gestaltet sich für mich schwerer als zuerst gedacht. Da ich ja mit int arbeiten soll wird meine Idee nicht funktionieren.
Ich hatte mir gedacht das ich den Roboter auf einer x und y Achse hoch, runter, links und rechts gehen lassen kann. Bei +1 soll der Roboter entweder hoch oder nach rechts gehen. Bei -1 nach unten oder nach links. Nun das mit der Vierteldrehung funktioniert da ich keine 0.25 als int Wert verwenden kann. Arrrrgh.
Vielleicht hat ja jemand einen Tipp wie ich das Problem lösen kann.
Gruß,
El Kabong