Verdoppeln beim Roulette

Neuner91

Mitglied
Hallo zusammen,

ich wollte mir gerne mal ein Programm schreiben das mir das Verhalten des Einsatzes beim Verdoppeln im Roulettespiel offen legt. Der nachfolgende Code ist sicherlich total schwachsinnig programmiert aber mein abgebrochenes Informatikstudium ist schon eine Weile her, bin daher für laiensichere Verbesserungen dankbar. Meine Frage ist nun warum bei Gewinn immer nur 100 hinzuaddiert werden, obwohl zuvor eine Verlustserie vorlag? Die Verluste werden korrekt berechnet.

Vielen Dank im Vorraus für eure Unterstützung.

Java:
package Roulette;


public class Roulette {

    public static void main(String[] args) {
        
        
        int Kapital = 10000;
        int Einsatz = 100;
        //int Pott = 0;
        int Verlustserie = 0;
        
    for( int AnzahlSpiele = 0; AnzahlSpiele < 100; AnzahlSpiele++)
    {            
        
    int Roulettekugel = (int) (Math.random()*36);
        
        System.out.println("Kugel " + Roulettekugel);
    
        if(Roulettekugel % 2 != 0 || Roulettekugel == 0){
            Verlustserie++;
        }
        
        else{
            Verlustserie = 0;
        }
        
        System.out.println("Verlustserie " + Verlustserie);
        
        if(Verlustserie == 0){
        
        if(Roulettekugel == 0 || Roulettekugel % 2 != 0){
            Kapital = Kapital - Einsatz;
        }
        
        else{
            Kapital = Kapital - Einsatz;
            Kapital += Einsatz * 2;
        }
        }
        
        if(Verlustserie == 1){
        
            if(Roulettekugel == 0 || Roulettekugel % 2 != 0){
                Kapital = Kapital - Einsatz;
            }
            
            else{
                Kapital = Kapital - Einsatz;
                Kapital += Einsatz *2;
        }
        }
        
        if(Verlustserie == 2){
            
            if(Roulettekugel == 0 || Roulettekugel % 2 != 0){
                Kapital = Kapital - Einsatz*2;
            }
            
            else{
                Kapital = Kapital - Einsatz*2;
                Kapital += Einsatz *4;
        }
        }
        
        if(Verlustserie == 3){
            
            if(Roulettekugel == 0 || Roulettekugel % 2 != 0){
                Kapital = Kapital - Einsatz*4;
            }
            
            else{
                Kapital = Kapital - Einsatz*4;
                Kapital += Einsatz *8;
        }
        }    
        
        if(Verlustserie == 4){
            
            if(Roulettekugel == 0 || Roulettekugel % 2 != 0){
                Kapital = Kapital - Einsatz*8;
            }
            
            else{
                Kapital = Kapital - Einsatz*8;
                Kapital += Einsatz *16;
        }
        }
        
        if(Verlustserie == 5){
            
            if(Roulettekugel == 0 || Roulettekugel % 2 != 0){
                Kapital = Kapital - Einsatz*16;
            }
            
            else{
                Kapital = Kapital - Einsatz*16;
                Kapital += Einsatz *32;
        }
        }
        
        if(Verlustserie == 6){
            
            if(Roulettekugel == 0 || Roulettekugel % 2 != 0){
                Kapital = Kapital - Einsatz*32;
            }
            
            else{
                Kapital = Kapital - Einsatz*32;
                Kapital += Einsatz *64;
        }
        }
        
        if(Verlustserie == 7){
            
            if(Roulettekugel == 0 || Roulettekugel % 2 != 0){
                Kapital = Kapital - Einsatz*64;
            }
            
            else{
                Kapital = Kapital - Einsatz*64;
                Kapital += Einsatz *128;
        }
        }
        
        if(Verlustserie == 8){
            
            if(Roulettekugel == 0 || Roulettekugel % 2 != 0){
                Kapital = Kapital - Einsatz*100;
            }
            
            else{
                Kapital = Kapital - Einsatz*100;
                Kapital += Einsatz *200;
        }
        }
        
        if(Verlustserie == 9){
            
    
            if(Roulettekugel == 0 || Roulettekugel % 2 != 0){
                Kapital = Kapital - Einsatz*100;
            }
            
            else{
                Kapital = Kapital - Einsatz*100;
                Kapital += Einsatz *200;
        }
        }
        
        System.out.println("Kapital " + Kapital);
    }
    
    
}
}
 
Die Lösung ist relativ einfach. Ganz am Anfang der Schleife wird direkt geprüft, ob die Kugel gerade, ungerade oder 0 ist. Ist sie ungerade oder 0, wird die Verlustserie erhöht und das ganze wird ausgewertet. Trifft dies nicht zu, wird die Verlustserie auf 0 gesetzt - bevor der Gewinn ausgewertet wird. Das heist, wenn die Kugel gerade ist wird der Gewinn immer so ausgewertet, als wäre die Verlustserie 0. Lösung: DIe Abfrage ob die Kugel gerade, ungerade oder 0 ist einfach nach der Auswertung setzten dann klappts 😛
 
was dir fehlt ist die Möglichkeit einen tippen aubzugeben, gegen den du deine kugel vergleichst.

tipp-Möglichkeiten

dann kannst du es einfacher machen.
Code:
kapital -=einsatz;
gewinn = ( ball ==tip) ? einsatz *auszahlungsquote : 0;
if( gewinn ==0){
 verlustserie++;
else{
 verlustserie ==0;
}

dann kannst du über ein switch( verlustserie) case deine if's zusammenpacken

EDIT:
variablennamen schreibt man klein, Klassennamen groß
 
Zuletzt bearbeitet:
Super, vielen Dank hat geklappt. Macht ja auch Sinn das man die Verlustserie erst zum Schluss einer Runde berechnet, sie ist ja erst für die darauffolgende Runde relevant. Die Verlustserien als cases zu implementieren werde ich mal versuchen, sollte auf jedenfall den Code komprimieren auch wenn ich nach wie vor jede Verlustserie einzeln auflisten muss.
 
sonst kannst du dir die verlustserie auch über eine formel berechnen lassen gewinn ist immer 2^x

des weiteren kannst du auch alle abfragen verknüpfen über if{ }else if{}
 
Zuletzt bearbeitet:
Habe die ganzen Durchläufe jetzt schön vereinfachen können durch Potenzieren mit der Verlustserie.

Leider sind ein paar Logikfehler ersichtlich, z.B. in der 1. Verlustrunde wird kein einsatz vom kapital substrahiert, in der 2. Verlustrunde nur 100 anstelle von 200, danach sieht es stimmiger aus.

Wenn ich mir in den Algorithmus Zahlen denke komme ich auf korrekte Beträge...

Java:
package Roulette;

package Roulette;

public class test {

    public static void main(String[] args) {
        
        
        int kapital = 10000;   // Maximaler Einsatz soll 10000 betragen
        int einsatz = 100;     // Minimaler Einsatz 100
        int verlustserie = 0;
        
    for( int anzahlspiele = 0; anzahlspiele < 1000 && kapital > 0; anzahlspiele++)
    {            
        
    int roulettekugel = (int) (Math.random()*36);
        
        System.out.print("Spiel " +anzahlspiele + "  ");
        System.out.print("Kugel " + roulettekugel + "  ");
            
        if(roulettekugel == 0 || roulettekugel % 2 != 0){
                
                if(kapital < einsatz * Math.pow(verlustserie, 2)){
                    kapital = 0;
                }
                
                else
                kapital = (int) (kapital - einsatz * Math.pow(verlustserie, 2));
            }
            
            else{
                
                if(kapital < einsatz * Math.pow(verlustserie, 2)){
                    kapital = (int) (kapital * Math.pow(verlustserie, 2));
                }
                
                else
                kapital = (int) (kapital - einsatz * Math.pow(verlustserie, 2));
                kapital += einsatz * Math.pow(verlustserie, 2) *2;
        }
        
        if(roulettekugel % 2 != 0 || roulettekugel == 0){
            verlustserie++;
        }
        
        else{
            verlustserie = 0;
        }
        
        System.out.print("Verlustserie " + verlustserie + "  ");
        
        System.out.println("Kapital " + kapital + "  ");
    }
    
    
}

}
 

Zurück
Oben