Tic-Tac-Toe mit array's
-
Ok Meine to-do list bis morgen
1.Die erwähnten Korrekturen vornehmen
2.Versuchen das goto rauszubringen
3.Code übersichtlichermachenist das okey?
-
Initialsiere dein feld mit ' ' für jedes Element (sind ja nur 9)
Dann kannst du am Anfang dein leeres Feld schon mitzeichneFeld()
ausgeben.Die Variable
zeile
sollte vom Typint
sein (auch wenn da ein 'A' drin steht, das geht in C)Du hast nach Zeil 38:
scanf("%d",&auswahl);
dein Programm zweimal da stehen. Sooo groß sind die Unterschiede nicht zwischen Mensch-Mensch und Mensch-Computer.Schreib eine Funktion
check_feld()
, die die anderencheck_xxx()
aufruft. Diese Funktion gibt dann -1 oder 0 oder 'X' oder 'O' zurück. Je nachdem ob noch Züge möglich sind, Unentschieden oder wer Gewinner ist.Dann geht auch sowas
int sieger; sieger = check_feld(feld); if (sieger > 0) printf("Gratulation Player %c. Sie haben gewonnen!\n", sieger); ....
eingabe(..., char player) braucht den player auch nur zum drucken und setzten. player sollte auch int sein.
void eingabe(char feld[3][3],char zeile, int spalte, int player) { print 'Spieler %c ist dran', player tue Koordinaten einlesen solange (Koordinaten ungültig) setze an Koordinaten player }
Kurz und knapp, keine überflüssige Wiederholung, kein goto
Viel Spaß dabei.
-
Sooooo
Punkt 2 & 3 hätte ich dann schon mal!!
nur mit Punkt 1 gibts noch Probleme denn sobald ich dass mit der adresse anreden möchte also ein * davor schreibe kommen etwa 2 Dutzen warnings und ein paar errors -.-'#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include <windows.h> #include <time.h> void programStart(); void zeichneFeld(char feld[3][3]); void eingabe(char feld[3][3],char zeile, int spalte,char player); void eingabeUndPc(char feld[3][3],char zeile, int spalte,char player); int pruefeEingabe(char zeile, int spalte); int pruefeFeld(char feld[3][3],int zeile,int spalte); int pruefeFeldPc(char feld[3][3],int zeile,int spalte); int checkDiagonal(char feld[3][3]); int checkZeile(char feld[3][3]); int checkSpalte(char feld[3][3]); int checkUnentschieden(int zuege, int zuege_x,int zuege_o); int main() { char feld[3][3] = {{0}}; int i=0,x=0,o=0, xz=0,oz=0, xs=0,os=0, zuege=0, zuege_o=0, zuege_x=0, draw, auswahl; int spalte=1; char zeile='A'; programStart(); system("cls"); printf("\n\t\t\t(1) Um gegen einen Freund zu spielen\n"); printf("\n\t\t\t(2) Um gegen den Computer zu spielen\n"); scanf("%d",&auswahl); if(auswahl==1) { printf("\n\n\n\t\t\t TIC TAC TOE\n\n"); printf("\t\t\t 1 2 3 \n"); printf("\t\t\t +---+---+---+\n"); printf("\t\t\t A | | | |\n"); printf("\t\t\t |---+---+---|\n"); printf("\t\t\t B | | | |\n"); printf("\t\t\t |---+---+---|\n"); printf("\t\t\t C | | | |\n"); printf("\t\t\t +---|---|---+\n"); for(i=0;i<=5;i++) { zuege++; eingabe(feld,zeile,spalte,'X'); zuege_x++; zeichneFeld(feld); x=checkDiagonal(feld); if(x==2) { printf("Gratulation Player X Sie haben gewonnen!\n"); system("PAUSE"); return 0; } xz=checkZeile(feld); if(xz==2) { printf("Gratulation Player X Sie haben gewonnen!\n"); system("PAUSE"); return 0; } xs=checkSpalte(feld); if(xs==2) { printf("Gratulation Player X Sie haben gewonnen!\n"); system("PAUSE"); return 0; } draw=checkUnentschieden(zuege,zuege_x,zuege_o); if(draw==1) return 0; eingabe(feld,zeile,spalte,'O'); zuege_o++; zeichneFeld(feld); o=checkDiagonal(feld); if(o==1) { printf("Gratulation Player O Sie haben gewonnen!\n"); system("PAUSE"); return 0; } oz=checkZeile(feld); if(oz==1) { printf("Gratulation Player O Sie haben gewonnen!\n"); system("PAUSE"); return 0; } os=checkSpalte(feld); if(os==1) { printf("Gratulation Player O Sie haben gewonnen!\n"); system("PAUSE"); return 0; } checkUnentschieden(zuege,zuege_x,zuege_o); if(draw==1) return 0; } system("PAUSE"); return 0; } if(auswahl==2) { fflush(stdin); printf("\n\n\n\t\t\t TIC TAC TOE\n\n"); printf("\t\t\t 1 2 3 \n"); printf("\t\t\t +---+---+---+\n"); printf("\t\t\t A | | | |\n"); printf("\t\t\t |---+---+---|\n"); printf("\t\t\t B | | | |\n"); printf("\t\t\t |---+---+---|\n"); printf("\t\t\t C | | | |\n"); printf("\t\t\t +---|---|---+\n"); for(i=0;i<=5;i++) { zuege++; /** Eingabe des Spieler X **/ eingabeUndPc(feld,zeile,spalte,'X'); zuege_x++; zeichneFeld(feld); /** Überprüfung ob 3 X in einer Diagonale vorkommen **/ x=checkDiagonal(feld); if(x==2) { printf("Gratulation Player X Sie haben gewonnen!\n"); system("PAUSE"); return 0; } /** Überprüfung ob 3 X in einer Zeile vorkommen **/ xz=checkZeile(feld); if(xz==2) { printf("Gratulation Player X Sie haben gewonnen!\n"); system("PAUSE"); return 0; } /** Überprüfung ob 3 X in einer Spalte vorkommen **/ xs=checkSpalte(feld); if(xs==2){ printf("Gratulation Player X Sie haben gewonnen!\n"); system("PAUSE"); return 0; } /** Überprüft ob noch ein Spieler gewinnen kann **/ draw=checkUnentschieden(zuege,zuege_x,zuege_o); if(draw==1) return 0; /** Eingabe des Computer **/ eingabeUndPc(feld,zeile,spalte,'O'); zuege_o++; zeichneFeld(feld); /** Überprüfung ob 3 O in einer Diagonale vorkommen **/ o=checkDiagonal(feld); if(o==1){ printf("Gratulation Player O Sie haben gewonnen!\n"); system("PAUSE"); return 0; } /** Überprüfung ob 3 O in einer Zeile vorkommen **/ oz=checkZeile(feld); if(oz==1){ printf("Gratulation Player O Sie haben gewonnen!\n"); system("PAUSE"); return 0; } /** Überprüfung ob 3 O in einer Zeile vorkommen **/ os=checkSpalte(feld); if(os==1){ printf("Gratulation Player O Sie haben gewonnen!\n"); system("PAUSE"); return 0; } /** Überprüft ob noch ein Spieler gewinnen kann **/ checkUnentschieden(zuege,zuege_x,zuege_o); if(draw==1) return 0; } system("PAUSE"); return 0; } return 0; } void programStart(){ /** Ausgabe der Regeln und so **/ printf("Herzlich Willkomen bei Tic-Tac-Toe!\n\n" "Der Spieler X beginnt, Die Eingabe erfolgt im Format\n" "ZeileSpalte, z.B.: B2!\nWenn sie soweit sind kann das Spiel beginnen!\n\n"); system("PAUSE"); system("cls"); } void zeichneFeld(char feld[3][3]){ /** Ausgebe des kompletten Tic-Tac-Toe stand **/ printf("\n\n\n\t\t\t TIC TAC TOE\n\n"); printf("\t\t\t 1 2 3 \n"); printf("\t\t\t +---+---+---+\n"); printf("\t\t\t A | %c | %c | %c |\n",feld[0][0],feld[0][1],feld[0][2]); printf("\t\t\t |---+---+---|\n"); printf("\t\t\t B | %c | %c | %c |\n",feld[1][0],feld[1][1],feld[1][2]); printf("\t\t\t |---+---+---|\n"); printf("\t\t\t C | %c | %c | %c |\n",feld[2][0],feld[2][1],feld[2][2]); printf("\t\t\t +---|---|---+\n"); } void eingabe(char feld[3][3],char zeile, int spalte, char player){ char enter[3], dummy; int ok; if(player=='X'){ do{ do{ /** Eingabe **/ printf("\n \t\tSpieler X Ihre Eingabe -> "); gets(enter); ok=sscanf(enter,"%c%d%c",&zeile,&spalte,&dummy); }while(pruefeEingabe(zeile,spalte)!=0&&dummy!='\n'); /** Wandelt Buchstaben in Positionen (Zahlen) um **/ if(zeile=='A') zeile=0; if(zeile=='B') zeile=1; if(zeile=='C') zeile=2; spalte-=1; }while(pruefeFeld(feld,zeile,spalte)==1); /** Beschreibt das entsprechende Feld **/ feld[zeile][spalte]='X'; system("cls"); } if(player=='O'){ do{ do{ printf("\n \t\tSpieler O Ihre Eingabe -> "); gets(enter); ok=sscanf(enter,"%c%d%c",&zeile,&spalte,&dummy); }while(pruefeEingabe(zeile,spalte)!=0&&dummy!='\n'); /** Wandelt Buchstaben in Positionen (Zahlen) um **/ if(zeile=='A') zeile=0; if(zeile=='B') zeile=1; if(zeile=='C') zeile=2; spalte-=1; }while(pruefeFeld(feld,zeile,spalte)==1); /** Beschreibt das entsprechende Feld **/ feld[zeile][spalte]='O'; system("cls"); } } void eingabeUndPc(char feld[3][3],char zeile, int spalte, char player){ char enter[3], dummy; int ok; if(player=='X'){ do{ do{ printf("\n \t\tSpieler X Ihre Eingabe -> "); gets(enter); ok=sscanf(enter,"%c%d%c",&zeile,&spalte,&dummy); }while(pruefeEingabe(zeile,spalte)!=0&&dummy!='\n'); /** Wandelt Buchstaben in Positionen (Zahlen) um **/ if(zeile=='A') zeile=0; if(zeile=='B') zeile=1; if(zeile=='C') zeile=2; spalte-=1; }while(pruefeFeld(feld,zeile,spalte)==1); /** Beschreibt das entsprechende Feld **/ feld[zeile][spalte]='X'; system("cls");} if(player=='O'){ printf("\n \t\tDer Computer ist dran! "); time_t t; int i,j; do{ time(&t); srand((unsigned int)t); /** Zufallsgenerator initialisieren **/ i=0;j=0;t=0; /** Erzeugung der Zufallszall für die Position in der Zeile **/ for (i=0;i<9;i++) if(feld[0][0]!=0&&feld[0][1]!=0&&feld[0][1]!=0) zeile=rand()%3+1; zeile=rand()%3+0; /** Erzeugung der Zufallszall für die Position in der Spalte **/ for (j=0;j<9;j++) if(feld[0][0]!=0&&feld[1][0]!=0&&feld[2][0]!=0) spalte=rand()%3+1; spalte=rand()%3+1; }while(pruefeFeldPc(feld,zeile,spalte)==1); /** Beschreibt das entsprechende Feld **/ feld[zeile][spalte]='O'; system("cls"); } } int pruefeEingabe(char zeile, int spalte){ if(zeile>='A'&&zeile<='C'&&spalte>=1&&spalte<=3) return 0; else return 1; } int pruefeFeld(char feld[3][3],int zeile,int spalte){ /** Überprüft ob auf dem geplannten, zu beschreibenden Feld nicht bereits ein Wert gespeichert ist **/ if(feld[zeile][spalte]!=0){ printf("Position schon vergeben!\n"); return 1; } else return 0; } int pruefeFeldPc(char feld[3][3],int zeile,int spalte){ /** Überprüft ob auf dem geplannten, zu beschreibenden Feld nicht bereits ein Wert gespeichert ist **/ if(feld[zeile][spalte]!=0){ return 1; } else return 0; } int checkDiagonal(char feld[3][3]){ char help1,help2,help3; /** Überprüft ob drei gleiche in einer Diagonale sind **/ help1=feld[0][0]; help2=feld[1][1]; help3=feld[2][2]; if(help1==help2&&help2==help3&&help1==help3){ if(help1=='X'){ printf("Spieler X gewinnt\n"); system("PAUSE"); return 2; } if(help1=='O'){ printf("Spieler O gewinnt\n"); system("PAUSE"); return 1; } } /** Überprüft ob drei gleiche in einer Diagonale sind **/ help1=feld[0][2]; help2=feld[1][1]; help3=feld[2][0]; if(help1==help2&&help2==help3&&help1==help3){ if(help1=='X'){ printf("Spieler X gewinnt\n"); system("PAUSE"); return 2; } if(help1=='O'){ printf("Spieler O gewinnt\n"); system("PAUSE"); return 1; } } return 0; } int checkZeile(char feld[3][3]){ char help1,help2,help3; int i; /** Überprüft ob drei gleiche in einer Zeile sind **/ for(i=0;i<=3;i++){ help1=feld[i][0]; help2=feld[i][1]; help3=feld[i][2]; if(help1==help2&&help2==help3&&help1==help3){ if(help1=='X'){ printf("Spieler X gewinnt\n"); system("PAUSE"); return 2; } if(help1=='O'){ printf("Spieler O gewinnt\n"); system("PAUSE"); return 1; } } } return 0; } int checkSpalte(char feld[3][3]){ char help1,help2,help3; int i; /** Überprüft ob drei gleiche in einer Spalte sind **/ for(i=0;i<=3;i++) { help1=feld[0][i]; help2=feld[1][i]; help3=feld[2][i]; if(help1==help2&&help2==help3&&help1==help3){ if(help1=='X'){ printf("Spieler X gewinnt\n"); system("PAUSE"); return 2; } if(help1=='O'){ printf("Spieler O gewinnt\n"); system("PAUSE"); return 1; } } } return 0; } int checkUnentschieden(int zuege, int zuege_x,int zuege_o){ /** Überprüft ob ein Spieler noch geweinnen könnte **/ if(zuege>=9||zuege_o>=5||zuege_x>=5){ printf("Unentschieden!\n"); system("PAUSE"); return 1; } return 0; }
-
Hello World schrieb:
nur mit Punkt 1 gibts noch Probleme denn sobald ich dass mit der adresse anreden möchte also ein * davor schreibe kommen etwa 2 Dutzen warnings und ein paar errors -.-'
Und wir dürfen in den 463 Codezeilen jetzt herausfinden, wo diese Meldungen auftauchen könnten?
-
Hello World schrieb:
Sooooo
Punkt 2 & 3 hätte ich dann schon mal!!
nur mit Punkt 1 gibts noch Probleme denn sobald ich dass mit der adresse anreden möchte also ein * davor schreibe kommen etwa 2 Dutzen warnings und ein paar errors -.-'1. Es gabe mehrere erwähnte Korrekturen.
Ein paar hast du nicht eingebaut. Welche hat denn einen *? Und wo im Text hast du sie eingebaut? Und wie?
2. Ok die Gotos sind weg.
3. Hahaha, wo denn?
-
also ich dachte da so ....
void eingabe(char feld[3][3],char zeile, int spalte,char player);
in
void eingabe(char feld[3][3],int *zeile, int *spalte,char player);
-
so und jetzt passiert genau ..... gar nix mehr -.-
und das bei 0 errors und 0 warnings -.-'#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include <windows.h> #include <time.h> void programStart(); void zeichneFeld(char feld[3][3]); void eingabe(char feld[3][3],int *zeile, int *spalte,char player); void eingabeUndPc(char feld[3][3],int *zeile, int *spalte,char player); int pruefeEingabe(int *zeile, int *spalte); int pruefeFeld(char feld[3][3],int *zeile,int *spalte); int pruefeFeldPc(char feld[3][3],int *zeile,int *spalte); int checkDiagonal(char feld[3][3]); int checkZeile(char feld[3][3]); int checkSpalte(char feld[3][3]); int checkUnentschieden(int zuege, int zuege_x,int zuege_o); int main() { char feld[3][3] = {{0}}; int i=0,x=0,o=0, xz=0,oz=0, xs=0,os=0, zuege=0, zuege_o=0, zuege_x=0, draw, auswahl; int spalte=1; int zeile='A'; programStart(); system("cls"); printf("\n\t\t\t(1) Um gegen einen Freund zu spielen\n"); printf("\n\t\t\t(2) Um gegen den Computer zu spielen\n"); scanf("%d",&auswahl); if(auswahl==1) { printf("\n\n\n\t\t\t TIC TAC TOE\n\n"); printf("\t\t\t 1 2 3 \n"); printf("\t\t\t +---+---+---+\n"); printf("\t\t\t A | | | |\n"); printf("\t\t\t |---+---+---|\n"); printf("\t\t\t B | | | |\n"); printf("\t\t\t |---+---+---|\n"); printf("\t\t\t C | | | |\n"); printf("\t\t\t +---|---|---+\n"); for(i=0;i<=5;i++) { zuege++; eingabe(feld,&zeile,&spalte,'X'); zuege_x++; zeichneFeld(feld); x=checkDiagonal(feld); if(x==2) { printf("Gratulation Player X Sie haben gewonnen!\n"); system("PAUSE"); return 0; } xz=checkZeile(feld); if(xz==2) { printf("Gratulation Player X Sie haben gewonnen!\n"); system("PAUSE"); return 0; } xs=checkSpalte(feld); if(xs==2) { printf("Gratulation Player X Sie haben gewonnen!\n"); system("PAUSE"); return 0; } draw=checkUnentschieden(zuege,zuege_x,zuege_o); if(draw==1) return 0; eingabe(feld,&zeile,&spalte,'O'); zuege_o++; zeichneFeld(feld); o=checkDiagonal(feld); if(o==1) { printf("Gratulation Player O Sie haben gewonnen!\n"); system("PAUSE"); return 0; } oz=checkZeile(feld); if(oz==1) { printf("Gratulation Player O Sie haben gewonnen!\n"); system("PAUSE"); return 0; } os=checkSpalte(feld); if(os==1) { printf("Gratulation Player O Sie haben gewonnen!\n"); system("PAUSE"); return 0; } checkUnentschieden(zuege,zuege_x,zuege_o); if(draw==1) return 0; } system("PAUSE"); return 0; } if(auswahl==2) { fflush(stdin); printf("\n\n\n\t\t\t TIC TAC TOE\n\n"); printf("\t\t\t 1 2 3 \n"); printf("\t\t\t +---+---+---+\n"); printf("\t\t\t A | | | |\n"); printf("\t\t\t |---+---+---|\n"); printf("\t\t\t B | | | |\n"); printf("\t\t\t |---+---+---|\n"); printf("\t\t\t C | | | |\n"); printf("\t\t\t +---|---|---+\n"); for(i=0;i<=5;i++) { zuege++; /** Eingabe des Spieler X **/ eingabeUndPc(feld,&zeile,&spalte,'X'); zuege_x++; zeichneFeld(feld); /** Überprüfung ob 3 X in einer Diagonale vorkommen **/ x=checkDiagonal(feld); if(x==2) { printf("Gratulation Player X Sie haben gewonnen!\n"); system("PAUSE"); return 0; } /** Überprüfung ob 3 X in einer Zeile vorkommen **/ xz=checkZeile(feld); if(xz==2) { printf("Gratulation Player X Sie haben gewonnen!\n"); system("PAUSE"); return 0; } /** Überprüfung ob 3 X in einer Spalte vorkommen **/ xs=checkSpalte(feld); if(xs==2){ printf("Gratulation Player X Sie haben gewonnen!\n"); system("PAUSE"); return 0; } /** Überprüft ob noch ein Spieler gewinnen kann **/ draw=checkUnentschieden(zuege,zuege_x,zuege_o); if(draw==1) return 0; /** Eingabe des Computer **/ eingabeUndPc(feld,&zeile,&spalte,'O'); zuege_o++; zeichneFeld(feld); /** Überprüfung ob 3 O in einer Diagonale vorkommen **/ o=checkDiagonal(feld); if(o==1){ printf("Gratulation Player O Sie haben gewonnen!\n"); system("PAUSE"); return 0; } /** Überprüfung ob 3 O in einer Zeile vorkommen **/ oz=checkZeile(feld); if(oz==1){ printf("Gratulation Player O Sie haben gewonnen!\n"); system("PAUSE"); return 0; } /** Überprüfung ob 3 O in einer Zeile vorkommen **/ os=checkSpalte(feld); if(os==1){ printf("Gratulation Player O Sie haben gewonnen!\n"); system("PAUSE"); return 0; } /** Überprüft ob noch ein Spieler gewinnen kann **/ checkUnentschieden(zuege,zuege_x,zuege_o); if(draw==1) return 0; } system("PAUSE"); return 0; } return 0; } void programStart(){ /** Ausgabe der Regeln und so **/ printf("Herzlich Willkomen bei Tic-Tac-Toe!\n\n" "Der Spieler X beginnt, Die Eingabe erfolgt im Format\n" "ZeileSpalte, z.B.: B2!\nWenn sie soweit sind kann das Spiel beginnen!\n\n"); system("PAUSE"); system("cls"); } void zeichneFeld(char feld[3][3]){ /** Ausgebe des kompletten Tic-Tac-Toe stand **/ printf("\n\n\n\t\t\t TIC TAC TOE\n\n"); printf("\t\t\t 1 2 3 \n"); printf("\t\t\t +---+---+---+\n"); printf("\t\t\t A | %c | %c | %c |\n",feld[0][0],feld[0][1],feld[0][2]); printf("\t\t\t |---+---+---|\n"); printf("\t\t\t B | %c | %c | %c |\n",feld[1][0],feld[1][1],feld[1][2]); printf("\t\t\t |---+---+---|\n"); printf("\t\t\t C | %c | %c | %c |\n",feld[2][0],feld[2][1],feld[2][2]); printf("\t\t\t +---|---|---+\n"); } void eingabe(char feld[3][3],int *zeile, int *spalte, char player){ char enter[3], dummy; int ok; if(player=='X'){ do{ do{ /** Eingabe **/ printf("\n \t\tSpieler X Ihre Eingabe -> "); gets(enter); ok=sscanf(enter,"%d%d%c",zeile,spalte,&dummy); }while(pruefeEingabe(zeile,spalte)!=0&& dummy!='\n'); /** Wandelt Buchstaben in Positionen (Zahlen) um **/ if(*zeile=='A') *zeile=0; if(*zeile=='B') *zeile=1; if(*zeile=='C') *zeile=2; spalte-=1; }while(pruefeFeld(feld,zeile,spalte)==1); /** Beschreibt das entsprechende Feld **/ feld[*zeile][*spalte]='X'; system("cls"); } if(player=='O'){ do{ do{ printf("\n \t\tSpieler O Ihre Eingabe -> "); gets(enter); ok=sscanf(enter,"%d%d%c",zeile,spalte,&dummy); }while(pruefeEingabe(zeile,spalte)!=0&&dummy!='\n'); /** Wandelt Buchstaben in Positionen (Zahlen) um **/ if(*zeile=='A') *zeile=0; if(*zeile=='B') *zeile=1; if(*zeile=='C') *zeile=2; spalte-=1; }while(pruefeFeld(feld,zeile,spalte)==1); /** Beschreibt das entsprechende Feld **/ feld[*zeile][*spalte]='O'; system("cls"); } } void eingabeUndPc(char feld[3][3],int *zeile, int *spalte, char player){ char enter[3], dummy; int ok; if(player=='X'){ do{ do{ printf("\n \t\tSpieler X Ihre Eingabe -> "); gets(enter); ok=sscanf(enter,"%d%d%c",zeile,spalte,&dummy); }while(pruefeEingabe(zeile,spalte)!=0&&dummy!='\n'); /** Wandelt Buchstaben in Positionen (Zahlen) um **/ if(*zeile=='A') *zeile=0; if(*zeile=='B') *zeile=1; if(*zeile=='C') *zeile=2; spalte-=1; }while(pruefeFeld(feld,zeile,spalte)==1); /** Beschreibt das entsprechende Feld **/ feld[*zeile][*spalte]='X'; system("cls");} if(player=='O'){ printf("\n \t\tDer Computer ist dran! "); time_t t; int i,j; do{ time(&t); srand((unsigned int)t); /** Zufallsgenerator initialisieren **/ i=0;j=0;t=0; /** Erzeugung der Zufallszall für die Position in der Zeile **/ for (i=0;i<9;i++) if(feld[0][0]!=0&&feld[0][1]!=0&&feld[0][1]!=0) *zeile=rand()%3+1; *zeile=rand()%3+0; /** Erzeugung der Zufallszall für die Position in der Spalte **/ for (j=0;j<9;j++) if(feld[0][0]!=0&&feld[1][0]!=0&&feld[2][0]!=0) *spalte=rand()%3+1; *spalte=rand()%3+1; }while(pruefeFeldPc(feld,zeile,spalte)==1); /** Beschreibt das entsprechende Feld **/ feld[*zeile][*spalte]='O'; system("cls"); } } int pruefeEingabe(int *zeile, int *spalte){ if(*zeile>='A'&&*zeile<='C'&&*spalte>=1&&*spalte<=3) return 0; else return 1; } int pruefeFeld(char feld[3][3],int *zeile,int *spalte){ /** Überprüft ob auf dem geplannten, zu beschreibenden Feld nicht bereits ein Wert gespeichert ist **/ if(feld[*zeile][*spalte]!=0){ printf("Position schon vergeben!\n"); return 1; } else return 0; } int pruefeFeldPc(char feld[3][3],int *zeile,int *spalte){ /** Überprüft ob auf dem geplannten, zu beschreibenden Feld nicht bereits ein Wert gespeichert ist **/ if(feld[*zeile][*spalte]!=0){ return 1; } else return 0; } int checkDiagonal(char feld[3][3]){ char help1,help2,help3; /** Überprüft ob drei gleiche in einer Diagonale sind **/ help1=feld[0][0]; help2=feld[1][1]; help3=feld[2][2]; if(help1==help2&&help2==help3&&help1==help3){ if(help1=='X'){ printf("Spieler X gewinnt\n"); system("PAUSE"); return 2; } if(help1=='O'){ printf("Spieler O gewinnt\n"); system("PAUSE"); return 1; } } /** Überprüft ob drei gleiche in einer Diagonale sind **/ help1=feld[0][2]; help2=feld[1][1]; help3=feld[2][0]; if(help1==help2&&help2==help3&&help1==help3){ if(help1=='X'){ printf("Spieler X gewinnt\n"); system("PAUSE"); return 2; } if(help1=='O'){ printf("Spieler O gewinnt\n"); system("PAUSE"); return 1; } } return 0; } int checkZeile(char feld[3][3]){ char help1,help2,help3; int i; /** Überprüft ob drei gleiche in einer Zeile sind **/ for(i=0;i<=3;i++){ help1=feld[i][0]; help2=feld[i][1]; help3=feld[i][2]; if(help1==help2&&help2==help3&&help1==help3){ if(help1=='X'){ printf("Spieler X gewinnt\n"); system("PAUSE"); return 2; } if(help1=='O'){ printf("Spieler O gewinnt\n"); system("PAUSE"); return 1; } } } return 0; } int checkSpalte(char feld[3][3]){ char help1,help2,help3; int i; /** Überprüft ob drei gleiche in einer Spalte sind **/ for(i=0;i<=3;i++) { help1=feld[0][i]; help2=feld[1][i]; help3=feld[2][i]; if(help1==help2&&help2==help3&&help1==help3){ if(help1=='X'){ printf("Spieler X gewinnt\n"); system("PAUSE"); return 2; } if(help1=='O'){ printf("Spieler O gewinnt\n"); system("PAUSE"); return 1; } } } return 0; } int checkUnentschieden(int zuege, int zuege_x,int zuege_o){ /** Überprüft ob ein Spieler noch geweinnen könnte **/ if(zuege>=9||zuege_o>=5||zuege_x>=5){ printf("Unentschieden!\n"); system("PAUSE"); return 1; } return 0; }
-
Hello World schrieb:
so und jetzt passiert genau ..... gar nix mehr -.-
und das bei 0 errors und 0 warnings -.-'Dann jag das Ding durch einen Debugger und guck was passiert! Niemand schaut sich 500 Zeilen Code durch.
-
So hab jez noch mal meinen Lehrer gefragt .... es gibt da eine ganz simple Lösung
-->
stattfeld[zeile][spalte]='X';
einfach so
feld[(int)zeile][spalte]='X';
einfach ein (int) davor schreiben und .... 0 errors 0 warnings und das programm läuft
Danke für eure Mühe und die Tipps
-
Der Vorschlag von deinem Lehrer heißt cast
aber am 16:19:16 15.06.2011DirkB schrieb:
Was kann man da machen? (achte auf das fett gedruckte)
DirkB schrieb:void eingabe(char feld[3][3],[b]int [/b]zeile, int spalte)
denn:
DirkB schrieb:
Zeichen (Buchstaben) passen auch in ein int.oder du
castest
zeile nach int. Dann ist der Compiler auch ruhig.Wenn du die Antworten nicht durchliest ist das dein Problem.
Wer hat überhaupt mit dem * für Zeile und Spalte angefangen?
-
aaaaaa .... sry wusste nicht dass das casten heißt xD