4 gewinnt



  • danke für deine fixen antworten!

    ich pröble dann noch etwas rum...ewas noch...

    es wurde nie konkret gesagt WO genau der knakpunkt ist...

    wär nett wenn das ncoh kommen könnte



  • Bei deinem Code gibt es 2 Probleme.

    1. die Schleife wird nei wiederholt, d.h. du gibts bloß eine Zahl ein
    2. das hinzufügen der neuen "X"e funktioniert bei dir nicht, so wie du es gewünscht hast

    Beides hast du in meinem Code, den ich überischtilcher finde.

    Du kannst auch aus beiden das Wichtigste für dich herausholen.

    Z.B. ist die neue Feldgröße und das Hinzufügen( also die for-Schleife mit dem Checken) sehr wichtig für dich, damit es richtig eingetragen wird und später angezeigt wird (daher wird print() auch zu ändern sein, oder bei dir ausgabe())
    Ich verwende halt lieber englische Bezeichnungen. 🙂



  • HALLO ich bin wieder da!

    nun habe ich den code soweit bearbeitet das ich weiter machen kann...
    wurde auch zeit denn morgen muss er fertig werden.

    nun denn gleich zum eingemachten:

    while (true)
       {
          while(true) //Eingabe, Prüfung und Ausgabe schleife
          {
             int wahl = eingabe();
             if(pruefen(wahl))       
             {  
                hinzufuegen(wahl, fach);
                break;
             }       
          }   
          ausgabe(fach); 
          *PLATZHLTER1"
       }
    

    die ganze schleife wurde nochmals in eine weitere gepackt, damit ich das spiel später leicht verlassen kann (zu diesem zeitpunkt egal)

    was ich nun brauche ist eine funktion die den spieler wechselt.
    bei "PLATZHALTER1* soll jedesmal einen wert verändert werden, damit die funktion merkt welcher spieler dran ist.

    zb könnte man den "PLATZHALTER1* von 2an nach oben zählen lassen und die funtion prüft ob der wert durch 2 teilbar (gerade ungerade halt)

    void hinzufuegen(int wahl, char fach[5][6]) 
    {
       for(int i = 5; i >= 0; --i) 
       {
          if(fach[i][wahl - 1] == ' ') 
          {
             fach[i][wahl - 1] = 'X';
             break;
          }
       }
    }
    

    hier soll die funktion dann bei 'X' aufgerufen werden.

    was ich brauche ist nicht die vorgekaute funktuion, aber die lösung mit dem wert "platzhlter1* und wie ich prüfe ob dieser gerade oder ungerade ist.

    natürlich bin ich über andere vorschläge glücklich und wenn sie einfacher durchzuführen sind ists um so besser

    greez



  • DerDa schrieb:

    was ich brauche ist nicht die vorgekaute funktuion, aber die lösung mit dem wert "platzhlter1* und wie ich prüfe ob dieser gerade oder ungerade ist.

    Prüfen, ob es eine gerade oder ungerade Zahl ist kannst du mit dem Modula.
    Beispiel:

    if(8 % 2 == 0)
        std::cout << "gerade" << std::endl;
    else
        std::cout << "ungerade" << std::endl;
    


  • nun habe ich folgende fehler meldung:

    [linker error] undefined reference to `eingabe()'
    
    char xo = 'X';
    void spieler(int (zahl), char *xo);
    

    meine neue variable und die anmeldung der funktion

    spieler(zahl, &xo);

    so rufe ich die funktion auf

    void hinzufuegen(int wahl, char fach[5][6]) 
    {
       for(int i = 5; i >= 0; --i) 
       {
          if(fach[i][wahl - 1] == ' ') 
          {
             fach[i][wahl - 1] = xo;
             break;
          }
       }
    }
    

    so soll das x oder das o ausgegeben werden gut möglich das der feler hier is)

    void spieler(int zahl, char *xo)
    {
       if(zahl % 2 == 0)
       {
          *xo = 'X';
       }   
       else
       {
          *xo = 'O';
       }   
    }
    

    die neue funktion

    mehr worte brauchts glaub ich nicht.



    1. In deiner Funktion würde ich ansatt Zeiger, Referenzen nehmen.
    2. warum der Linkererror kommt, weiß ich nicht. Aus deinem geposteten Code kann man dies nicht erahnen
    3. in hinzufuegen() ist oe unbekannt, du musst es als 3. Argument übergeben
    4. vielleicht eher so lösen:
    // in hinzufuegen()
    // ..
    fach[i][wahl - 1] = choosePlayer(count);
    // ..
    // erhöhen irgendwo, wo es passt
    ++count;
    // ..
    // choosePlayer() dann so implementieren:
    char choosePlayer(int count) {
        return count % 2 == 0 ? 'X' : 'O'; // alles in einer Zeile zurückgeben
    }
    


  • fach[i][wahl - 1] = choosePlayer(count);
    

    so hab ichs auch est proiert ging dann aber mit der selben meldung nicht...
    mal schaun obs so geht



  • 2 fehler

    void hinzufuegen(int wahl, char fach[5][6]) 
    {
       for(int i = 5; i >= 0; --i) 
       {
          if(fach[i][wahl - 1] == ' ') 
          {
             [b]fach[i][wahl - 1] = spieler(zahl);[/b]
             break;
          }
       }
    }
    

    einmal hier

    void spieler(int zahl)
    {
       [b]return zahl % 2 == 0 ? 'X' : 'O';[/b]
    }
    

    und einmal hier



  • Natürlich musst du die Funktionsnamen noch anpassen. Ich dachte, das wäre klar. 🙄 Wie es scheint, läuft das nun auch. 🕶



  • sind doch angezeigt. wo lieg das problem?

    nmen sind so wie sei sein sollten...denke ich



  • DerDa schrieb:

    sind doch angezeigt. wo lieg das problem?

    nmen sind so wie sei sein sollten...denke ich

    CHAR^^ ich trottel is klar muss ne char funktion sein

    aber wenn ich nun in beiden orten von void auch char wechsle gehts nciht



  • gib dir keine mühe...

    ich bin zu dumm^^

    hab der funktion eingbe ncoh int zahl mitgegeben.
    nun funktionierts.

    DANKE DANKE DANKE

    weiss deine mühe echt zu schätzen.

    dass solte bis morgen mal reichen (vorstellungsgespräch)

    ich verde später noch eine weitere prüfungn einbauen damit das programm merkt wenn einer gewonnen htt und die ausgiebt...

    wär toll wenn du da auch mal was zu sagen würdest..



  • DerDa schrieb:

    dass solte bis morgen mal reichen (vorstellungsgespräch)

    Willst du das "Spiel" zu einem Vorstellungsgespräch etwa mitnehmen??

    ich verde später noch eine weitere prüfungn einbauen damit das programm merkt wenn einer gewonnen htt und die ausgiebt...

    wär toll wenn du da auch mal was zu sagen würdest..

    Du musst das halt checken lassen, mathematisch. Ne Suchmaschine könnt dir da helfen, du schaust anderen Sourcecode an oder du versuchst es on your own.


Anmelden zum Antworten