vier gewinnt, probleme mit vektor
-
Hallo,
ich bin gerade dabei vier gewinnt zu proggn. Aber ich bin schon am verzweifeln,ich hab einen zweidimensionalen vektor in dem man 0,1 oder 2 gespeichert sein kann. 1 u. 2 stehn für die Spieler. Nur leider werden immer die ersten 3 plätze des Vektors überschrieben, wenn ich sie einlesen will, bei den anderen stellen funktioniert es aber. Bei vier gewinnt ist es ja so wenn schon etwas reingeworfen wurde dann muss es oberhalb drauf fallen. Ich versteh einfach nicht warum es bei den ersten drei nicht funktioniert, und bei den anderen schon.
vielleicht kann mir jemand helfen, danke im voraus
int main() { Matrix mat={0}; char spalte,spieler=1, won=0; do { printf("\nVier Gewinnt\n\n"); printf("Spieler %d ist dran", spieler); printf("\nSpalte(1-7): "); scanf("%d", &spalte); spalte--; setzeSpalte(mat, spieler, spalte); writeMatrix(m); if(won==1) { printf("\n\nSpieler %d hat gewonnen", spieler); break; } if(spieler==1) { spieler=2; continue; } if(spieler==2) { spieler=1; continue; } }while(won!=1); printf("\n"); system("pause"); } void setzeSpalte(Matrix m, char spieler, char spalte) { for(int i=0;i<MAXREIHE;i++) { if(m[i][spalte]==0) { m[i][spalte]=spieler; break; } } } void writeMatrix(Matrix m) { for(int i=MAXREIHE-1;i!=-1;i--) { printf("\n"); for(int j=0;j<MAXSPALTE;j++) { printf(" %d ", m[i][j]); } } }
-
Erstmal zu etwas ganz unschönem in deinem Code. Schmeiß gleich mal das system("pause") raus. Wenn du eine Eingabe erzwingen willst, gibts mehr als genügend Varianten, die um ein vielfaches besser sind.
Um dein Problem zu lösen, empfehle ich dir dich mal mit dem Debugger vertraut zu machen. Es ist dein bester Freund, wenn es um Fehlersuche geht.
Du hast eine brenzlige Stelle in deinem Code und zwar nachdem du spalte einliest. Hier solltest du noch eine Abprüfung einbauen, ob der Spieler auch wirklich eine Zahl zwischen 1 und 7 eingegeben hat. Du kannst ja mal ausprobieren was so passiert, wenn du eine andere Zahl eingibst.
-
ich habe deinen code mal ausprobiert. wenn Matrix als
typedef int Matrix[MAXREIHE][MAXSPALTE];
deklariert ist funktioniert das programm einwandfrei. der fehler muß woanders liegen.