programmidee



  • hallo líebe leute...

    ich soll ein programm schreiben:
    Schreiben Sie ein Programm, das das folgende Spiel realisiert:
    Jede Runde wird eine zufällige Zahl zwischen 1 und 10 gezogen. Der Spieler kann nun entscheiden, ob er auf eine niedrigere bzw. höhere Zahl in der nächsten Runde tippt, oder aufhört. Tritt nicht der vom Spieler geratene Fall ein, hat er verloren.Der Spieler soll dabei seinen nächsten Zug durch Eingabe von 'h' für eine höhere Zahl, 'n' für eine niedrigere
    und 'a' zum Aufhören wählen. In jeder Runde soll außerdem die Anzahl der bisher gewonnenen
    Runden ausgegeben werden. Hat der Spieler verloren, oder das Spiel beendet, soll eine entsprechende
    Meldung ausgegeben und das Programm beendet werden.

    das sit das was mit daszu eingefallen sit aber wie man sieht fehlt nooch einiges

    #include <iostream>
    using namespace std;
    
    int main()
    {
            int a,b,c;
            a=5;b=4;c=a+b;
    
            srand( (unsigned)time( NULL ) );
            int random = rand()%11;
            cout<<"startwert:"<< random<<endl;
            cout << " '1' für höher"<<endl<<" '2' für niedriger"<<endl;
            cin>> tip;
            int b=rand()%11;
    //      do
    //      {
            switch(tip)
            {
                    case 1:
                    if (b>random){cout<<"Gewonne"<<endl;}
                    else{cout<<"verloren"<<endl;}
                    break;
    
                    case 2:
                    if (b<random){cout<<"Gewonne"<<endl;}
                    else{cout<<"verloren"<<endl;}
                    break;
            }
    //      }
    //      while{
    

    mein problem ist nun ich weis nicht wie ich die schleife da einbauen soll....so das er imer wenn richig getippt das soeil weiter laufen lässt.

    udn zweitens will ich garnicht das zwei zufallszahlen gezogen werden sondern nur eine aber mit fällt nicht ein wie ich es vermeiden soll...

    naja vielleicht hat ja jemand von euch ein kleine rat...

    danke mon3d



  • Is doch gar nicht so schwer:

    Ich würde mir eine bool-Variable erstellen, die angibt, ob der Spieler grad gewonnen hat oder verloren hat. Und dann am Ende der Schleife(while) würde ich sie solange wiederholen, bis der Spieler verloren hat.

    Das wärs dann erstmal fürn Anfang. Ich schreib dir aber kein fertiges Programm, das musste schon alleine machen



    • wenn du srand und time benutzt, musst du auch stdlib.h und time.h einbinden
    • tip ist nicht deklariert
    • a und c werden nicht gebraucht
    • b wird zweimal deklariert
    • in der Aufgabenstellung steht, dass man h, n oder a eingeben soll, also verwende nicht 1 und 2

    [EDIT]Maxi2 war schneller[/EDIT]



  • wenn du schon die schöne Schleife hinschreibst, dann auch richtig... Das Programm soll beendet werden, wenn der Speielr verliert



  • Maxi2 schrieb:

    wenn du schon die schöne Schleife hinschreibst, dann auch richtig... Das Programm soll beendet werden, wenn der Speielr verliert

    Ich hab den Code ja nach einer Minute wieder zurückgezogen



  • Ups, sorry, tut mir leid. Wollt dich nicht beleidigen 🙂

    Gruß, Maxi



  • Nix passiert 😉



  • int main(void)
    {
    
            int tip;
            srand( (unsigned)time( NULL ) );
            int random = rand()%11;
            cout<<"startwert:"<< random<<endl;
            cout << " '1' für höher"<<endl<<" '2' für niedriger"<<endl;
            cin>> tip;
            int b=rand()%11;
            switch(tip)
            {
                    case 1:
                    do
                    {
                    if (b>random){cout<<"Gewonne"<<endl;}
                    else{cout<<"verloren"<<endl;}
                    }
                    while (b<random);
                    break;
    
                    case 2:
                    if (b<random){cout<<"Gewonne"<<endl;}
                    else{cout<<"verloren"<<endl;}
                    break;
            }
    

    so dan ist der code...hab vorhinden falschen gepostet ...schleife sit ne gute idee aber wcih weis nciht wi eich dei schleife machen sol so das es den bool über prüft....



  • so dan ist der code...hab vorhinden falschen gepostet ...schleife sit ne gute idee aber wcih weis nciht wi eich dei schleife machen sol so das es den bool über prüft....

    Wenn du
    So, das ist der Code... hab vorhin den Falschen gepostet... Schleife ist eine gute Idee, aber ich weiß nicht wie ich die Schleife machen soll, so dass es den bool überprüft
    gemeint hast, dann mach es doch einfach so:

    bool gewonnen=true;
    while(gewonnen)
    {
    //...
    //...
        else gewonnen=false;
    //...
    //...
    }
    cout << "Verloren" << endl;
    


  • DANKE!!!



  • Dein tip war gut aber ich bin wol einfach zu blöd in ordentlich umzusetzten

    danke trotzdem



  • srand( (unsigned)time( NULL ) );

    formal (C++):

    srand( static_cast<unsigned>(time(0)) );
    

    int random = rand()%11;
    Modulo liefert Rest 0 ... 10. Du wolltest aber doch Zahlen von 1 und 10, wenn ich nicht irre.



  • die zahlen generiert er ja aber den rest macht er netr..ich grml hie rnur vor mich hin



  • Noch nicht ausprobiert!!!
    Ist zwar nicht die optimale Lösung, aber sehr nah an deinem vorherigen Code.

    #include <iostream>
    #include <stdlib.h>
    #include <time.h>
    using namespace std;
    
    int main() 
    { 
        char tip; 
        srand( static_cast<unsigned>(time(0)) );
        int random = rand()%11; 
        int b, punkte=0;
        bool gewonnen=true;
        cout << "Startwert: " << random << endl; 
        while(gewonnen)
        {
        cout << "Ihr aktueller Punktestand: " << punkte << endl;
        cout << " \'h\' für höher\n\'n\' für niedriger\n\'a\' für aufhören" << endl; 
            cin >> tip; 
            b=rand()%11; 
            switch(tip) 
            { 
                case 'h': 
                if(b>random) cout << "Sie haben gewonnen" << endl;
                else gewonnen=false;
                break; 
    
                case 'n': 
                if (b<random) cout << "Sie haben gewonnen" << endl;
                else gewonnen=false;
                break; 
    
                default:
                gewonnen=false; break;
            }
            punkte+=1;
        }
        cout << "Sie haben verloren" << endl;
        cout << "Ihr Punktestand: " << punkte-1 << endl;
    
        return 0;
    }
    


  • btw:
    Die C++ Header heißen <cstdlib> und <ctime> und nicht <stdlib.h> und <time.h>.



  • DANKE ICH HAB DAS PORBLEM GELÖST BEKOMMEN )))))
    DANKE EURE HILFE

    seit toll )))


Anmelden zum Antworten