Wie soll es weiter gehen .... ?



  • Danke. Ihr seid ja alle voll nett ... wenn ich ein guten nick gefunden habe, werde ich mich mal anmelden 🙂

    Also in der schule habe ich mir mal paar gedanken gemacht und ich weiß schon mehr oder weniger wie ich das amchen:

    So soll das Feld aussehen:
    Die / sollen eigentlich solche grade linien sein (Strg + Alt + < >) aber unter Linux kann ich die nicht da darstellen 😞 )

    A / B / C /
    +---+---+---+
    1 / / / / Felder 1,2,3
    +---+---+---+
    2 / / / / Felder 4,5,6
    +---+---+---+
    3 / / / / Felder 7,8,9
    +---+---+---+

    so, jedes Feld soll jetzt eine Variable bekommen (unsigned float): A1, A2, A3, B1, B2, B3, C1, C2, C3, ... oder auch einfach nur Feld[8] oder Feld[2][2], aber ich werde mal ersteres nehmen.

    So ein code habe ich auch schon (ich wette ihr werdet grinsen, aber das ist auch mein "erst programmierter code" ... also seid rücksichtsvoll 😃 - is ausserdem ein "low-Level code):

    [cpp]
    #include <stdio.h>

    zugabfrage(extern char nzug) {
    ..............
    }
    int setztezug(extern char nzug) {

    ...........

    printf(" A / B / C /");
    printf(" +----+----+----+");
    printf(" 1 / %f / %f / %f /",A1,B1,C1);
    printf(" +----+----+----+");
    printf(" 2 / %f / %f / %f /",A2,B2,C2);
    printf(" +----+----+----+");
    printf(" 3 / %f / %f / %f /",A3,B3,C3);
    printf(" +----+----+----+");

    ................
    }

    int KI(bool xodero) {
    ..............
    }

    int main() {
    char janein, nzug; // janein frag immer ob man noch eine runde spielen will ; nzug speichert den nächsten zug
    unsigned float wahl,schleife=9.0,A1,A2,A3,B1,B2,B3,C1,C2,C3 // wahl ´sagt´ wer gegen wen spielt,
    int punkte // ja, was wohl ...

    printf ("Gegen wen wollen Sie Spielen?:\n 1. Human vs. Human\n 2. Human vs. KI\n 3. KI vs. KI");
    scanf ("%f",&wahl); // ist das & richtig, oder zeigt es jetzt auf ein Speicher?
    // "pointer" haben mich durcheinander gebracht 😃

    switch(wahl) {
    case 1:
    while(schleife != 0) {
    int zugabfrage(extern char nzug); // fragt immer den spieler ab (nzug) ... wir brauche noch eine bool variabel, //damit man jetzt weil ob O oder X dran ist.
    int setztezug(extern char nzug); // setzt diesen zug dan auch ... muss dan auch die bool variable bekommen.
    break;
    }

    case 2:
    while(schleife != 0) {
    int zugabfrage(extern char nzug); // fragt immer den spieler ab (nzug) ... wir brauche noch eine bool variabel, //damit man jetzt weil ob O oder X dran ist.
    int setztezug(extern char nzug); // setzt diesen zug dan auch ... muss dan auch die bool variable bekommen.
    int KI(bool /*bekommt auch noch eine bool abfrage, die schau ob die zahl gleich null ist, wenn ja wird die funktion KI() und das 2te setztezug nicht ausgeführt+/);
    int setztezug(extern char nzug);
    break;
    }

    case 3:
    while(schleife != 0) {
    int KI(extern char nzug); // setzt diesen zug dan auch ... muss dan auch die bool variable bekommen.
    int setztezug(extern char nzug);
    break;
    }

    default:
    printf ("ungültige option");
    return 1;
    }



  • Sorry ... hier noch einmal mit richtig gesetzten code tags ... das andere kann gelöscht werden

    Danke. Ihr seid ja alle voll nett ... wenn ich ein guten nick gefunden habe, werde ich mich mal anmelden 🙂

    Also in der schule habe ich mir mal paar gedanken gemacht und ich weiß schon mehr oder weniger wie ich das amchen:

    So soll das Feld aussehen:
    Die / sollen eigentlich solche grade linien sein (Strg + Alt + < >) aber unter Linux kann ich die nicht da darstellen 😞 )

    A / B / C /
    +---+---+---+
    1 / / / / Felder 1,2,3
    +---+---+---+
    2 / / / / Felder 4,5,6
    +---+---+---+
    3 / / / / Felder 7,8,9
    +---+---+---+

    so, jedes Feld soll jetzt eine Variable bekommen (unsigned float): A1, A2, A3, B1, B2, B3, C1, C2, C3, ... oder auch einfach nur Feld[8] oder Feld[2][2], aber ich werde mal ersteres nehmen.

    So ein code habe ich auch schon (ich wette ihr werdet grinsen, aber das ist auch mein "erst programmierter code" ... also seid rücksichtsvoll 😃 - is ausserdem ein "low-Level code):

    #include <stdio.h>
    
    zugabfrage(extern char nzug) {
    ..............
    }
    int setztezug(extern char nzug) {
    
    ...........
    
    printf("      A /  B / C  /");   
    printf("   +----+----+----+");
    printf(" 1 / %f / %f / %f /",A1,B1,C1);
    printf("   +----+----+----+");
    printf(" 2 / %f / %f / %f /",A2,B2,C2);
    printf("   +----+----+----+");
    printf(" 3 / %f / %f / %f /",A3,B3,C3);      
    printf("   +----+----+----+");
    
    ................
    } 
    
    int KI(bool xodero) {
    ..............
    }
    
    int main() {
    char janein, nzug; // janein frag immer ob man noch eine runde spielen will ; nzug speichert den nächsten zug
    unsigned float wahl,schleife=9.0,A1,A2,A3,B1,B2,B3,C1,C2,C3  // wahl ´sagt´ wer gegen wen spielt, 
    int punkte // ja, was wohl ...
    
    printf ("Gegen wen wollen Sie Spielen?:\n 1. Human vs. Human\n 2. Human vs. KI\n 3. KI vs. KI");
    scanf ("%f",&wahl); // ist das & richtig, oder zeigt es jetzt auf ein Speicher? 
                        // "pointer" haben mich durcheinander gebracht :D
    
    switch(wahl) {
    case 1:
    while(schleife != 0) {
    int zugabfrage(extern char nzug); // fragt immer den spieler ab (nzug) ... wir brauche noch eine bool variabel, //damit man jetzt weil ob O oder X dran ist.
    int setztezug(extern char nzug);   // setzt diesen zug dan auch ... muss dan auch die bool variable bekommen. 
    break;
    }
    
    case 2:
    while(schleife != 0) {
    int zugabfrage(extern char nzug); // fragt immer den spieler ab (nzug) ... wir brauche noch eine bool variabel, //damit man jetzt weil ob O oder X dran ist.
    int setztezug(extern char nzug);   // setzt diesen zug dan auch ... muss dan auch die bool variable bekommen. 
    int KI(bool /*bekommt auch noch eine bool abfrage, die schau ob die zahl gleich null ist, wenn ja wird die funktion KI() und das 2te setztezug nicht ausgeführt+/);
    int setztezug(extern char nzug);
    break;
    }
    
    case 3:
    while(schleife != 0) {
    int KI(extern char nzug);   // setzt diesen zug dan auch ... muss dan auch die bool variable bekommen. 
    int setztezug(extern char nzug);
    break;
    }
    
    default:
    printf ("ungültige option");
    return 1;
    }
    


  • man bin ich blöd 🙂 ... ich habe ja ganz vergessen euch fragen zu stellen 😃

    1. Wie erstellt man zufallszahlen? jaja, mit rand, aber wie macht man das genau? etwa so:

    rand = variable;
    

    ????
    und was für ein header brauche ich dafür? math.h ?
    2. Wie kann man eine funktion dazu "bringen nochmal zu starten"??? Mit return 1; ???



  • Gut, bei der ersten farge hat mir die Bordsuche geholfen 😃
    int iZufallsZahl = rand()%9; in #include <cstdlib> ... das ist doch so richtig, oder?



  • Wetten du wirst nie mehr eine antwort von den anderen bekommen? Du hast zuviel gepostet ... ide checken das nicht



  • kenner des forums schrieb:

    Wetten du wirst nie mehr eine antwort von den anderen bekommen? Du hast zuviel gepostet ... ide checken das nicht

    haha und genau deswegen werde ich posten 😛

    Und eine Funktion kann sich selbst nochmal aufrufen. Du musst nur drauf achten, dass du keine Endlosschleife daraus bastelst.

    void blub()
    {
       static bool again = true;
    
       if (again)
       {
          blub();
          again = false;
       }
       else
          again = true;
    }
    

    Keine Ahnung, ob das so stimmt 😛 habs mir grad schnell ausgedacht. Die sollte sich immer nochmal ein Mal ausführen, wenn du sie aufrufst.



  • und genau jetzt hast du imho eine Endlosschleife geschaffen 😃
    da bei dem zweiten Aufruf eine neue lokale Variaqble again erstellt wird, in dieser steht dann wieder true also wird die Funktion nicht enden.
    Um den fehler zu korrigieren müsstest du die variable again mit übergeben 😉



  • Kann man das nicht mir goto machen? also mein genaues problem ist folgender: Wenn man eine Falscheingabe macht, soll die funktion nochmal widerholt werden, aber das ganze soll in der funktion selber passieren. Meint ihr ich soll nochmal ein topic im C forum erstellen?



  • Hotblack* schrieb:

    und genau jetzt hast du imho eine Endlosschleife geschaffen 😃
    da bei dem zweiten Aufruf eine neue lokale Variaqble again erstellt wird, in dieser steht dann wieder true also wird die Funktion nicht enden.
    Um den fehler zu korrigieren müsstest du die variable again mit übergeben 😉

    nein, sie ist static, sie wird nur einmal erstellt



  • was nun? schrieb:

    Kann man das nicht mir goto machen? also mein genaues problem ist folgender: Wenn man eine Falscheingabe macht, soll die funktion nochmal widerholt werden, aber das ganze soll in der funktion selber passieren. Meint ihr ich soll nochmal ein topic im C forum erstellen?

    Nein, erstens: NIEMALS gotos....

    zweitens:

    std::string eingabe;
    bool validInput = false;
    
    do
    {
    cout << "Eingabe: " << flush;
    cin >> eingabe;
    
    if (eingabe entspricht korrekter Eingabe)
       validInput = true;
    
    } while (!validInput);
    


  • tut mir leid, ich kann kein c++ 😞



  • was nun? schrieb:

    tut mir leid, ich kann kein c++ 😞

    dann lerns


Anmelden zum Antworten