2010-12-20 12 views
1

ich ein Programm schreibe die Koordinaten von dem Benutzer und der Zeichnung, die einige Formen auf dem Bildschirm mit Sternen (*)Zeichnung Rechteck

zB rechteckig, dh Rechteck = 100,150,50,50 als x, y, Breite, Höhe akzeptiert . wie kann ich es tun??

+0

nicht nur auf dem Bildschirm mit Sternen –

+1

Können Sie alle Formen auflisten, die Sie unterstützen müssen? –

+0

Rechteck, Dreiecksquadrat und Fünfeck..Ich akzeptiere die Koordinaten vom Benutzer –

Antwort

1

Was mit Sternen Zeichnung "ist? Wenn es sich um einen Textmodus mit einer Schriftart mit einem festen Abstand handelt, müssen Sie es in horizontalen Zeilen von Sternen drucken und die richtigen Längen berechnen. Für Rechtecke ist dies einfach, für Dreiecke, ein bisschen weniger einfach, Pentagon ist nur eine Kombination aus einem Rechteck und einigen Dreiecken. Siehe Bresenham algorithm für Inspiration.

Beachten Sie auch, dass die Textmodusauflösung ziemlich schlecht ist; Standard-Terminal-Fenster in nur 80 Zeichen breit, und Sie können es kaum viel breiter als sagen 200-300 Zeichen, so richtige Rundung ist wichtig.

+0

yes..triangle ist einfach ich tat es, aber andere scheinen schwierig –

+0

Fünfeck ist nicht sehr schwer in leichte Stücke zu zerlegen:! [4 Dreiecke und ein Rechteck] (http://i.min.us/idH51K.png) . – 9000

0

Wenn es nur Rechtecke ist, dann ist die Umsetzung folgende in Ihrer Farbe Methode sollte funktionieren ...

int xIncrement = (int)g.getFont().getStringBounds("*", null).getWidth(); 
int yIncrement = (int)g.getFont().getStringBounds("*", null).getHeight(); 
for(int i = y; i < y + height; i += xIncrement) 
    for(int j = x; j < x + width; j += yIncrement) 
     g.drawString("*", j, i); 

Für Dreiecke und andere Formen ist es ein bisschen härter, aber Sie können Figuren aus den Steigungen der Linien Trennung die Punkte und erhalten daher das anfängliche x für jede Zeile.

Im Allgemeinen versuchen 'Stern Zeichnung' zu vermeiden ...

0

Unten ist von javadoc

x - die neuen x-Koordinate für die oberen linken Ecke dieses Rechtecks ​​y - die neue y für die oben links Ecke dieses Rechtecks ​​koordinieren

0

Es sei denn, Sie GUI beziehen, die Y-Koordinate die Menge der Zeilen, die Sie h sein kann ave to 'skip' und die x-Koordinate entsprechen der Anzahl der Leerzeichen, die Sie in die Zeile eingegeben haben.

Also im Grunde, x = 2 und y = 3 bedeutet, dass Sie 3 Zeilen nach unten gehen und 2 Leerzeichen nach rechts verschieben müssen.