Zahlen Raten von 1-99 per zufallsgenerator



  • Hallo.. Kann mir vllt jemand weiter helfen.. Und zwar muss ich ein Spiel programmieren mit diesen Anforderungen:

    Projekt „Zahlen raten“
    • Der Computer „denkt“ sich eine Zahl zwischen 1 und 99, der Anwender versucht, diese Zahl mit möglichst wenigen Versuchen zu erraten. Dabei hilft der Computer durch den Hinweis „zu hoch“, „zu tief“ bzw. „richtig geraten“.
    Für Fortgeschrittene:
    Die zu ratende Zahl wird durch einen Zufallsgenerator bestimmt, ist also bei jeder Spielrunde eine andere.
    Der Computer hilft durch weitere Kommentare („Nicht diese aber immerhin auch eine gerade Zahl“, „Zumindest die Quersumme ist richtig“, „Nur ganz knapp daneben“, ....).
    Alle Spielergebnisse werden in eine Datei geschrieben (jeweils Name des Spielers + Anzahl der benötigten Züge). Ist zwar kein echter „Highscore“ aber besser als nichts
    -----------------------------------------------------------------------------
    Das habe ich bis jetzt gemacht..komm aber nicht weiter..

    # include <stdio.h>
    # include <stdlib.h>
    # include <time.h>

    # define NEIN 0
    # define JA 1

    int main (void)
    {
    int wert_raten = -1;
    int zahl;
    int anz_der_versuche;
    int fertig = NEIN;

    printf("\n\nZufallszahl wird ausgewählt\n"); // Zufallsgenerator mit der akt. Zeit initialisieren

    srand( (unsigned) time( NULL ) );
    zahl = rand();
    anz_der_versuche = 0;

    while ( fertig == NEIN )
    {
    printf("\nWählen Sie eine Zahl zwischen 0 und 99 ", RAND_MAX);
    scanf( "%d", &wert_raten ); // Zahl einlesen
    anz_der_versuche++;

    if (zahl == wert_raten)
    {
    fertig = JA;
    }

    else

    if (zahl < wert_raten)
    {
    printf("\nIhre Zahl war zu hoch!");
    }
    else
    {
    printf("\nIhre Zahl war zu niedrig!");
    }
    }
    printf("\n\nSuper! Sie haben nach %d Versuchen richtig geraten!",anz_der_versuche);
    printf("\n\nDie Zahl lautet %d\n\n", zahl);

    return 0;

    system ("PAUSE");
    }



  • Bitte benutze das naechste Mal Code-Tags, es ist sonst sehr schwierig deinen Code zu lesen.

    Das Problem ist, dass du mit

    zahl = rand();
    

    keine Zahl zwischen 1 und 99 bekommst, sondern einen Wert zwischen 0 und RAND_MAX zurueckbekommst.

    Um eine Zahl zwischen 1 und 99 zu generieren kannst du folgendes verwenden:

    zahl = rand() % 99 + 1;
    

    Dabei ist das % der Modulo-Operator.



  • 🙂 ohh danke das hat mir sehr geholfen.. kannst du mir vllt auch sagen wie ich die spielernamen mit der jeweiligen anzahl an versuchen in eine datei gespeichert werden kann um sie später wieder aufzurufen?



  • char *spielername = "Spieler1";
    int versuche = 42;
    FILE *f = fopen("dateiname.txt", "w");
    fprintf(f, "%s hat %d versuche gebraucht\n", spielername, versuche); //funktioniert genauso wie printf
    fclose(f);
    


  • icarus2 schrieb:

    Bitte benutze das naechste Mal Code-Tags, es ist sonst sehr schwierig deinen Code zu lesen.

    Das Problem ist, dass du mit

    zahl = rand();
    

    keine Zahl zwischen 1 und 99 bekommst, sondern einen Wert zwischen 0 und RAND_MAX zurueckbekommst.

    Um eine Zahl zwischen 1 und 99 zu generieren kannst du folgendes verwenden:

    zahl = rand() % 99 + 1;
    

    Dabei ist das % der Modulo-Operator.

    Es geht darum zufällig eine Ganzzahl im Intervall (1,99)(1, 99) zu erzeugen.
    Streng genommen müsste die Zuweisung dann so aussehen:

    zahl = rand() % 97 + 2;
    

    :xmas1: :xmas2:



  • Er moechte eine Zahl "zwischen 1 und 99". Dann ist nicht so ganz klar, ob er eine Ganzahl im Intervall (1,99) oder [1,99] moechte.



  • icarus2 schrieb:

    Er moechte eine Zahl "zwischen 1 und 99". Dann ist nicht so ganz klar, ob er eine Ganzahl im Intervall (1,99) oder [1,99] moechte.

    Jup, stimmt.


Anmelden zum Antworten