4-Gewinnt Schleifen-Problem
-
Hi
Ich habe versucht 4 Gewinnt zu programmieren. Bis jetzt habe ich die Oberfläche
und die Möglichkeit geschaffen ein X oder eine 0 zu setzenMein Problem ist eigentlich simpel:
Ich habe versucht dashier zu einer for-schleife zu machen
gotoxy(xn[1],yn[1]); if (z[1] %2==0) { cprintf("0"); } else { cprintf("X"); } gotoxy(xn[2],yn[2]); if (z[2] %2==0) { cprintf("0"); } else { cprintf("X"); } gotoxy(xn[3],yn[3]);das sah dan so aus:
for (i=1;i>=28;i++) { gotoxy(xn[i],yn[i]); if (z[i] %2==0) { cprintf("0"); } else { cprintf("X"); }Das Funktioniert aber nur begrenzt weil ich beim nächsten Tastendruck das eben gesetzte Zeichen nicht mehr habe

ok hier die Klarheit
#include <cstdlib> //initialisierung #include <iostream> //initialisierung #include <conio2.h> //initialisierung #include <windows.h> //initialisierung #include <winuser.h> using namespace std; void Spielfeld() //void definieren { clrscr(); //löscht Oberfläche textcolor(WHITE); //Textfarbe gotoxy(25,2); //setzt Cursor an Stelle x,y cprintf("4 - G e w i n n t"); //Textausgabe gotoxy(1,4); //setzt Cursor an Stelle x,y cprintf("\n |___|___|___|___|___|___|___|" "\n | | | | | | | |" "\n | | | | | | | |" "\n | | | | | | | |" "\n | | | | | | | |" "\n | | | | | | | |" "\n | | | | | | | |" "\n | | | | | | | |" "\n |___|___|___|___|___|___|___|" "\n | 1 | 2 | 3 | 4 | 5 | 6 | 7 |"); gotoxy(55,20); cprintf("Ende mit ESC"); } int x=25; //Variable definieren int y=5; //Variable definieren char Taste; //Variable definieren int abbruch=0; int xn[30]={-1}; //xn = x neu int yn[30]={-1}; //yn = y neu int z[30]; int i=1; int zeichen=1; int a=1; int b=2; //Variable definieren int main(int argc, char *argv[]) { //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////Variable X bewegen//////////////////////////////////////////// Spielfeld(); //void Definition benutzen do //Beginn do-while Schleife { textcolor(LIGHTRED); //Textfarbe gotoxy(x,y); //setzt Cursor an Stelle x,y if(kbhit()) //if Funktion { Taste=getch(); //warte auf Tastendruck switch(Taste) //Beginn switch-Funktion { case 'a': clrscr(); //löscht Oberfläche Spielfeld(); //void Definition benutzen x=x-4; break; case 'd': clrscr(); //löscht Oberfläche Spielfeld(); //void Definition benutzen x=x+4; break; case 's': clrscr(); //löscht Oberfläche Spielfeld(); //void Definition benutzen y=y+2; break; case 27: return EXIT_SUCCESS; //Beenden des Programms break; } /////////////////////////////Spielfeldbegrenzung/////////////////////////////////////////// if(y<5) y=5; //von Bildschirmposition(y-Achse) else if(y>13) y=13; //bis Bildschormposition(y-Achse) if(x<13) x=13; //von Bildschirmposition(x-Achse) else if(x>37) x=37; //bis Bildschormposition(x-Achse) /////////////////////////////Positionierung/////////////////////////////////////////// if (Taste==13) { zeichen++; if(zeichen>2) { zeichen=1; } i++; } } if (i %2==0) { gotoxy(x,y); cprintf("X"); } else { gotoxy(x,y); cprintf("0"); } gotoxy(50,10); cprintf("%i,%i",x,y); ////////////////////////////////////Übergabebereich////////////////////////////////// if(x==13 & y==13 & Taste==13) { xn[1]=x; yn[1]=y; z[1]=zeichen; x=25; y=5; } if(x==17 & y==13 & Taste==13) { xn[2]=x; yn[2]=y; z[2]=zeichen; x=25; y=5; } if(x==21 & y==13 & Taste==13) { xn[3]=x; yn[3]=y; z[3]=zeichen; x=25; y=5; } if(x==25 & y==13 & Taste==13) { xn[4]=x; yn[4]=y; z[4]=zeichen; x=25; y=5; } if(x==29 & y==13 & Taste==13) { xn[5]=x; yn[5]=y; z[5]=zeichen; x=25; y=5; } if(x==33 & y==13 & Taste==13) { xn[6]=x; yn[6]=y; z[6]=zeichen; x=25; y=5; } if(x==37 & y==13 & Taste==13) { xn[7]=x; yn[7]=y; z[7]=zeichen; x=25; y=5; } if(x==13 & y==11 & Taste==13) { xn[8]=x; yn[8]=y; z[8]=zeichen; x=25; y=5; } if(x==17 & y==11 & Taste==13) { xn[9]=x; yn[9]=y; z[9]=zeichen; x=25; y=5; } if(x==21 & y==11 & Taste==13) { xn[10]=x; yn[10]=y; z[10]=zeichen; x=25; y=5; } if(x==25 & y==11 & Taste==13) { xn[11]=x; yn[11]=y; z[11]=zeichen; x=25; y=5; } if(x==29 & y==11 & Taste==13) { xn[12]=x; yn[12]=y; z[12]=zeichen; x=25; y=5; } if(x==33 & y==11 & Taste==13) { xn[13]=x; yn[13]=y; z[13]=zeichen; x=25; y=5; } if(x==37 & y==11 & Taste==13) { xn[14]=x; yn[14]=y; z[14]=zeichen; x=25; y=5; } if(x==13 & y==9 & Taste==13) { xn[15]=x; yn[15]=y; z[15]=zeichen; x=25; y=5; } if(x==17 & y==9 & Taste==13) { xn[16]=x; yn[16]=y; z[16]=zeichen; x=25; y=5; } if(x==21 & y==9 & Taste==13) { xn[17]=x; yn[17]=y; z[17]=zeichen; x=25; y=5; } if(x==25 & y==9 & Taste==13) { xn[18]=x; yn[18]=y; z[18]=zeichen; x=25; y=5; } if(x==29 & y==9 & Taste==13) { xn[19]=x; yn[19]=y; z[19]=zeichen; x=25; y=5; } if(x==33 & y==9 & Taste==13) { xn[20]=x; yn[20]=y; z[20]=zeichen; x=25; y=5; } if(x==37 & y==9 & Taste==13) { xn[21]=x; yn[21]=y; z[21]=zeichen; x=25; y=5; } if(x==13 & y==7 & Taste==13) { xn[22]=x; yn[22]=y; z[22]=zeichen; x=25; y=5; } if(x==17 & y==7 & Taste==13) { xn[23]=x; yn[23]=y; z[23]=zeichen; x=25; y=5; } if(x==21 & y==7 & Taste==13) { xn[24]=x; yn[24]=y; z[24]=zeichen; x=25; y=5; } if(x==25 & y==7 & Taste==13) { xn[25]=x; yn[25]=y; z[25]=zeichen; x=25; y=5; } if(x==29 & y==7 & Taste==13) { xn[26]=x; yn[26]=y; z[26]=zeichen; x=25; y=5; } if(x==33 & y==7 & Taste==13) { xn[27]=x; yn[27]=y; z[27]=zeichen; x=25; y=5; } if(x==37 & y==7 & Taste==13) { xn[28]=x; yn[28]=y; z[28]=zeichen; x=25; y=5; } /* for (i=1;i>=28;i++) { gotoxy(xn[i],yn[i]); if (z[i] %2==0) { Funktioniert leider nicht sonst könnte ich cprintf("0"); mir alles hier drunter sparen } else { cprintf("X"); } }*/ gotoxy(xn[1],yn[1]); if (z[1] %2==0) { cprintf("0"); } else { cprintf("X"); } gotoxy(xn[2],yn[2]); if (z[2] %2==0) { cprintf("0"); } else { cprintf("X"); } gotoxy(xn[3],yn[3]); if (z[3] %2==0) { cprintf("0"); } else { cprintf("X"); } gotoxy(xn[4],yn[4]); if (z[4] %2==0) { cprintf("0"); } else { cprintf("X"); } gotoxy(xn[5],yn[5]); if (z[5] %2==0) { cprintf("0"); } else { cprintf("X"); } gotoxy(xn[6],yn[6]); if (z[6] %2==0) { cprintf("0"); } else { cprintf("X"); } gotoxy(xn[7],yn[7]); if (z[7] %2==0) { cprintf("0"); } else { cprintf("X"); } gotoxy(xn[8],yn[8]); if (z[8] %2==0) { cprintf("0"); } else { cprintf("X"); } gotoxy(xn[9],yn[9]); if (z[9] %2==0) { cprintf("0"); } else { cprintf("X"); } gotoxy(xn[10],yn[10]); if (z[10] %2==0) { cprintf("0"); } else { cprintf("X"); } gotoxy(xn[11],yn[11]); if (z[11] %2==0) { cprintf("0"); } else { cprintf("X"); } gotoxy(xn[12],yn[12]); if (z[12] %2==0) { cprintf("0"); } else { cprintf("X"); } gotoxy(xn[13],yn[13]); if (z[13] %2==0) { cprintf("0"); } else { cprintf("X"); } gotoxy(xn[14],yn[14]); if (z[14] %2==0) { cprintf("0"); } else { cprintf("X"); } gotoxy(xn[15],yn[15]); if (z[15] %2==0) { cprintf("0"); } else { cprintf("X"); } gotoxy(xn[16],yn[16]); if (z[16] %2==0) { cprintf("0"); } else { cprintf("X"); } gotoxy(xn[17],yn[17]); if (z[17] %2==0) { cprintf("0"); } else { cprintf("X"); } gotoxy(xn[18],yn[18]); if (z[18] %2==0) { cprintf("0"); } else { cprintf("X"); } gotoxy(xn[19],yn[19]); if (z[19] %2==0) { cprintf("0"); } else { cprintf("X"); } gotoxy(xn[20],yn[20]); if (z[20] %2==0) { cprintf("0"); } else { cprintf("X"); } gotoxy(xn[21],yn[21]); if (z[20] %2==0) { cprintf("0"); } else { cprintf("X"); } gotoxy(xn[22],yn[22]); if (z[22] %2==0) { cprintf("0"); } else { cprintf("X"); } gotoxy(xn[23],yn[23]); if (z[23] %2==0) { cprintf("0"); } else { cprintf("X"); } gotoxy(xn[24],yn[24]); if (z[24] %2==0) { cprintf("0"); } else { cprintf("X"); } gotoxy(xn[25],yn[25]); if (z[25] %2==0) { cprintf("0"); } else { cprintf("X"); } gotoxy(xn[26],yn[26]); if (z[26] %2==0) { cprintf("0"); } else { cprintf("X"); } gotoxy(xn[27],yn[27]); if (z[27] %2==0) { cprintf("0"); } else { cprintf("X"); } gotoxy(xn[28],yn[28]); if (z[28] %2==0) { cprintf("0"); } else { cprintf("X"); } } while(!abbruch); //Ende do-while Schleife getch(); //warte auf Tastendruck return EXIT_SUCCESS; //Ende des Programms }Ich würde mich sehr freuen wenn mir jemand bei den Schleifen helfen könnte
mfg
Megawurrrm
-
Megawurrrm schrieb:
ok hier die Klarheit
Hä? Welche Klarheit???
Ich versteh deinen Code nicht, ist auch viel zu viel, und ich versteh nicht, was du willst und was nicht geht. Ich seh nur, dass was du geschrieben hast, so keinen Sinn macht. Das ganze "if (x == ... && y == ... && taste == )" kann und MUSS man eliminieren. Danach können wir vielleicht weiterreden, wenn sich dein Problem dann bei einem sinnvolleren Aufbau nicht eh von selbst löst.
-
genau die möchte ich weg haben
Eine idee wie ich daraus ne sinvolle schleife mache?
-
for (i=1;i<=28;i++)<= anstatt >=

-
danke sehr
