Tic Tac Toe Spiel in C Programmieren

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*/
 
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
 
Top