Würfelspiel, stop bei gleicher Zahl

helloworld14

Mitglied
Hallo,

ich fange bald mit meinem Informatikstudium an und besuche derzeit einen Vorkurs.
Heute hatten wir schleifen und sollen ein Würfelspiel programmieren.

Ich soll so lange Würfeln bis 2x hintereinander die 6 erscheint und dann soll die Schleife aufhören.
Desweiteren sollen alle gewürfelten Zahlen geprinted werden.

Mir ist klar, dass man eine While-Schleife benutzen muss.

Jedoch klappt es mit meinem Code nicht und ich komme nicht so ganz weiter.
Um 2x die Sechs zu bekommen wollte ich zwei Würfel benutzen und sobald die gleich 6 sind soll die Schleife enden. Klappt bei mir jedoch nicht. Hättet ihr Tipps?
Ein Problem müsste ja sein, dass nach der Zeile der while-Schleife kein Befehl kommt, dass er weiter würfelt solange würfel1!=würfel2 ist oder?

Und ich versteh noch nicht ganz wie ich die Schleife beende.
Sorry ist erst meine zweite Stunde mit Java.


Java:
public class Aufgabe35 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println("Es wird gewürfelt...");
        int würfel1 = Zufall.zufaelligenIntWertGenerieren(1, 6);
        int würfel2 = Zufall.zufaelligenIntWertGenerieren(1, 6);
        while (würfel1 != würfel2);
        System.out.println(würfel1);
        System.out.println(würfel2);
        if ((würfel1 == würfel2) == 6) {
            System.out.println("Ende");
        }
    }
}
 
Zuletzt bearbeitet von einem Moderator:
Hallo,
wenn ich die Aufgabe richtig verstanden habe, ein möglicher Verlauf des Würfelspiels könnte auch die folgende Reihe sein:
1,6,6
Mit zwei Würfeln aber könntest du es niemals erreichen. Also ich würde folgendes vorschlagen:
- nutze nur einen Würfel
- nutze eine Variable dafür, die am letzten Mal gewürfelte Zahl zu speichern
In diesem Fall sollst du:
- die erste Zahl vor der Schleife würfeln und auszudrücken
- dann alle andere Zahle in der Schleife produzieren und auszudrücken
- von der Schleife ausspringen (Kommando: break😉 sobald die aktuelle gewürfelte Zahl sowie die gespeicherte vorherige Zahl 6 sind
- ansonsten die Zahl speichern und die Schleife von vorne anfangen

Ich bin nicht sicher, ob
Java:
Zufall.zufaelligenIntWertGenerieren(1, 6)
wirklich funktioniert. Stattdessen könntest du:
Java:
import java.util.Random; //am Anfang des Programs
Random zufall = new Random();
int  w = zufall.nextInt(6) + 1; //wird ein int zwischen 1 und 6 generieren
 
Du must natürlich das Generieren der Zufallszahlen innerhalb der Schleife machen damit du bei jedem Schleifendurchlauf auch neue Werte bekommst. Damit sich die Schleife nur beendet wenn beide Würfel gleich 6 sind brauchst du den logischen ODER Operator ||. Damit kannst du abfragen ob beide Würfel den Wert 6 haben mit

Code:
while(würfel1 != 6 || würfel2 !=6)

Damit läuft die Schleife so lange bis beide Würfel 6 sind. Solltet ihr diesen Operator noch nicht haben oder benutzen dürfen kannst du es auch mit zwei If Abfragen und einem break machen. Das sähe dann so aus:

Code:
while(1==1) // Dies ist erstmal eine Endlosschleife
{
    if(würfel1==6)
    {
        if(würfel2==6)
            break; // Dieses beendet die Schleife.

Benutze nach Möglichkeit keine Umlaute im Quellcode. Das solltest du dir direkt abgewöhnen. Wenn es schon deutsche Variablennamen sein solle, dann bitte wenigstens wuerfel. Noch besser ist es natürlich gleich english zu benutzen. In dem Fall ein cube.

Gruß

Claus
 
Warum eigentlich eine While-Schleife? Warum keine do-while? Die schleife muss ja sowieso mindestens 1x durchlaufen werden.
Code:
int letzteZahl = getZufallszahl();
print(letzteZahl);
do {
    int zahl = getZufallszahl();
    print(zahl);
    boolean zahlenGleich = zahl == letzteZahl;
    if(!zahlenGleich) {
       letzteZahl = zahl;
   }
}while(!zahlenGleich);
 

Neue Themen


Zurück
Oben