Tic Tac Toe Spiel in C Programmieren

Dieses Thema im Forum "Informatik" wurde erstellt von ElenaMo, 6 Jan. 2013.

  1. vielleicht kann jemand mir helfen,komme nicht weiter (MIT Gewinnabfrage)



    #include<stdio.h>

    int main(void)
    {
    //Variablen Deklaration//

    //warum feld=9//
    char spielfeld[10]={'0','1','2','3','4','5','6','7','8','9'};
    int durchlauf;
    int wahl;
    int wiederholung;
    int gewonnen=0;

    //Berüßung und Vorstellen des Spiels//
    printf("Herzlich Willkommen zu dem Spiel Tic - Tac - To.\n");
    getchar();

    printf("Bitte geben Sie fuer die geweahlte stelle auf dem Spielfeld,die entsprechende Zahl ein\n");
    printf("Ein Spieler hat gewonnen,wenn er es geschafft hat seine Steine so zu setzten\n");
    printf("\ndas er entweder 3 wagerecht, 3 senkrecht oder 3 diagonal in einer Reihe hat.\n");
    printf("\nSpieler 1 mit einem X und Spieler 2 mit einem O\n");


    //Hier die wiederhollung//

    printf("\nDas Spielfeld\n\n");

    printf(" %c %c %c\n",spielfeld[1],spielfeld[2],spielfeld[3]);
    printf(" %c %c %c\n",spielfeld[4],spielfeld[5],spielfeld[6]);
    printf(" %c %c %c\n",spielfeld[7],spielfeld[8],spielfeld[9]);


    for(durchlauf=1; durchlauf<10&&gewonnen==0; durchlauf++)
    {
    //Spielrunde 1, 3, 5, 7, 9//
    if (durchlauf%2==1)
    {
    //Eingabe//
    do
    {
    printf("Spieler 1 ist an der Reihe, bitte drücken Sie die entsprechende Zahl.\n");
    scanf("%i",&wahl);
    fflush(stdin);

    //Überprüfen, ob Feld schon besetzt ist//
    if((spielfeld[wahl]=='x')||(spielfeld[wahl]=='O'))
    {
    printf("Das eingegebene Feld ist schon besetzt.\n");
    //zum Wiederholen der Schleife//
    wahl=10;
    }


    }
    //Bedienung zum verlassen der Schleife//
    while((wahl<1)||(wahl>9));


    //Belegung des Spielfeldes//
    spielfeld[wahl]='X';
    }

    //Spielrunde 2, 4, 6, 8//
    else
    {
    //Eingabe//
    do
    {
    printf("Spieler 2 ist an der Reihe, bitte druecken Sie die entsprechende Zahl.\n");
    scanf("%i",&wahl);
    fflush(stdin);

    //Überprüfen, ob Feld besetzt ist //
    if((spielfeld[wahl]=='O')||(spielfeld[wahl]=='X'))
    {
    printf("Das eingegebene Feld ist schon besetzt.\n");
    //zum Wiederhollen der Schleife//
    wahl=10;
    }


    }
    //Bedinung, um Schleife zu verlassen//
    while((wahl<1)||(wahl>9));

    //Belegung des Spielfeldes//
    spielfeld[wahl]='O';
    }



    printf("\n %c %c %c\n",spielfeld[1],spielfeld[2],spielfeld[3]);
    printf(" %c %c %c\n",spielfeld[4],spielfeld[5],spielfeld[6]);
    printf(" %c %c %c\n",spielfeld[7],spielfeld[8],spielfeld[9]);

    //Bedingungen zum Sieg


    if(((spielfeld[1]='O') && (spielfeld[2]='0') && (spielfeld[3]='0')) || (spielfeld[4]='0') && (spielfeld[5]='0') && (spielfeld[6]='0') || (spielfeld[7]='0') && (spielfeld[8]='0') && (spielfeld[9]='0') || (spielfeld[1]='0') &&(spielfeld[5]='0') && (spielfeld[9]='0')|| (spielfeld[3]='0') && (spielfeld[5]='0') && (spielfeld[7]='0')|| (spielfeld[1]='0') && (spielfeld[4]='0') && (spielfeld[7]='0')|| (spielfeld[2]='0') && (spielfeld[5]='0') && (spielfeld[8]='0')|| (spielfeld[3]='0') && (spielfeld[6]='0') && (spielfeld[9]='0'))
    {
    printf("Spieler 1,du hast gewonnen!");


    }
    if(((spielfeld[1]='X') && (spielfeld[2]='X') && (spielfeld[3]='X')) || (spielfeld[4]='X') && (spielfeld[5]='X') && (spielfeld[6]='X') || (spielfeld[7]='X') && (spielfeld[8]='X') && (spielfeld[9]='X') || (spielfeld[1]='X') &&(spielfeld[5]='X') && (spielfeld[9]='X')|| (spielfeld[3]='X') && (spielfeld[5]='X') && (spielfeld[7]='X')|| (spielfeld[1]='X') && (spielfeld[4]='X') && (spielfeld[7]='X')|| (spielfeld[2]='X') && (spielfeld[5]='X') && (spielfeld[8]='X')|| (spielfeld[3]='X') && (spielfeld[6]='X') && (spielfeld[9]='X'))
    {
    printf("Spieler 2,du hast gewonnen!");

    }
    else
    {
    printf("Unenschieden");


    }




    //Hier 3-mal ein if mit den Bedingungen für den Sieg von Spieler 1, Spieler 2 und unentschieden. //


    //Wiederhollen//
    printf("Möchenten Sie noch mal Spielen?\n");
    printf("Bestätige Sie ja mit 1 und nein mit 2.\n");
    scanf("%i",&wiederholung);
    fflush(stdin);

    return(1);
    }
    }

    /*getchar kann entfallen, da man sonst 2 mal Enter drücken muss*/

    /*Rücksetzten der Hauptfunktion*/
     
  2. AW: Tic Tac Toe Spiel in C Programmieren

    Hi,

    -bitte benutze die "Code-TAGs" dann kann man das ganze besser lesen

    du hattest mehrere Fehler bei der "Gewinn-Abfrage"

    1. Abfrage auf Gleichheit geht in "c" mit "==" nicht mit "="
    2. Du hast die Klammern falsch gesetzt
    3. Unentschieden kann es nur sein, wenn alle 9 Felder besetzt sind

    hier der korrigierte Code :

    Code:
    #include<stdio.h>
    
    int main(void)
    {
      //Variablen Deklaration//
    
      //warum feld=9//
      char spielfeld[10]={'0','1','2','3','4','5','6','7','8','9'};
      int durchlauf;
      int wahl;
      int wiederholung;
      int gewonnen=0;
    
      //Berüßung und Vorstellen des Spiels//
      printf("Herzlich Willkommen zu dem Spiel Tic - Tac - To.\n");
      getchar();
    
      printf("Bitte geben Sie fuer die geweahlte stelle auf dem Spielfeld,die entsprechende Zahl ein\n");
      printf("Ein Spieler hat gewonnen,wenn er es geschafft hat seine Steine so zu setzten\n");
      printf("\ndas er entweder 3 wagerecht, 3 senkrecht oder 3 diagonal in einer Reihe hat.\n");
      printf("\nSpieler 1 mit einem X und Spieler 2 mit einem O\n");
    
    
      //Hier die wiederhollung//
    
      printf("\nDas Spielfeld\n\n");
    
      printf(" %c %c %c\n",spielfeld[1],spielfeld[2],spielfeld[3]);
      printf(" %c %c %c\n",spielfeld[4],spielfeld[5],spielfeld[6]);
      printf(" %c %c %c\n",spielfeld[7],spielfeld[8],spielfeld[9]);
    
    
      for(durchlauf=1; durchlauf<10&&gewonnen==0; durchlauf++)
      { 
        //Spielrunde 1, 3, 5, 7, 9//
        if (durchlauf%2==1)
        {
          //Eingabe//
          do 
          {
            printf("Spieler 1 ist an der Reihe, bitte drücken Sie die entsprechende Zahl.\n");
            scanf("%i",&wahl);
            fflush(stdin);
    
            //Überprüfen, ob Feld schon besetzt ist//
            if((spielfeld[wahl]=='X')||(spielfeld[wahl]=='O'))
            {
              printf("Das eingegebene Feld ist schon besetzt.\n");
              //zum Wiederholen der Schleife//
              wahl=10;
            }
          }
          //Bedienung zum verlassen der Schleife//
          while((wahl<1)||(wahl>9));
    
    
          //Belegung des Spielfeldes//
          spielfeld[wahl]='X';
        }
        //Spielrunde 2, 4, 6, 8//
        else
        {
          //Eingabe//
          do 
          {
            printf("Spieler 2 ist an der Reihe, bitte druecken Sie die entsprechende Zahl.\n");
            scanf("%i",&wahl);
            fflush(stdin);
     
            //Überprüfen, ob Feld besetzt ist //
            if((spielfeld[wahl]=='O')||(spielfeld[wahl]=='X'))
            {
              printf("Das eingegebene Feld ist schon besetzt.\n");
              //zum Wiederhollen der Schleife//
              wahl=10;
            }
          }
          //Bedinung, um Schleife zu verlassen//
          while((wahl<1)||(wahl>9));
    
          //Belegung des Spielfeldes// 
          spielfeld[wahl]='O';
        }
    
    
    
        printf("\n %c %c %c\n",spielfeld[1],spielfeld[2],spielfeld[3]);
        printf(" %c %c %c\n",spielfeld[4],spielfeld[5],spielfeld[6]);
        printf(" %c %c %c\n",spielfeld[7],spielfeld[8],spielfeld[9]);
    
        //Bedingungen zum Sieg
    
    
        if(((spielfeld[1]=='O') && (spielfeld[2]=='0') && (spielfeld[3]=='0')) || ((spielfeld[4]=='0') && (spielfeld[5]=='0') &&       (spielfeld[6]=='0')) || ((spielfeld[7]=='0') && (spielfeld[8]=='0') && (spielfeld[9]=='0')) || ((spielfeld[1]=='0')       && (spielfeld[5]=='0') && (spielfeld[9]=='0')) || ((spielfeld[3]=='0') && (spielfeld[5]=='0') && (spielfeld[7]=='0')) ||       ((spielfeld[1]=='0') && (spielfeld[4]=='0') && (spielfeld[7]=='0')) || ((spielfeld[2]=='0') && (spielfeld[5]=='0') &&       (spielfeld[8]=='0')) || ((spielfeld[3]=='0') && (spielfeld[6]=='0') && (spielfeld[9]=='0')))
        {
          printf("\nSpieler 2,du hast gewonnen!");
          // FOR-Schleife verlassen
          gewonnen=2; // speichern das Spieler 2 gewonnen hat
        }
    
        if(((spielfeld[1]=='X') && (spielfeld[2]=='X') && (spielfeld[3]=='X')) || ((spielfeld[4]=='X') && (spielfeld[5]=='X') &&       (spielfeld[6]=='X')) || ((spielfeld[7]=='X') && (spielfeld[8]=='X') && (spielfeld[9]=='X')) || ((spielfeld[1]=='X')       && (spielfeld[5]=='X') && (spielfeld[9]=='X')) || ((spielfeld[3]=='X') && (spielfeld[5]=='X') && (spielfeld[7]=='X')) ||       ((spielfeld[1]=='X') && (spielfeld[4]=='X') && (spielfeld[7]=='X')) || ((spielfeld[2]=='X') && (spielfeld[5]=='X') &&       (spielfeld[8]=='X')) || ((spielfeld[3]=='X') && (spielfeld[6]=='X') && (spielfeld[9]=='X')))
        {
          printf("\nSpieler 1,du hast gewonnen!");
          // FOR-Schleife verlassen
          gewonnen=1; // speichern das Spieler 1 gewonnen hat
        }
    
      }
        
      if(gewonnen==0)
      {
        printf("\nUnenschieden");
      }
    
      printf("\n");
    
    
    
    
      //Hier 3-mal ein if mit den Bedingungen für den Sieg von Spieler 1, Spieler 2 und unentschieden. //
    
    
      //Wiederhollen//
      printf("Möchenten Sie noch mal Spielen?\n");
      printf("Bestätige Sie ja mit 1 und nein mit 2.\n");
      scanf("%i",&wiederholung);
      fflush(stdin);
    
      return(1);
    }
    


    Gruss Uwe
     
  3. AW: Tic Tac Toe Spiel in C Programmieren

    vielen Dank!!!!
     

Diese Seite empfehlen