Tic Tac To



  • dann machst du noch mal so ein feld mit X aus buchstaben rein
    es gibt da für den anfang neun möglichkeiten, also brauchst du 9 solche felder! und dann einfach für O nochmal 9 felder. wenn dann wieder X oder O dran ist, bleiben nur noch 7 Felder übrig, also 7 weitere möglichkeiten. immer minus 2: 9, 7, 5, 3, 1. die alle zusammen zählen sind 25. und nochmal 25 für die Opposition. Wären ungefähr so 50 möglichkeiten. Also machst du 50 verschiedene Grafikfelder, damit sind alle Möglichkeiten gefüllt. das wären ungefähr 1050 Zeilen Code. dann machst du immer if-funktion

    If(X_auf_Feld_oben_links != belegt) { ankreuzen = true; }

    und die kontrolle:

    If (X_auf_Feld_oben_links && X_auf_Feld_oben_mitte && X_auf_Feld_oben_rechts) { X_hat_gewonnen = true };

    und so weiter und so fort...



  • If(X_auf_Feld_oben_links != belegt) { ankreuzen = true; 
    cout<<"  X    X       |               |               \n"<<endl;
    cout<<"   X  X        |               |               \n"<<endl;
    cout<<"     X         |               |               \n"<<endl;
    cout<<"    X X        |               |               \n"<<endl;
    cout<<"   X    X      |               |               \n"<<endl;
    cout<<"  X      X     |               |               \n"<<endl;
    cout<<"---------------|---------------|---------------\n"<<endl;
    cout<<"               |               |               \n"<<endl;
    cout<<"               |               |               \n"<<endl;
    cout<<"               |               |               \n"<<endl;
    cout<<"               |               |               \n"<<endl;
    cout<<"               |               |               \n"<<endl;
    cout<<"               |               |               \n"<<endl;
    cout<<"               |               |               \n"<<endl;
    cout<<"---------------|---------------|---------------\n"<<endl;
    cout<<"               |               |               \n"<<endl;
    cout<<"               |               |               \n"<<endl;
    cout<<"               |               |               \n"<<endl;
    cout<<"               |               |               \n"<<endl;
    cout<<"               |               |               \n"<<endl;
    cout<<"               |               |               \n"<<endl;
    
    // und hier eingabe umd die nächste position zu bestimmen
    
    cin >> X;
    cin >> Y;
    
    // hier die neue öh
    
    }
    


  • also wenn du schon meinen namen nimmst, dann mach das X nicht so schief.



  • spitze...der aufbau sieht schon sehr gut aus....

    mal ehrlich...bemüh doch mal google ... ich denke mit glück wirst du bei dem thema tic tac toe ein paar treffer haben... 🙄



  • Hi leute!

    Habe ne Frage zu meinem Spiel:
    Wie kann cih es am Anfang amchen, dass ich ausswählen kann, ob jetzt Mensch vs Mensch spielen oder Computer vs Computer?

    Hier mein Code: (Copyright by GerTiger)

    /* tictactoe.c */
    #include <stdio.h>
    #include <stdlib.h>
    #ifdef __unix__
        #define clrscr() printf("\x1B[2J")
    #elif __BORLANDC__ && __MSDOS__
        #include <conio.h>
    #elif __WIN32__ || _MSC_VER
        #define clrscr() system("cls")
    #else
        #define clrscr() printf("clrscr() - Fehler!!\n")
    #endif
    
    #define X 'X'
    #define O 'O'
    #define LEER ' '
    #define GAME_OVER 0
    #define A_WINNER 1
    #define CONTINUE 2
    
    /* Inhalt des 3 x 3 grossen Felds */
    char TicTacToe[3][3] = { {' ', ' ', ' '},
                             {' ', ' ', ' '},
                             {' ', ' ', ' '} };
    /* Spieler1 hat das Zeichen 'X' */
    char Spieler2 = O;
    /* Spieler2 hat das Zeichen 'O' */
    char Spieler1 = X;
    /* Anzahl der Felder, die besetzt werden können */
    unsigned int felder = 9;
    
    /* Funktionsprototypen */
    void print_spielfeld(void);
    char neuer_zug(char);
    int if_win(void);
    
    /* Gibt den aktuellen Zustand des Spielfelds aus */
    void print_spielfeld(void) {
       int i;
    
       clrscr();
       printf("       1   2   3  \n     +---+---+---+\n");
       for(i = 0; i < 3; i++) {
          printf("  %d  | ",i+1);
          printf("%c",TicTacToe[i][0]);
          printf(" | ");
          printf("%c",TicTacToe[i][1]);
          printf(" | ");
          printf("%c",TicTacToe[i][2]);
          printf(" | \n");
          if(i != 2) {
             printf("     +---+---+---+\n");
          }
          else {
             printf("     +---+---+---+\n");
          }
       }
    }
    
    /* Führt einen neuen Zug aus.
     * char ch: Zeichen des Spielers, der an der Reihe ist, 'X'
     * oder 'O'
     * Rückgabewert: Zeichen des Spielers, der eben an der Reihe war
     * falls ein Feld besetzt ist, wird der Rückgabewert vertauscht,
     * damit der aktuelle Spieler nochmals seinen Zug machen kann.
     * Hat ein Spieler gewonnen, gibt die Funktion die
     * symb. Konstante GAME_OVER zurück
     */
    char neuer_zug(char ch) {
       unsigned int row, colum;
    
       printf("\nSpieler \"%c\" ist an der Reihe\n\n",ch);
       printf("Zeile  (1-3): ");
       scanf("%d",&row);
       printf("Spalte (1-3): ");
       scanf("%d",&colum);
    
       if(TicTacToe[row-1][colum-1] == LEER) {
          /* Zeichen in das mehrdim. Array */
          TicTacToe[row-1][colum-1] = ch;
          print_spielfeld();
          /* Haben wir schon einen Gewinner */
          if(if_win() == A_WINNER)
             return GAME_OVER;
       }
       else { /* Ein bereits besetztes Feld */
          print_spielfeld();
          printf("\n!!! Feld ist bereits gesetzt !!!\n");
          return (ch == X) ?O :X;
       }
       /* Sind bereits alle Felder besetzt? */
       if(--felder > 0)
          return ch;
       else {
          printf("\nAlle Felder sind besetzt - Unentschieden\n");
          return GAME_OVER;
       }
    }
    
    /* Auswertung aller Möglichkeiten, um einen Gewinner zu ermitteln
     * Rückgabewert: symb. Konstante A_WINNER falls ein Gewinner
     * ermittelt wurde oder die symb. Konstante CONTINUE zum
     * Weiterspielen.
     */
    int if_win(void) {
      /* Zuerst Spieler2 'X' */
      if(TicTacToe[0][0] == Spieler2 &&
         TicTacToe[0][1] == Spieler2 &&
         TicTacToe[0][2] == Spieler2 ||
         TicTacToe[1][0] == Spieler2 &&
         TicTacToe[1][1] == Spieler2 &&
         TicTacToe[1][2] == Spieler2 ||
         TicTacToe[2][0] == Spieler2 &&
         TicTacToe[2][1] == Spieler2 &&
         TicTacToe[2][2] == Spieler2 ||
         TicTacToe[0][0] == Spieler2 &&
         TicTacToe[1][0] == Spieler2 &&
         TicTacToe[2][0] == Spieler2 ||
         TicTacToe[0][1] == Spieler2 &&
         TicTacToe[1][1] == Spieler2 &&
         TicTacToe[2][1] == Spieler2 ||
         TicTacToe[0][2] == Spieler2 &&
         TicTacToe[1][2] == Spieler2 &&
         TicTacToe[2][2] == Spieler2 ||
         TicTacToe[0][0] == Spieler2 &&
         TicTacToe[1][1] == Spieler2 &&
         TicTacToe[2][2] == Spieler2 ||
         TicTacToe[0][2] == Spieler2 &&
         TicTacToe[1][1] == Spieler2 &&
         TicTacToe[2][0] == Spieler2) {
            printf("\nSpieler \"O\" hat das Spiel gewonnen!\n\n");
            return A_WINNER;
      }
    
      /* Jetzt Spieler1 'O' */
      else if( TicTacToe[0][0] == Spieler1 &&
               TicTacToe[0][1] == Spieler1 &&
               TicTacToe[0][2] == Spieler1 ||
               TicTacToe[1][0] == Spieler1 &&
               TicTacToe[1][1] == Spieler1 &&
               TicTacToe[1][2] == Spieler1 ||
               TicTacToe[2][0] == Spieler1 &&
               TicTacToe[2][1] == Spieler1 &&
               TicTacToe[2][2] == Spieler1 ||
               TicTacToe[0][0] == Spieler1 &&
               TicTacToe[1][0] == Spieler1 &&
               TicTacToe[2][0] == Spieler1 ||
               TicTacToe[0][1] == Spieler1 &&
               TicTacToe[1][1] == Spieler1 &&
               TicTacToe[2][1] == Spieler1 ||
               TicTacToe[0][2] == Spieler1 &&
               TicTacToe[1][2] == Spieler1 &&
               TicTacToe[2][2] == Spieler1 ||
               TicTacToe[0][0] == Spieler1 &&
               TicTacToe[1][1] == Spieler1 &&
               TicTacToe[2][2] == Spieler1 ||
               TicTacToe[0][2] == Spieler1 &&
               TicTacToe[1][1] == Spieler1 &&
               TicTacToe[2][0] == Spieler1)  {
                  printf("\nSpieler \"X\" hat das Spiel gewonnen!\n\n");
                  return A_WINNER;
       }
       return CONTINUE;
    }
    
    int main(void) {
       char check = X;
    
       /* Leeres Spielfeld ausgeben */
       print_spielfeld();
    
       do { /* War Spieler mit dem Zeichen 'X' gerade dran ... */
          /* ... dann ist jetzt Spieler mit dem Zeichen 'O' dran */
          if(check==X) {
                check=neuer_zug(O);
          }
          else { /* ... ansonsten der Spieler mit dem Zeichen 'X' */
            check=neuer_zug(X);
          }
       } while( check != GAME_OVER );
    
           system("PAUSE");
        return 0;
    
       return EXIT_SUCCESS;
    }
    


  • du könntens zu erst noch eine variable definieren, im welchem modus das spiel läuft. also Mench vs Mensch, Mensch vs Computer usw. Dann kannst du in der Mainloop einfach überprüfen, ob nun der Computer dran ist und dann ihn einen zug machen lassen. Die KI sollte da nicht das problem sein 😉

    Obowhl, in der schule haben wir fast immer unentschieden gespielt



  • also wenn ich den letzten code mit dem ersten vergleiche frage ich mich,wo du den kopiert hast und wie du dein "copyright" noch dahinter zu setzen wagst



  • wen es interesiert: http://www.uni-koeln.de/rrzk/kurse/unterlagen/ckurs/Programme2007.pdf

    Ich finds ja echt ne frechheit



  • Typischer Fall von
    "Ich will allen Leuten zeigen, dass ich ein Tic Tac Toe programmiert hab! ... auch egal wenn keine Zeile Code von mir stammt"

    Zur Übung wärs natürlich besser sich den Code ein wenig anzusehen und dann selbst mit der Idee zu programmieren, anstatt einfach blind zu kopieren...

    Besonders weil du in nem anderen Thread grade gefragt hast, was du programmieren sollst...tictactoe, zahlenratespiel,....



  • roflolmao

    er ist ja auch elf! Deswegen kann er nur kopieren ^^



  • selbst der kopierte code ist scheisse



  • @GerTiger: Ich verklag dich, das war mein Code;)

    hehe... tic tac toe.. geiles spiel wo ist die KI.. wohl ne Trial/error aufgabe



  • BorisDieKlinge schrieb:

    @GerTiger: Ich verklag dich, das war mein Code;)

    hehe... tic tac toe.. geiles spiel wo ist die KI.. wohl ne Trial/error aufgabe

    ups! dann wollt ich deinen code nicht beleidigen haha



  • nene is nich mein Code... wenn man seinen Code ins netz stellt bekommt man eh nur kritik.. und dieser Code ist fast zu primitv...



  • @GerTiger

    Wenn das dein Code ist, dann kommentiere ihn doch mal.
    Mal abgesehen davon ist das C.



  • Edit: Mist hat der Verfasser ja schon kommentiert. 🙄



  • Haha, zu genial die Geschichte. Ich danke der Welt für die Menschen, die sie zustande bringt.


Anmelden zum Antworten