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 setzen

    Mein 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 🙂


Anmelden zum Antworten