Formatieren eines Java-Würfel-Roll-Programms?

8

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%     
darkangel1283 02.03.2018, 19:05
quelle

4 Antworten

15

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.

    
Brian 02.03.2018 19:28
quelle
2

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 :

%Vor%

Hier ist die Klasse mit der Hauptmethode, die die Zeilen in StringBuilder sammelt und sie ausgibt:

%Vor%

Die Ausgabe dieses Codes lautet wie folgt:

%Vor%     
Charles Spencer 02.03.2018 19:33
quelle
1

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.

  • Es gibt eine Reihe von Strings, die "nett" formatiert werden sollen
  • Die Anzahl der Zeichenfolgen ist nicht bekannt.
  • Die Zeichenfolgen können mehrere Zeilen enthalten (d. h. sie können Zeilenumbrüche enthalten, \n oder \r\n ).
  • Die Anzahl der Zeilenumbrüche ist nicht bekannt.
  • Die Leitungslängen sind nicht bekannt.

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:

%Vor%

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%     
Marco13 03.03.2018 16:56
quelle
0

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%     
IEE1394 02.03.2018 19:29
quelle

Tags und Links