Hangman brauche dringend hilfe



  • Hallo,
    liebe Forum mitglieder, ich bin neu hier und brauche dringend euren rat.
    Wir sollten ein Hang man Programmieren was uns auch gelungen ist nun möchte der Lehrer aber das wir mit Funktionen einbauen, wovon ich sogut wie nichts weis.
    Ich möchte nicht das ihr für mich die komplette Aufgabe macht, es wäre nur nett ein paar Tipps und Hilfen zu bekommen. 🙂 🙂

    #include <iostream>
    #include <conio>
    using namespace std;

    //---------------------------------------------------------------------------

    char spieler_eins[30],spieler_zwei[30],wort[20],buchstabe,raten[20],fehl_buch[7],nochmal;
    int suchlauf,fehler,definiert,anz_buch,richtig,edurch,nv;
    int main(int argc, char* argv[])
    {
    cout<<"Hangman (C) 2007 by 6players"<<endl<<endl;
    cout<<"Spieler eins bitte geben Sie Ihren Namen ein:";
    cin>>spieler_eins;
    cout<<"Spieler zwei bitte geben Sie Ihren Namen ein:";
    cin>>spieler_zwei;

    cout<<endl<<""<<spieler_eins<<" bitte das zu erratene Wort eingeben (Maximal 20 Zeichen)."<<endl;
    cin>>wort; //Eingabe des Wortes, das von Spieler2 erraten werden soll

    //Beginn der Umwandlung des Wortes in Unterstriche und Festlegung der Anzahl der Buchstaben
    for(int i=0;i<=20;i=i+1)
    {
    if(wort[i]==0) //Wenn das Ende des Arrays "wort" erreicht wurde
    {
    anz_buch=i; //Festlegung aller Vorhandenen Buchstaben,
    //damit später überprüft werden kann ob Spieler2 gewinnt
    i=20;
    }
    else //Wenn das Array "wort" noch Zeichen enthält
    {
    if(raten[i]==0) //Verzweigung zum speichern der Unterstriche
    // für alle vorhandenen Buchstaben
    {
    raten[i]='_';
    }
    }
    } //Ende Umwandlung

    for(int i=0;i<=30;i=i+1) //Beginn Hauptprozess
    {
    clrscr(); //Alle sichtbaren Elemente werden gelöscht
    suchlauf=0; //Suchlauf wird auf 0 gesetzt

    cout<<""<<spieler_zwei<<" muss das Wort erraten!"<<endl<<endl;

    for(int ausgabe=0;ausgabe<=20;ausgabe=ausgabe+1) //for-Schleife zum Ausgeben der bisher
    //erratenen Buchstaben und der Unterstriche als Platzhalter
    {
    cout<<""<<raten[ausgabe]<<" ";
    }

    cout<<endl<<endl;

    //Ausgaben der entsprechenden Hangmans:
    if(fehler==1)
    {
    cout<<"------------|"<<endl;
    cout<<"| /"<<endl;
    cout<<"|/"<<endl;
    cout<<"|"<<endl;
    cout<<"|"<<endl;
    cout<<"|"<<endl;
    cout<<"|"<<endl;
    cout<<"|"<<endl;
    cout<<"|"<<endl;
    cout<<"|"<<endl;

    }
    if(fehler==2)
    {
    cout<<"------------"<<endl;
    cout<<"| / |"<<endl;
    cout<<"|/ ---"<<endl;
    cout<<"| |. .|"<<endl;
    cout<<"| | * |"<<endl;
    cout<<"| | v |"<<endl;
    cout<<"| ---"<<endl;
    cout<<"|"<<endl;
    cout<<"|"<<endl;
    cout<<"|"<<endl;
    cout<<"|"<<endl;

    }
    if(fehler==3)
    {

    cout<<"------------"<<endl;
    cout<<"| / |"<<endl;
    cout<<"|/ ---"<<endl;
    cout<<"| |. .|"<<endl;
    cout<<"| | * |"<<endl;
    cout<<"| | v |"<<endl;
    cout<<"| ---"<<endl;
    cout<<"| |"<<endl;
    cout<<"| |"<<endl;
    cout<<"| |"<<endl;
    cout<<"| |"<<endl;
    cout<<"|"<<endl;
    cout<<"|"<<endl;
    cout<<"|"<<endl;
    }
    if(fehler==4)
    {
    cout<<" ------------"<<endl;
    cout<<"| / |"<<endl;
    cout<<"|/ ---"<<endl;
    cout<<"| |. .|"<<endl;
    cout<<"| | * |"<<endl;
    cout<<"| | v |"<<endl;
    cout<<"| ---"<<endl;
    cout<<"| |"<<endl;
    cout<<"| \---|"<<endl;
    cout<<"| |"<<endl;
    cout<<"| |"<<endl;
    cout<<"|"<<endl;
    cout<<"|"<<endl;
    cout<<"|"<<endl;

    }
    if(fehler==5)
    {
    cout<<" ------------"<<endl;
    cout<<"| / |"<<endl;
    cout<<"|/ ---"<<endl;
    cout<<"| |. .|"<<endl;
    cout<<"| | * |"<<endl;
    cout<<"| | - |"<<endl;
    cout<<"| ---"<<endl;
    cout<<"| |"<<endl;
    cout<<"| \---|---/"<<endl;
    cout<<"| |"<<endl;
    cout<<"| |"<<endl;
    cout<<"|"<<endl;
    cout<<"|"<<endl;
    cout<<"|"<<endl;
    }
    if(fehler==6)
    {
    cout<<" ------------"<<endl;
    cout<<"| / |"<<endl;
    cout<<"|/ ---"<<endl;
    cout<<"| |. .|"<<endl;
    cout<<"| | * |"<<endl;
    cout<<"| | o | "<<endl;
    cout<<"| ---"<<endl;
    cout<<"| |"<<endl;
    cout<<"| \---|---/"<<endl;
    cout<<"| |"<<endl;
    cout<<"| |"<<endl;
    cout<<"| / "<<endl;
    cout<<"| / "<<endl;
    cout<<"| / "<<endl;
    cout<<"|"<<endl;
    }
    if(fehler==7)
    {
    cout<<" ------------"<<endl;
    cout<<"| / |"<<endl;
    cout<<"|/ ---"<<endl;
    cout<<"| |. .|"<<endl;
    cout<<"| | * |"<<endl;
    cout<<"| | o | Dying..."<<endl;
    cout<<"| ---"<<endl;
    cout<<"| |"<<endl;
    cout<<"| \---|---/"<<endl;
    cout<<"| |"<<endl;
    cout<<"| |"<<endl;
    cout<<"| / \"<<endl;
    cout<<"| / \"<<endl;
    cout<<"| / \"<<endl;
    cout<<"|"<<endl;
    }
    if(fehler==8)
    {

    cout<<" ------------"<<endl;
    cout<<"| / |"<<endl;
    cout<<"|/ ---"<<endl;
    cout<<"| |x x|"<<endl;
    cout<<"| | * |"<<endl;
    cout<<"| | x | Dead!"<<endl;
    cout<<"| ---"<<endl;
    cout<<"| \"<<endl;
    cout<<"| \---|---/"<<endl;
    cout<<"| |"<<endl;
    cout<<"| |"<<endl;
    cout<<"| / \"<<endl;
    cout<<"| / \"<<endl;
    cout<<"| / \"<<endl;
    cout<<"|"<<endl;
    cout<<" YOU LOOSE "<<endl;

    cout<<"Schade "<<spieler_zwei<<"!"<<endl;
    cout<<""<<spieler_eins<<" hat gewonnen!";
    getch();
    return 0; //Ende des Programms
    }

    cout<<endl;

    for(int fb=0;fb<=8;fb=fb+1) //for-Schleife zur Ausgabe aller
    //falsch geratenen Buchstaben
    {
    cout<<""<<fehl_buch[fb]<<" ";
    }

    cout<<endl<<endl<<endl;

    cin>>buchstabe;
    for(int a=0;a<=19;a=a+1) //Überprüfungen nach Eingabe eines Buchstabens:
    {
    if(buchstabe==wort[a]) //wenn der erratene Buchstabe vorkommt:
    {
    if(buchstabe==raten[a]) //Fall: Schon verwendet
    {
    cout<<"Buchstabe schon verwendet!"<<endl;
    cout<<"Bitte eine Taste druecken um einen anderen";
    cout<<"Buchstaben einzugeben.";
    getch();
    }
    else //Falls noch nicht verwendet
    {
    raten[a]=buchstabe; //Unterstrich wird mit dem
    //entsprechenden Buchstaben überschrieben
    suchlauf=suchlauf-1; //Suchlauf wird -1 gerechnet,
    //damit die Verzweigung zur Aktualisierung der Fehler
    //nicht ausgeführt wird
    richtig=richtig+1; //Anzahl der richtig erratenen
    //Buchstaben wird +1 gerechnet
    }

    if(richtig==anz_buch) //Hat Spieler2 gewonnen?
    {
    cout<<"Herzlichen Glueckwunsch "<<spieler_zwei<<"!"<<endl;
    cout<<"Sie haben gewonnen!";
    getch();
    return 0;
    }
    }
    else //Kommt der geratene Buchstabe nicht vor?
    {
    suchlauf=suchlauf+1; //Suchlauf wird um 1 erhöht
    if(suchlauf==20) //Wenn 20 mal falsch geraten wurde
    {
    fehl_buch[a]=buchstabe; //der Buchstabe wird der Liste aller
    //falsch geratenen Buchstaben hinzugefügt
    fehler=fehler+1; //Anzahl der Fehler werden aktualisiert
    if(fehler==8) //Fehler=8? Falls ja, hat Spieler2 verloren
    {
    cout<<"Schade "<<spieler_zwei<<"!"<<endl;
    cout<<""<<spieler_eins<<" hat gewonnen!"<<endl;
    cout<<"Das Wort wäre "<<wort<<" gewesen!";
    }
    }
    }
    }
    } //Ende Hauptprozess
    return 0; //Programmende



  • Und was sind Deine konkreten Fragen?
    Hilfe zur Selbsthilfe:
    http://tutorial.schornboeck.net/funktionen.htm



  • Hallo

    Nicht zu vergessen sfds.
    Und da du keine Builder-spezifischen Sachen benutzt sondern ein reines Konsolenprogramm shreibst gehört es ins C++ Forum.

    bis bald
    akari



  • Dieser Thread wurde von Moderator/in akari aus dem Forum VCL/CLX (Borland C++ Builder) in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Naja, ganz einfach, du suchst dir Teile des Programmes die quasi für sich alleine Sinn machen, und machst Funktionen draus.

    Was mir als erstes ins Auge springt ist das Zeichnen des "Hangman", das kann man schön als unabhängige Funktion machen. Sieht dann ca. so aus:

    void ZeichneHangman(int fehler); // <-- "Prototyp"
    
    // ... irgendwas ...
    
    void ZeichneHangman(int fehler)
    {
       // <-- Implementierung von "ZeichneHangman" hier
    }
    

    Im der "main" Funktion kannst du dann ZeichneHangman aufrufen wie jede andere Funktion.

    p.S.: der Rest des Programmes ist nach meinen Standards eher fürchterlich, den würde ich persönlich wahrscheinlich grösstenteils re-implementieren. Aber vielleicht findest du selbst noch geeignete Kandidaten (Codestellen) aus denen man Funktionen machen kann 😉



  • jo danke euch für eure Beiträge hab da schon gute ideen gesammelt.

    mfg watts


Anmelden zum Antworten