Ich mache ein Java-Programm, in dem ein zufälliges Würfelgesicht ausgewählt und angezeigt wird. Letztendlich möchte ich fünf Würfel nebeneinander in der Konsole zeigen. Ich habe einige Saiten gemacht, die Ascii-Darstellungen der 6 Würfelgesichter sind.
Hier ist ein Beispiel für eins:
%Vor%Meine Frage ist: Wie würde ich fünf dieser Ascii-Würfel nebeneinander in der Konsole anzeigen? Ich möchte, dass die Konsolenausgabe ungefähr so aussieht:
%Vor%Hier ist mein Code:
%Vor%Das hört sich ein bisschen nach Hausaufgaben an (Entschuldigung, wenn ich falsch liege), also werde ich Sie in die richtige Richtung bringen, anstatt eine vollständige Lösung anzubieten.
Betrachte die sechs möglichen Würfel:
%Vor%Wie einzigartig sind die Stücke wirklich? Sie können es in 6 Strings aufteilen:
%Vor%Jedes Würfelgesicht kann dargestellt werden, indem diese Zeichenfolgen zusammen mit Zeilenumbrüchen kombiniert werden, z. B .:
%Vor%Wenn Sie sie nebeneinander rendern möchten, denken Sie darüber nach, wie Sie ein paar Arrays so anordnen könnten, dass Sie über jeden Würfel hinweg iterieren, um jeweils eine Zeile zu drucken.
Folgendes habe ich mir ausgedacht. Es gibt eine Die
-Klasse, mit der du Iterator
durch die verschiedenen Zeilen erstellen kannst, und dann bekommen wir eine Liste dieser Iterator
's und drucken die erste Zeile für jeden Würfel, dann die zweite Zeile, etc .
Hier ist die Klasse Die
:
Hier ist die Klasse mit der Hauptmethode, die die Zeilen in StringBuilder
sammelt und sie ausgibt:
Die Ausgabe dieses Codes lautet wie folgt:
%Vor%Für solche Fälle tendiere ich dazu, etwas generische Lösungen zu erstellen. Dies kann für den bestimmten Fall der Frage "overengineering" sein. Aber ich denke, dass das Ergebnis ein nützlicher Baustein für Anwendungsfälle sein kann.
\n
oder \r\n
). Ein Ansatz wäre hier, die Strings in mehrere Zeilen aufzuteilen und sie als "Blöcke" zu betrachten, die horizontal verkettet werden sollten.
Die Methode format
im folgenden Beispiel macht genau das:
Für das Beispiel der Würfel ist die Ausgabe wie gewünscht:
%Vor%Als zusätzlichen Test gibt es ein Beispiel, in dem andere Strings mit unterschiedlichen Zeilen- und Zeilenlängen formatiert sind:
%Vor%Ich habe keine Kommentare hinzugefügt, um die Länge zu reduzieren. Wenn Sie Fragen haben, fragen Sie: -)
Die Idee ist, eine boolesche Matrix (3x3) für die "Augenfelder" zu haben. DiceSide sorgt dafür, dass die Felder entsprechend der anzuzeigenden Nummer gesetzt werden. Zwei Felder werden nicht berücksichtigt (oben Mitte, unten Mitte), weil sie immer leer sind.
Die createString-Methode druckt die Würfel als Reihen (jeder Würfel hat 5 Reihen (Überschrift, drei Augenreihen und Boden)).
%Vor%Tags und Links java