Programm Tic, Tac, Toe läuft nicht richtig !
Verfasst: Mo Mai 11, 2015 11:55 am
Hallo Ihr Profis !
Ich hab ein Problem an dem ich jetzt schon seit knapp 3 Wochen sitze, ich soll das Spiel Tic, Tac, Toe als C-Programm erstellen. Eigendlich funktioniert es schon mal ganz gut, nur leider gibt es ein paar Kleinigkeiten die noch nicht so funktionieren wie ich das möchte und ich finde einfach keinen Lösungsansatz.
EIn Problem ist, das wenn Spieler 1 gewinnonnen hat und das Spiel neu Starte sofort wieder gewinnt ohne jegliche Eingabe. Spieler 2 hat leider das Pech das er nie gewinnt und wenn er noch so viele 3 er Reihen hat.
Ich weiss mir einfach nicht weiter.....
Hier mal mein Code:
Es wäre schön wenn jemand von euch mir einen Tip geben könnte wo der Fehler steckt und hoffe ich hab diesmal alles Richtig eingerückt
Danke schon mal in vorraus !
MfG Marty
Ich hab ein Problem an dem ich jetzt schon seit knapp 3 Wochen sitze, ich soll das Spiel Tic, Tac, Toe als C-Programm erstellen. Eigendlich funktioniert es schon mal ganz gut, nur leider gibt es ein paar Kleinigkeiten die noch nicht so funktionieren wie ich das möchte und ich finde einfach keinen Lösungsansatz.
EIn Problem ist, das wenn Spieler 1 gewinnonnen hat und das Spiel neu Starte sofort wieder gewinnt ohne jegliche Eingabe. Spieler 2 hat leider das Pech das er nie gewinnt und wenn er noch so viele 3 er Reihen hat.

Ich weiss mir einfach nicht weiter.....
Hier mal mein Code:
Code: Alles auswählen
#include <stdio.h>
#include "conio.h"
#include <stdlib.h>
int main(void)
{
//Variablen deklarieren
char spielfeld[10]={'0','1','2','3','4','5','6','7','8','9'};
char string1[100];
char string2[100];
int durchlauf;
int wahl;
int repeat;
int gewonnen=0;
do
{
//Berüßung und Vorstellen des Spiels
printf("\t\t\tWillkommen zu Tic, Tac, Toe\n\n\n");
printf("Die Spielregeln:\n\n");
printf("Einer der Spieler hat gewonnen, wenn er 3 seiner Steine in einer Reihe hat !\n\n");
printf("Eine Reihe besteht aus 3 Feldern,\n");
printf("die vertikal, horizontal oder auch diagonal angeordnet sein k\x94nnen.\n");
printf("\nSpieler 1 spielt mit einem X und Spieler 2 spielt mit einem O\n\n");
//Name Spieler 1 einlesen
printf("Spieler 1 Bitte geben sie Ihren Namen ein:");
scanf("%99s",&string1[0]);
//Name Spieler 2 einlesen
printf("Spieler 2 Bitte geben sie Ihren Namen ein:");
scanf("%99s",&string2[0]);
//Das Spielfeld von Spieler 1
printf("\n Spielfeld\n\n");
printf(" \xDA\xC4\xC4\xC4\xC2\xC4\xC4\xC4\xC2\xC4\xC4\xC4\xBF");
printf(" \xB3 %c \xB3 %c \xB3 %c \xB3\n",spielfeld[1],spielfeld[2],spielfeld[3]);
printf(" \xC3\xC4\xC4\xC4\xC5\xC4\xC4\xC4\xC5\xC4\xC4\xC4\xB4");
printf(" \xB3 %c \xB3 %c \xB3 %c \xB3\n",spielfeld[4],spielfeld[5],spielfeld[6]);
printf(" \xC3\xC4\xC4\xC4\xC5\xC4\xC4\xC4\xC5\xC4\xC4\xC4\xB4");
printf(" \xB3 %c \xB3 %c \xB3 %c \xB3\n",spielfeld[7],spielfeld[8],spielfeld[9]);
printf(" \xC0\xC4\xC4\xC4\xC1\xC4\xC4\xC4\xC1\xC4\xC4\xC4\xD9\n\n");
for(durchlauf=1; durchlauf<10&&gewonnen==0; durchlauf++)
{
//Spielrunde 1, 3, 5, 7, 9 für Spieler 1
//Modulo wegen Zuweisung der Runde
if (durchlauf%2==1)
{
//Einlesen des Spielsteins Spieler 1
do
{
printf("%s, ist an der Reihe, bitte drücken Sie die entsprechende Zahl.\n",string1);
scanf("%i",&wahl);
fflush(stdin);
//Überprüfung wegen Doppelbelegung des Feldes
if((spielfeld[wahl]=='X')||(spielfeld[wahl]=='O'))
{
printf("Das eingegebene Feld ist schon besetzt.\n");
//Schleife bei Falscheingabe
wahl=10;
}
}
//Überprüfung ob die Zahl zwichen 1 & 9 liegt
while((wahl<1)||(wahl>9));
//Wahl des Spielfeldes bei Richtigen Bedingungen
spielfeld[wahl]='X';
}
//Spielrunde 2, 4, 6, 8 für Spieler 2
else
{
//Einlesen des Spielsteins Spieler 1
do
{
printf("%s ist an der Reihe, bitte druecken Sie die entsprechende Zahl.\n",string2);
scanf("%i",&wahl);
fflush(stdin);
//Überprüfung wegen Doppelbelegung des Feldes
if((spielfeld[wahl]=='O')||(spielfeld[wahl]=='X'))
{
printf("Das eingegebene Feld ist schon besetzt.\n");
//Schleife bei Falscheingabe
wahl=10;
}
}
//Überprüfung ob die Zahl zwichen 1 & 9 liegt
while((wahl<1)||(wahl>9));
//Wahl des Spielfeldes bei Richtigen Bedingungen
spielfeld[wahl]='O';
}
printf("\n Spielfeld\n\n");
printf(" \xDA\xC4\xC4\xC4\xC2\xC4\xC4\xC4\xC2\xC4\xC4\xC4\xBF");
printf(" \xB3 %c \xB3 %c \xB3 %c \xB3\n",spielfeld[1],spielfeld[2],spielfeld[3]);
printf(" \xC3\xC4\xC4\xC4\xC5\xC4\xC4\xC4\xC5\xC4\xC4\xC4\xB4");
printf(" \xB3 %c \xB3 %c \xB3 %c \xB3\n",spielfeld[4],spielfeld[5],spielfeld[6]);
printf(" \xC3\xC4\xC4\xC4\xC5\xC4\xC4\xC4\xC5\xC4\xC4\xC4\xB4");
printf(" \xB3 %c \xB3 %c \xB3 %c \xB3\n",spielfeld[7],spielfeld[8],spielfeld[9]);
printf(" \xC0\xC4\xC4\xC4\xC1\xC4\xC4\xC4\xC1\xC4\xC4\xC4\xD9\n\n");
//Bedingungen zum Sieg Spieler 2
if(((spielfeld[1]=='0') && (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("\n%s,du hast gewonnen!",string2);
// FOR-Schleife verlassen
gewonnen=2; // speichern das Spieler 2 gewonnen hat
//Bedingungen zum Sieg Spieler 2
}
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("\n%s,du hast gewonnen!",string1);
// FOR-Schleife verlassen
gewonnen=1; // speichern das Spieler 1 gewonnen hat
}
}
//Bedingung zum Unentschieden
if(gewonnen==0)
{
printf("\nUnenschieden");
}
printf("\n");
//Wiederholung der Runde
printf("M\x94 \bchenten Sie noch mal Spielen?\n");
printf("Ja = 1 und Nein = 2.\n");
scanf("%i",&repeat);
}
while(repeat==1);
getch();
return(0);
}

Danke schon mal in vorraus !
MfG Marty