Sie haben die Ergebnisse Ihrer Rollen speichern im dice
Array müssen Sie einfach neue zufällige Ergebnisse für die Würfel in diesen Positionen erstellen. Z.B. Wenn Sie # 2 wiederholen, dann fügen Sie einen neuen Zufallswert in Index 1 ein.
Für die Bestimmung der verschiedenen Arten von Rollen wie Vollhaus werden Sie generische Logik für jedes definieren wollen. Sie könnten zum Beispiel eine Methode, wie definieren:
public static boolean isFullHouse(int[] diceRoll){
//return true if the roll is a full house, false otherwise
}
Aber ich denke, was Sie wirklich wollen, nicht nur um zu bestimmen, ob eine Rolle ein volles Haus, sondern auch die Gesamtbilanz mit den Bewertungsregeln für das Szenario zu berechnen .
EDIT # 1:
Bevor Sie weiter bitte, auf ein Minimum, lesen Sie den Abschnitt über this page "über Hausaufgaben Vorstellung" betitelt.
Ich werde versuchen, zu veranschaulichen, wie ich denke, dass Sie eine Neuauflage durchführen könnten, ohne an dieser Stelle vollständigen Code bereitzustellen. Wie ich oben erwähnt habe, können Sie, da Sie den Benutzer fragen müssen, für welche Würfel er erneut rollen möchte, diese Eingabe verarbeiten und sie als Indices in Ihr Würfel-Array verwenden. Also, wenn die Benutzer 2,3,4 wie in Ihrem Beispiel verwenden Sie Scanner.getLine()
, um diese Eingabe zu lesen und dann String
Methoden verwenden, um es auseinander zu brechen. Sobald Sie die einzelnen Stücke haben, können Sie sie in int
Werte unter Verwendung der Integer
Klasse umwandeln. Ziehen Sie abschließend 1 von ihnen ab, um die Tatsache zu berücksichtigen, dass Ihre Würfel-Array-Indizes bei 0 beginnen.
Jetzt haben Sie ein Array mit Indizes in Ihrem Würfel-Array. Jedes Element in diesem neuen Array wird nur verwendet, um auf einen Index des Würfelarrays Bezug zu nehmen. So nennen wir dieses zweite Array userInput
. Fortsetzung der 2,3,4 Beispiel userInput[0]=1
, userInput[1]=2
, userInput[2]=3
.
Alles, was Sie tun müssen, ist Schleife durch userInput
und jedes Mal durch die Schleife eine neue Zufallszahl erzeugen. Diese Zufallszahl wird dann im Würfel-Array am Index gespeichert, der an der aktuellen Position Ihres userInput
Arrays gespeichert ist.
Um die bestmögliche Punktzahl zu bestimmen, könnten Sie, wie ich vorgeschlagen habe, für jede Methode individuelle Methoden schreiben, um festzustellen, ob sie vorhanden sind und dann eine andere Methode, um jede von ihnen aufzurufen und die größtmögliche Punktzahl zu melden.
Nehmen wir eine von ihnen als ein Beispiel wie 3 einer Art. Die einfachste Art, darüber nachzudenken, wäre vielleicht, alle möglichen Würfe (0 bis 6) zu durchlaufen, so dass Sie jedes Mal durch die Schleife zählen, wie viele von jeder Rolle im aktuellen Würfelwurf erscheinen. In Schleife 1 suchst du also drei 1 und in Schleife 2 nach drei 2 und so weiter.
Innerhalb dieser Schleife erstellen Sie eine weitere Schleife, um alle Würfel im aktuellen Würfelwurf (Ihr dice
Array) zu durchlaufen und jedes Mal durch die Schleife zu überprüfen, ob der aktuelle Würfel die Nummer ist, die Sie gerade sind suche von deiner äußeren Schleife. Wenn es sich um die Nummer aus der äußeren Schleife handelt, erhöhen Sie einen Zähler (der in der äußeren Schleife definiert und initialisiert wird, aber außerhalb der inneren Schleife, sodass er jedes Mal zurückgesetzt wird, wenn die äußere Schleife inkrementiert wird), um anzuzeigen, wie viele dieser Zahlen Sie gefunden haben bisher.
Wenn der Zähler 3 erreicht, bevor die innere Schleife endet, wissen Sie, dass Sie 3 haben, also haben Sie die Methode return true
, da Sie keinen Grund haben weiterzumachen (kann nicht 2 verschiedene 3 einer Art haben). Andernfalls sollte Ihre Methode false zurückgeben, um anzuzeigen, dass keine Übereinstimmung gefunden wurde.
Beachten Sie, dass Sie, wenn Sie ehrgeizig sein möchten, gute Programmierübungen ausüben und Code wiederverwenden können, indem Sie das Limit Ihres Zählers als Parameter für Ihre Methode festlegen, so dass Sie die gleiche Logik sowohl für 3 als auch 4 einer Art.
Hinweis Es gibt eine schlauere Methode, dies zu tun, aber ich dachte, dass dieser Ansatz konsistenter mit den Konstrukten sein würde, die Sie bereits kennen.
Ich hoffe, dass dies hilft, um loszulegen!
Erstellen Sie ein anderes Array, kopieren Sie das erste Array in das neue Array. Jetzt würfle nochmal, aber setze die Werte nur in die Indizes 2,3,4 .. Du kannst das tun, indem Du es in If stmt unter einer for-Schleife vergleichst. Weißt Du auch, wie man Eingaben von den Benutzern akzeptiert? –
Ich wollte eine int-Eingabe verwenden, um eine Position im Array anzugeben, um sie erneut zu randomisieren. Ich weiß, wie man Eingaben für einige Dinge verwendet, aber ich habe keine Ahnung, wie man mit Arrays und Eingaben arbeitet. – B1azingPh03nix
Sie müssten Ihre Eingabewerte in ein anderes Array speichern und dann anfangen, damit zu vergleichen ... –