# Java StdDraw Graphics HILFESTELLUNG benötigt



## viech1337 (11. Dezember 2013)

Hallo ein Wunderschönen Guten Abend,

ich hoffe ihr könnt mir bei mein Anliegen weiterhelfen.

Schreiben Sie eine ausfuhrbare Klasse, die, gesteuert von einer Zeichenkette, einen
Polygonzugs zeichnet. Der Polygonzug beginnt im Urspung des Koordinatensystems
und der Zeichenstift ist in Richtung der positiven x-Achse orientiert.

Die Zeichenkette
enthalt nur die Buchstaben F, L und R.

F Bewege den Zeichenstift um die Lange 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 Groe 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 Fesnter 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

```
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


----------



## HonniCilest (12. Dezember 2013)

Ich denke du kannst hier mit einfachen Mitteln nicht viel anders machen, als die Position des Stiftes ohne Zeichnen mit einer Einheit (Ganze Zahl) zu simulieren und dir dabei die Maximale Position in jede Richtung zu speichern.

Das heißt in anderen Worten:
1. Ich würde von einer Startposition P(x=0, y=0)  ausgehen.
2. Du benötigst weiterhin dafür Variablen für die Minima und Maxima von x und y (4 Variablen), die Minima sind hier im negativen Bereich.
3. Du brauchst Richtungsvariablen, das könnten 2 tri-state Variablen sein, welche jeweils positiv, keine Bewegung bzw. negative Richtung von x und y vorgeben.
4. Nach Simulation mit den vorhandenen Minima und Maxima berechnest du dir jeweils die Gesamtlänge in deiner Einheit.
5. Mit Hilfe der Größe der Zeichenfläche (Pixel) und der Einheitslänge (ohne Einheit) kannst du dir die Schrittlänge (Pixel) für die Grafik berechnen. Das ist grundsätzlich ganz einfach, allerdings stellt sich hier zusätzlich die Frage, ob die Schrittlänge in x- bzw y-Richtung verschieden sein darf. Wenn ja, dann führe dies für beide schlichtweg durch und speichere sie seperat ab. Wenn nein, dann musst du noch die Längenverhältnisse vergleichen und entsprechend wählen ob x oder y längenweisend ist. In der Regel sollte es die Seite sein, welche die kleinere Schrittlänge hervorruft.

PS.: Bitte Java-Code in entsprechende Tags verpacken. Damit erhälst du Syntax-Highlighting, macht den Code und deinen Post leserlicher und erhöht damit die Chance, dass dir geholfen wird.


----------



## viech1337 (12. Dezember 2013)

das hört sich plausibel an danke zunächst einmal, doch ich weiß nicht recht wie ich das in ein lauffähigen Code bringen soll. 


```
if ( str [i] == 'F' ) 

           StdDraw.line ( ...... ) ;
usw.
```


so in etwa ?


----------



## HonniCilest (17. Dezember 2013)

viech1337 hat gesagt.:


> doch ich weiß nicht recht wie ich das in ein lauffähigen Code bringen soll.



Wo genau hakt es denn?



> ```
> if ( str [i] == 'F' )
> 
> StdDraw.line ( ...... ) ;
> ...



Öhm... Nein...
Ich weiß ehrlich gesagt nicht mal, was du genau mit diesem Schnipsel sagen möchtest.
Mit str[ i ] möchtest du vermutlich den Buchstaben an der Position i, jedoch ist dies bereits falsch. verwende hier str.charAt(i)

PS.: Der Ansatz mit den java-Tags ist ja schon richtig, nur sollten nun noch die Leerzeichen verschwinden, damit der Java Code auch als solches formatiert wird ;-)


----------

