Problem Roulettspiel



  • Hallo,

    ich möchte ein Roulettspiel schreiben, habe mir schonmal das wichtigste programmiert aber da klappt nichts ,wie es klappen soll und ich bin einfach überfordert. Ich hoffe das mir jemand helfen kann

    Vielen Dank schonmal hier ist der Quellcode:

    #include <iostream>
    using namespace std;

    class roulett
    {
    public:
    int geld, einsatz, zahl, tipp ;
    void vzahl();
    void vgrade();
    };

    void roulett::vzahl(void)
    {
    cin >> tipp ;
    cin >> einsatz ;
    if( tipp == zahl )
    {
    geld = geld + einsatz * 35 ;
    }
    else
    {
    geld = geld - einsatz ;
    }
    }

    void roulett::vgrade(void)
    {
    cout << "\n1 fuer ungrade zahl, 2 fuer grade\n" ;
    cin >> tipp ;
    cin >> einsatz ;
    for(;zahl<3;zahl-2)
    {
    }
    if( tipp == 1 && zahl == 1 ) geld = geld + einsatz * 2 ;
    if( tipp == 2 && zahl == 2 ) geld = geld + einsatz * 2 ;
    }

    int main()
    {
    int x, n ;
    char wahl ;
    roulett test ;

    test.geld = 50 ;

    for(;;)
    {

    /* Zahl generieren */
    srand((unsigned) time(NULL));
    do
    {
    test.zahl = rand();
    }while(( test.zahl < 0 || test.zahl > 36 ));

    cout << "\nWie oft wollen sie setzen?\n" ;
    cin >> x ;
    cout << "<z> auf Zahl tippen\n<g> auf grade oder ungrade tippen" ;
    cin >> wahl ;

    for(n=0;n>x;n++)
    {
    if( wahl == 'z' || wahl == 'Z' )
    {
    test.vzahl();
    }
    else
    {
    test.vgrade();
    }
    }

    cout << test.geld ;

    }

    return 0;
    }





  • Erstens:
    "geht nicht" ist eine etwas unklare Formulierung 😉

    Zweitens: vgerade()
    Du hast dort eine Endlosschleife drin, weil die Update-Anweisung der Schleife keine Nebeneffekte hat. Außerdem kann man gerade/ungerade wesentlich schneller prüfen:

    if(tipp%2==zahl%2)
      geld+=2*einsatz;
    

    Und drittens ist da ein logischer Fehler drin, daß bei einem Fehltip kein Einsatz abgezogen wird.

    Drittens: main()
    srand() muß nur einmal bei Programmstart aufgerufen werden. Und außerdem solltest du nach jedem Tip des Spielers eine neue Zufallszahl würfeln.
    Und das Auswürfeln geht auch schneller mit:

    test.zahl=rand()%37;
    


  • Danke für die Tipps, ich werds versuchen.


Anmelden zum Antworten