Lösung zu Aufgabe 3: Zeichne ein X in Ascii-Art
Erweitere die Klasse AsciiArt
von oben um eine Methode void zeichneX(int breite, int linienstärke, String farbe)
, die ein großes X aus lauter X-Zeichen zusammensetzt. Die Ausgabe von art.zeichneX(10, 2, Color.pink);
sieht beispielsweise so aus, wie im Bild rechts zu sehen.
Erklärung
Es gibt verschiedene (gleich gute!) Möglichkeiten, diese Aufgabe zu lösen. Die vorliegende definiert zwei Variablen von1
und bis1
, die festlegen, von welcher Spalte bis zu welcher Spalte die „X“-Zeichen des „Linksobennachrechtsunten“-Querbalkens in der aktuellen Zeile geschrieben werden und von2
sowie bis2
entsprechend für den „Rechtsobennachlinksunten“-Querbalken. In der Zeichnung rechts ist die anfängliche Belegung der Variablen für ein X mit Breite 20 und Linienstärke 3 zu sehen:
$$von1 = 1$$
$$bis1 = 1 + 3 - 1 = 3$$
$$von2 = 20 - 3 + 1 = 18$$
$$bis2 = 20$$
Für jede Zeile durchläuft die Variable spalte
die Werte von 1 bis 20 und für jeden Wert von spalte
wird ein X ausgegeben oder ein Leerzeichen. Dabei wird folgende Regel angewandt:
Falls (spalte >= von1 und spalte <= bis2) ODER (spalte >= von2 und spalte <= bis2) wird ein X ausgegeben, ansonsten ein Leerzeichen.
Die X werden also - einfach gesagt - für die Spaltenbereichen von von1
bis bis1
und von von2
bis bis2
ausgegeben.
Nach Beendigung jeder Zeile werden von1
und bis1
um 1 erhöht (der „Linksobennachrechtsunten“-Querbalken wandert also ein Zeichen nach rechts) und von2
und bis2
um 1 erniedrigt (der „Rechtsobennachlinksunten“-Querbalken wandert also ein Zeichen nach links).