Code Frage- (Kartenspiel/Zufallswerte)



  • Mahlzeit 🙂 ,
    ich soll einen Auszug aus einem Kartenspiel programmieren. Und zwar wird zuerst eine Zahl gewürfelt, dann erfolgt die Frage ob der Spieler eine Karte ziehen will. Diese Karte wird auch mit der Zufallsfunktion gewälhlt und dann erfolgt wieder eine Abfrage ob der Spieler weiterspielen möchte.

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    main()
    {     
          int wurfl,karte,a,b,fort=0,tex;
    
          do
          {
            wurfl=rand()%6+1; /*Bereich von 1-6*/
    
            printf(" Spieler A:\n Moechten sie eine Karte ziehen Ja=1, Nein=0\n");
            scanf("%d",&karte);
            printf("\n");
    
            if(karte==1)
            {
              tex=rand()%5+1; /*Bereich von 1-4*/
    
              switch (tex)
              {
                 case 1: printf("5 Felder weiter!\n");  break;
                 case 2: printf("2 Felder weiter!\n");  break;
                 case 3: printf("2 Felder zurueck!\n"); break;
                 case 4: a=rand()%999+1;
                         b=rand()%999+1;
                         printf("Aufgabe: %d+%d= ?\n",a,b); 
                         break;
                 default : break;
              }
            }
            else
            break;
    
            printf("Soll der Spielverlauf fortgesetzt werden? Ja=1, Nein=0\n");
            scanf("%d",&fort);
            printf("\n\n");
    
          }while(fort!=0);       
    
          system ("pause");
    }
    

    Soweit funktioniert das auch gut, nur eine Bedingung bekomme ich nicht gestellt.
    Und zwar heisst es im Augabentext:

    10% der Karten besagen "5 Felder weiter"
    10% der Karten besagen "2 Felder zurück"
    10% der Karten besagen "2 Felder weiter"
    70% der Karten besagen "Rechenaufgabe lösen"

    Mir fällt leider nichts ein, wie ich diesen Teil mit der höheren Wahrscheinlichkeit für eine Rechenaufgabe programmieren kann.

    Irgendwelche Vorschläge?

    Gruss Defyne



  • Mach, dass der Zufallsgenerator Zahlen von 0-9 ausgibt, und schiebe den Fall 4 in das default des switch-case-Dingens. Wäre mal eine Möglichkeit.

    Und schau dir mal srand() an. Das fehlt irgenwie noch 😉



  • TactX schrieb:

    Mach, dass der Zufallsgenerator Zahlen von 0-9 ausgibt, und schiebe den Fall 4 in das default des switch-case-Dingens. Wäre mal eine Möglichkeit.

    Und schau dir mal srand() an. Das fehlt irgenwie noch 😉

    Du meinst sicher 1-10?! Das sollte funktionieren...werd ich gleich mal testen-thx.

    Wofür brauch ich denn noch srand()?

    gruss Defyne



  • Defyne schrieb:

    TactX schrieb:

    Mach, dass der Zufallsgenerator Zahlen von 0-9 ausgibt, und schiebe den Fall 4 in das default des switch-case-Dingens. Wäre mal eine Möglichkeit.

    Und schau dir mal srand() an. Das fehlt irgenwie noch 😉

    Du meinst sicher 1-10?! Das sollte funktionieren...werd ich gleich mal testen-thx.

    Ich meinte schon 0-9. Da muss man halt die cases anpassen. Ist aber eigentlich total egal, es geht um das Konzept.

    Defyne schrieb:

    Wofür brauch ich denn noch srand()?

    Das entnimmt man der Hilfe/FAQ 😉



  • Das Konzept stimmt aufjedenfall. srand() schafft also noch mehr Zufall, werde ich mal im Hinterkopf behalten. In diesem Fall war es aber nicht gefordert.

    Danke für die schnelle Hilfe.


Anmelden zum Antworten