Announcement

Collapse
No announcement yet.

Schere Stein Papier

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Schere Stein Papier

    Habe ein kleine problem und zwar mit den "Zufall".
    Irgendwie gibt er nur Schere oder Stein aus hoffe ihr habt eine Lösung mfg.

    Hier der Code:
    #include <vcl.h>
    #pragma hdrstop
    #include <string.h>
    #include <iostream.h>
    //---------------------------------------------------------------------------
    #pragma argsused
    void PC(string *PC)
    {
    int i;
    randomize();
    for (int x = 0; x < 1; x++)
    {
    i = rand() % 2+1;
    if (i == 1)
    {*PC = "Schere";}
    if (i == 2)
    {*PC = "Stein";}
    if (i == 3)
    {*PC == "Papier";}
    }
    //return (PC);
    }
    void spiel(string user, string pc)
    {
    if(user == "Schere" && pc =="Schere")
    {cout<<"Keiner Gewinnt"<<endl;}

    if(user == "Schere" && pc == "Papier")
    {cout<<"Gewonnen !!!"<<endl;}

    if(user == "Schere" && pc == "Stein")
    {cout<<"Verloren !!!"<<endl;}

    if(user == "Papier" && pc == "Papier")
    {cout<<"Keiner Gewinnt !!!"<<endl;}

    if(user == "Papier" && pc == "Schere")
    {cout<<"Verloren !!!"<<endl;}

    if(user == "Papier" && pc == "Stein")
    {cout<<"Gewonnen !!!"<<endl;}

    if(user == "Stein" && pc == "Schere")
    {cout<<"Gewonnen !!!"<<endl;}

    if(user == "Stein" && pc == "Papier")
    {cout<<"Verloren !!!"<<endl;}
    }
    int main(int argc, char* argv[])
    {
    char w;
    do
    {
    cout<<"Schere, Stein, Papier"<<endl;
    cout<<"====================="<<endl;
    cout<<endl;
    cout<<"Ihre Wahl: ";
    string Wahl,Com;

    cin>>Wahl;
    PC(&Com);
    cout<<" Computer: "<<Com<<endl<<endl;
    spiel(Wahl,Com);

    cout<<"nochmal j/n: ";
    cin>>w;
    system("CLS");
    }while(w != 'n');

    cout<<endl
    system("Pause");
    return 0;
    }

  • #2
    Nun als erstes fällt auf:

    1.
    Die Schleife for (int x = 0; x < 1; x++) wozu??

    2.
    Wenn du nun schon die VCL einbindest warum arbeitest du dann mit der Klasse string der STL und nicht mit der Klasse String (Großschreibung beachten) der VCL?

    3.
    i = rand() % 3+1;
    ist die Antwort zu deiner Frage

    EDIT

    Das was die Klasse String der VCL alles kann findest du in der Hilfe unter AnsiString. Dieser Name kann als Synonym benutzt werden
    Christian

    Comment


    • #3
      nja die schleife weil:
      komischer weise hat es ohne die die schleife immer nur stein ausgegeben !!!
      daher hab ichs so ma probiert...
      ich weis das sie im prinzip schwachsinnig is aber danke mfg. Manu

      Comment


      • #4
        ok hab das jeze mal auf %3+1 umgeändert aber irgendwie wenn es ne 3 wird gibt er nix aus ?!? versteh ich irg wie ned wirklich

        Comment


        • #5
          Tja, dazu musst du nochmal nachlesen was

          randomize();

          bewirkt und wann es wo einzusetzen ist.

          Es bewirkt die Intialisierung des Zufallsgenerators.

          Das ist einmal zum Programmstart zu machen und nicht jedesmal in derm Unterprogramm. Sonst bekommst du immer die gleiche Reihenfolge vom Zufallswerten
          Christian

          Comment


          • #6
            ok fehler gefunde hatte "==" statt "="

            Comment


            • #7
              so jeze funzt es wies funzen soll

              Comment


              • #8
                Beschreibung
                Randomize initialisiert den integrierten Zufallszahlengenerator mit einem zufälligen Wert (der aus der Systemzeit abgeleitet wird). Der Zufallszahlengenerator sollte initialisiert werden, indem die Prozedur Randomize aufgerufen oder der Variablen RandSeed ein Wert zugewiesen wird.

                Kombinieren Sie in einer Schleife nicht den Aufruf von Randomize mit Aufrufen der Funktion Random . Normalerweise wird Randomize vor den Aufrufen von Random nur einmal aufgerufen.


                so jeze funzt es wies funzen soll
                Du solltest dringend am Programmdesign arbeiten....
                Christian

                Comment


                • #9
                  meinst du mit design den code ??? wenn ja im builder sieht das anders aus als hier.
                  da is das besser eingerückt und so...außerdem war das programm nur zum zeitvertreib so auf die schnelle
                  ach ja und danke für die antworten und erklärungen
                  mfg

                  Comment


                  • #10
                    Ja, den Code, aber nicht die Formatierung, sondern die Programmierung.....
                    Christian

                    Comment


                    • #11
                      ???? beispielsweise.... nja also ich habs zum großteil so beigebracht bekommen was wäre denn da designmäßig falsch programmiert

                      Comment


                      • #12
                        Wie gesagt:

                        Schleife
                        Randomize
                        Stringklasse
                        Die if-Abfragen sind katastrophal (aufteilen und else benutzen)
                        Parameterübergabe
                        Wozu ein Unterprogramm, wenn der Programmteil nur 1x aufgrufen wird?
                        Nutze eine TSTringListe zur Verwaltung der Namen Schere, Stein, Papier
                        Wenn du dich für die VCL entschieden hast, nutze diese und mixe nicht Standard C/C++ und STL mit rein
                        .....

                        Sicherlich ist manches Ansichtsache, aber einiges könnte verbessert werden.

                        Vieleicht auch erst in deinem nächsten Programm......
                        Christian

                        Comment


                        • #13
                          Schleife seh ich ein
                          aber randomize brauch ich doch beim zufall immer
                          unterprogramme habe ich für mich zu übersicht genomm
                          TStringListe kenn ich ned in ner konsole

                          wäre cool wenn immer ma bsp. dabei sind weil das so ein nicht wirklich viel sagt mit bsp könnte man das besser nachvollziehn und ich bin ned grad so der programmier pro mach nur a fachabi als TA und da tun wir c++ nur relativ grob behandeln.


                          mfg.

                          Comment


                          • #14
                            aber randomize brauch ich doch beim zufall immer
                            ???Warum liest du dazu nicht Beitrag 8???

                            TStringListe kenn ich ned in ner konsole
                            Das hat nichts mit Konsole zu tun, wenn du die VCL einbindest, dann kannst du das nutzen

                            wäre cool wenn immer ma bsp. dabei sind
                            Woher sollte ich Beispiele nehmen?? Die sind ab 9:00 ausgegangen...

                            Des Weiteren habe ich persönlich mich vom C++Builder so langsam verabschiedet, da er teuer ist und einfach - hinsichtlich der IDE und des Editors - nich tmehr auf der Höhe der Zeit ist. Seit Versionen funktioniert das Refactoring nicht, aber 500 EUR für ein Update was kaum was bringt. Nutze jetzt andere Programmierumgebung
                            Christian

                            Comment


                            • #15
                              is ok schön abend noch mfg.

                              aber randomize startet doch quasi den "zufallsgenerator" daher brauch ichs ja immer.
                              Ich kann das quasi zwischen rand un random wählen.
                              diese kritik kann ich ned so ganz nachvollziehn

                              trzozdem danke

                              aso mit den einbinden...quasi ne abgeleitete klasse oder was....bzw wie kann ich das anners einbinden =)
                              Zuletzt editiert von Christian Marquardt; 10.04.2009, 21:51. Reason: Beiträge zusammengeführt

                              Comment

                              Working...
                              X