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).