Mr.Bombastic (11.12.2013)
-
11.12.2013, 19:56 #1
Bruder braucht Hilfe bei Java
Guten Abend,
ich zitiere ihn einfach direkt mal:
Schreiben Sie eine ausführbare Klasse, die, gesteuert von einer Zeichenkette, einen
Polygonzugs zeichnet. Der Polygonzug beginnt im Ursprung des Koordinatensystems
und der Zeichenstift ist in Richtung der positiven x-Achse orientiert.
Die Zeichenkette
enthält nur die Buchstaben F, L und R.
F Bewege den Zeichenstift um die Länge 1 in die Richtung, in die der Zeichenstift
orientiert ist und zeichne dabei eine Linie.
L Drehe den Zeichenstift um 90 nach links.
R Drehe den Zeichenstift um 90 nach rechts.
Soweit hab ich alles verstanden!
Doch die eigentliche Aufgabenstellung danach macht mir zu schaffen.
Dem eigentlichen Zeichnen geht eine Simulation voran, die die Groe des Polygonzugs
ermittelt, d.h. die maximale/minimale x-/y-Koordinaten bestimmt,
und die Skalierung des angezeigten Koordinatensystems so festlegt, dass der
komplette Polygonzug sichtbar ist.
Der Polygonzug wird mit Hilfe der Methoden
Klasse StdDraw gezeichnet.
Wie man eine Fenster bei Java erzeugt weiß ich mittlerweile, nur verstehe ich nicht wie ich das ganze in Java-Code zusammenfassen soll.
Mein Ansatzpunkt wäre der :
Java Code: Quelltext in neuem Fenster öffnen
Code:class Hint { public static void main ( String [] args ) { int count = StdIn . readInt (); StdIn . readLine (); char [] str = new char[ count ]; for(int i = 0; i < count ; i++) str [i] = StdIn . readChar (); StdIn . readLine (); } }
Er ließt quasi die Anzahl der Zeichen und die Zeichen nacheinander von der
Standardeingabe.
Nur wie erzeuge ich ein Polygonzug laut der Aufgabenstellung ? Wäre echt lieb wenn ihr helfen würdet
Liebe Grüße
Liebe Grüße.Geändert von Mr.Bombastic (11.12.2013 um 19:57 Uhr)
-
11.12.2013, 21:44 #2
AW: Bruder braucht Hilfe bei Java
Da ich die angesprochene Klasse StdDraw nicht kenne, habe ich eine ganz einfache eigene Turtle-Klasse geschrieben:
class Turtle {
private int x;
private int y;
private double angle;
public Turtle() {
x = y = 0;
angle = 0.0d;
}
public void move(int x, int y) {
this.x = x;
this.y = y;
}
public void forward(int length) {
final double radAngle = Math.toRadians(angle);
final int endX = (int) Math.round(x + Math.cos(radAngle) * length);
final int endY = (int) Math.round(y + Math.sin(radAngle) * length);
move(endX, endY);
}
public void turnLeft(double angle) {
this.angle -= angle;
}
public void turnRight(double angle) {
this.angle += angle;
}
public final int getX() { return x; }
public final int getY() { return y; }
public final double getAngle() { return angle; }
}
Für "FLFLFRFLFLFRFRF" bekomme ich folgende Ausgabe:
Spoiler:Restlicher Code
Um vor dem Zeichnen die Bounds zu ermitteln, musst du im Eingabestring die Zeichen zählen. Nach einem (oder allgemeiner ungerade Anzahl von) L oder R wird die Richtung umgeschaltet (also von width auf height und vice versa). Du musst nur einen Fall besonders berücksichtigen. Wenn es eine 180°-Drehung gibt, also zwei L oder R hintereinander. Das heißt, du musst die Anzahl der Fs bei einem Winkel von 0° von der Anzahl der Fs bei einem Winkel von 180° (und so weiter) abziehen.Geändert von Nuebel (11.12.2013 um 21:52 Uhr)
-
The Following User Says Thank You to Nuebel For This Useful Post:
Ähnliche Themen
-
Win7 Java in Safari ausführen (Fehlermeldung Java nicht installiert)
Von Silverstar im Forum WindowsAntworten: 8Letzter Beitrag: 02.12.2013, 23:41 -
PC vom Bruder ausspionieren
Von MHRCube im Forum SoftwareAntworten: 11Letzter Beitrag: 03.04.2013, 02:57 -
MASSIV - DU NENNST DICH BRUDER (OFFICIAL HD VERSION)
Von Bossgen im Forum Musik ♫Antworten: 4Letzter Beitrag: 19.09.2012, 20:47 -
PayPal Konto gesperrt, von meinem Bruder auch!
Von MaskuL1n im Forum Finanzen & ZahlungsmittelAntworten: 8Letzter Beitrag: 10.08.2012, 14:02 -
Wie viel Punkte braucht man?
Von Shane im Forum Fragen & ProblemeAntworten: 1Letzter Beitrag: 25.11.2011, 11:39
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.