Problem mit Ausgabe einer Array



  • hey leute
    ich programmiere momentan zur übung(bin noch relativ ein anfänger) ein tic tac toe programm für die konsole.
    das besondere daran soll sein, dass nicht wie normal ein 3x3 feld zu sehen ist, sondern ein 10x10 feld.
    jedoch gibt er nur die erste zeile richitg aus und der rest zeigt entweder nichts an(auch wenn das feld eigentlich beschirben ist) oder irgendein zeichen aus dem ASCII zeichensatz.
    hier die funktion zur ausgabe des spielfeldes:

    void FeldAnzeigen(int Seitenlaenge)
    {
       if(Seitenlaenge > 10) //Dieser befehlsblock ist ncih wichtig 
       {
              cout << "Fehler: Feld ist zu Gross!" << endl << endl;
              system("pause");
              system("cls");               
       }
    
       else //in diesem teil tritt der fehler auf
       {
         short x = 0;
         short y = 0;
    
         system("cls"); 
    
         for(short i=0;i<Seitenlaenge;i++)
         {
                 cout << " " << i;          //Nummerierung der x-Achse
         }
    
         cout << " -X" << endl;
         cout << y;
    
         for(short n=0;n<Seitenlaenge;n++)
         {
                   for(short k=0;k<Seitenlaenge;k++)  
                   {
                        cout << SpielFeld[x][y] << "|";        //Ausgabe einer Spielfeldzeile
                        x++; 
                   } 
                   y += 1;
    
                   if(n==Seitenlaenge-1)
                        cout << endl << "Y" << endl << endl;
                   else 
                        cout << endl << y;         //Nummerierung der y-Achse    
         }
       }   
    }
    

    ich find da keinen fehler, auch keinen logikfehler. vielleicht wisst ihr was hier falsch ist.
    danke schon mal im vor raus!
    mfg daniel



  • Du solltest dein x auch vor jedem inneren Schleifendurchlauf wieder
    auf 0 setzen.

    EDIT: Zeile 26.5: x=0;

    Aber eigentlich kannst du statt x und y, n und k verwenden 😉



  • for(short k=0;k<Seitenlaenge;k++)  
                   {
                        cout << SpielFeld[x][y] << "|";        //Ausgabe einer Spielfeldzeile
                        x++;
                   }
                   y += 1;
    
                   if(n==Seitenlaenge-1)
                        cout << endl << "Y" << endl << endl;
                   else
                        cout << endl << y;         //Nummerierung der y-Achse
    

    Du setzt nirgendwo wieder x = 0. Nachdem du die erste Zeile durchgegangen bist, ist x immer noch = Seitenlaenge. Du willst ja aber wieder vorne beginnen.

    Wenn wir aber schon dabei sind: Wozu brauchst du n und k ? Das sind doch genau die Werte von y und x !



  • Danke für die schnelle hilfe!
    ich hatte erst für n und k, y und x eingesetzt nur dann hab ich versucht den fehler zu finden und das problem zu lösen und da hab ich die ersetzt.
    aber jetzt läuft es!
    danke 🙂


Anmelden zum Antworten