Hilfe bei einen Tic Tac Toe Feld aufbau



  • Hi Leute!
    Ich habe einen Fehler, aber nicht weis, wie ich ihn beheben kann...
    Windows 7 / Mingw / C

    Normalerweise sollte das Spielfeld ungefähr so aussehen (im kleinformat halt so wie ein TicTacToe Feld):
    | |
    -----
    | |
    -----
    | |

    Nur bei mir schauts so aus...:

    ++++++++++++++++++++█++++++++++++++++++++█++++++++++++++++++++++++++++
    ++++++++++█++++++++++++++++++++█++++++++++++++++++++++++++++++++++++++
    █++++++++++++++++++++█++++++++++++++++++++++++++++++++++++++█+++++++++
    +++++++++++█++++++++++++++++++++++++++++++++++++++█+++++++++++++++++++
    +█++++++++++++++++++++++++++++++++++++++█++++++++++++++++++++█++++++++
    ++++++++++++++++++++++++++++++█++++++++++++++++++++█++++++++++++++++++
    ++++++++++++++++++++█++++++++++++++++++++█++++++++++++++++++++++++++++
    ++++++++++█++++++++++++++++++++█++++++++++++++++++++++++++++++++++++++
    █++++++++++++++++++++█++++++++++++++++++██████████████████████████████
    ██████████████████████████████
    ++++++++++++++++++++█++++++++++++++++++++█++++++++++++++++++++++++++++
    ++++++++++█++++++++++++++++++++█++++++++++++++++++++++++++++++++++++++
    █++++++++++++++++++++█++++++++++++++++++++++++++++++++++++++█+++++++++
    +++++++++++█++++++++++++++++++++++++++++++++++++++█+++++++++++++++++++
    +█++++++++++++++++++++++++++++++++++++++█++++++++++++++++++++█++++++++
    ++++++++++++++++++++++++++++++█++++++++++++++++++++█++++++++++++++++++
    ++++++++++++++++++++█++++++++++++++++++++█++++++++++++++++++++++++++++
    ++++++++++█++++++++++++++++++++█++++++++++++++++++++++++++++++++++++++
    █++++++++++++++++++++█++++++++++++++++++██████████████████████████████
    ██████████████████████████████
    ++++++++++++++++++++█++++++++++++++++++++█++++++++++++++++++++++++++++
    ++++++++++█++++++++++++++++++++█++++++++++++++++++++++++++++++++++++++
    █++++++++++++++++++++█++++++++++++++++++++++++++++++++++++++█+++++++++
    +++++++++++█++++++++++++++++++++++++++++++++++++++█+++++++++++++++++++
    +█++++++++++++++++++++++++++++++++++++++█++++++++++++++++++++█++++++++
    ++++++++++++++++++++++++++++++█++++++++++++++++++++█++++++++++++++++++
    ++++++++++++++++++++█++++++++++++++++++++█++++++++++++++++++++++++++++
    ++++++++++█++++++++++++++++++++█++++++++++++++++++++++++++++++++++++++
    █++++++++++++++++++++█++++++++++++++++++██████████████████████████████
    ██████████████████████████████
    ++++++++++++++++++++█++++++++++++++++++++█++++++++++++++++++++++++++++
    ++++++++++█++++++++++++++++++++█++++++++++++++++++++++++++++++++++++++
    █++++++++++++++++++++█++++++++++++++++++++++++++++++++++++++█+++++++++
    +++++++++++█++++++++++++++++++++++++++++++++++++++█+++++++++++++++++++
    +█++++++++++++++++++++++++++++++++++++++█++++++++++++++++++++█++++++++
    ++++++++++++++++++++++++++++++█++++++++++++++++++++█++++++++++++++++++
    ++++++++++++++++++++█++++++++++++++++++++█++++++++++++++++++++++++++++
    ++++++++++█++++++++++++++++++++█++++++++++++++++++++++++++++++++++++++
    █++++++++++++++++++++█++++++++++++++++++██████████████████████████████
    ██████████████████████████████
    ++++++++++++++++++++█++++++++++++++++++++█++++++++++++++++++++++++++++
    ++++++++++█++++++++++++++++++++█++++++++++++++++++++++++++++++++++++++
    █++++++++++++++++++++█++++++++++++++++++++++++++++++++++++++█+++++++++
    +++++++++++█++++++++++++++++++++++++++++++++++++++█+++++++++++++++++++
    +█++++++++++++++++++++++++++++++++++++++█++++++++++++++++++++█++++++++
    ++++++++++++++++++++++++++++++█++++++++++++++++++++█++++++++++++++++++
    ++++++++++++++++++++█++++++++++++++++++++█++++++++++++++++++++++++++++
    ++++++++++█++++++++++++++++++++█++++++++++++++++++++++++++++++++++++++
    █++++++++++++++++++++█++++++++++++++++++██████████████████████████████
    ██████████████████████████████
    ++++++++++++++++++++█++++++++++++++++++++█++++++++++++++++++++++++++++
    ++++++++++█++++++++++++++++++++█++++++++++++++++++++++++++++++++++++++
    █++++++++++++++++++++█++++++++++++++++++++++++++++++++++++++█+++++++++
    +++++++++++█++++++++++++++++++++++++++++++++++++++█+++++++++++++++++++
    +█++++++++++++++++++

    Der Quellcode:

    char buffer[20];
    	int coli;
    	int rowi;
    
    	col *= 20;
    	row *= 20;
    
    	sprintf(buffer, "mode %d, %d", col + 10, row + 10);
    	system(buffer);
    
    	//coli = 1; coli <= col; coli++
    	//rowi = 1; rowi <= row; rowi++
    
    	for (rowi = 1; rowi <= row; rowi++) {
    		if (rowi % 11 != 0) {
    			for (coli = 1; coli <= col; coli++) {
    				if (coli % 21 == 0) {
    					printf("\333");
    				} else {
    					printf("+");
    				}
    			}
    		} else {
    			for (coli = 1; coli <= col; coli++) {
    				printf("\333");
    			}
    			printf("\n");
    		}
    	}
    }
    

    Kann mir einer sagen, warum?


  • Mod

    Ich verbessere das mal etwas. Um das Programm bei mir ausführen zu können, musste ich übrigens deinen systemabhängigen Kram rausschmeißen:

    #include <stdio.h>
    
    int main()
    {
      int col;   // Ungarische Notation ist sowas von 1970
      int row;
      int max_col = 62;
      int max_row = 32;
    
      for (row = 1; row <= max_row; row++) 
        {
          if (row % 11 != 0) 
            {
              for (col = 1; col <= max_col; col++)
                {
                  if (col % 21 == 0) {
                    putchar('#');  // Warum ein Monstrum wie printf bemühen fur ein einzelnes Zeichen?
                  } 
                  else 
                    {
                      putchar('+');
                    }
                }
              // Hier noch ein Umbruch
              putchar('\n');
            } 
          else 
            {
              for (col = 1; col <= max_col; col++) 
                {
                  putchar('#');
                }
              putchar('\n');
            }
        }
    }
    

    P.S.: Du scheinst übrigens gerade den typischen Anfängerfehler von Form vor Funktion zu machen. Kümmer dich lieber erst einmal um die Programmlogik, bevor du tolle grafische Ausgaben machst. Bei Programmlogik lernst du viel mehr, dolle Ausgaben zu machen ist so überflüssig wie die Schönschreibnote in der Grundschule.



  • Mal ne Frage wenn du das hingekriegt hast, willst du dann einfach nur das Spielfeld ausprinten, oder willst du dann auch wirklich spielen können? d.H. Steine setzen usw? :p



  • danke seppj!
    ich konnte es so auch nicht entziffern!



  • marvNN schrieb:

    Mal ne Frage wenn du das hingekriegt hast, willst du dann einfach nur das Spielfeld ausprinten, oder willst du dann auch wirklich spielen können? d.H. Steine setzen usw? :p

    Wenn ich Zeit dazu habe, in der Schule machen wir wahrscheinlich ein 4-Gewinnt.
    Und ich habe mir halt gedacht, ich könnte doch auch ein TicTacToe erstellen, da das ja eine gute Vorübung sein kann

    Silahel schrieb:

    danke seppj!
    ich konnte es so auch nicht entziffern!

    Warum konntest du es nicht verbessern?

    SeppJ schrieb:

    int col;   // Ungarische Notation ist sowas von 1970
    

    Ungarische Notation??


  • Mod

    weini37 schrieb:

    Ungarische Notation??

    Beantworte jemandem eine Frage und er wird mehr Fragen stellen. Zeige jemandem Google und du hilfst ihm für den Rest seines Lebens:
    Google: Ungarische Notation

    Ok, hier ist das sogar etwas, dass ich mal "umgekehrt ungarische Notation" taufe (+1 Nerdpunkt für denjenigen, der die Anspielung erkennt 😉 ), aber das ändert doch nichts da dran, dass da kryptische Buchstabenkürzel im Variablennamen sind.



  • weini37 schrieb:

    marvNN schrieb:

    Mal ne Frage wenn du das hingekriegt hast, willst du dann einfach nur das Spielfeld ausprinten, oder willst du dann auch wirklich spielen können? d.H. Steine setzen usw? :p

    Wenn ich Zeit dazu habe, in der Schule machen wir wahrscheinlich ein 4-Gewinnt.
    Und ich habe mir halt gedacht, ich könnte doch auch ein TicTacToe erstellen, da das ja eine gute Vorübung sein kann

    Silahel schrieb:

    danke seppj!
    ich konnte es so auch nicht entziffern!

    Warum konntest du es nicht verbessern?

    SeppJ schrieb:

    int col;   // Ungarische Notation ist sowas von 1970
    

    Ungarische Notation??

    Moin Weini!
    4-Gewinnt und Tic-Tac-Toe sind tatsächlich recht schicke Übungen für den Umgang mit Abfragen, Schleifen, eventuell sogar einem Zeiger usw.

    Ich empfehle dir dich komplett von dem Grafischen erstmal zu distanzieren (Wie Seppj ja schon sagte). Mach es doch ganz einfach, ein eindimensionales Array.

    #include <stdio.h>
    
    int main()
    {
        int spielfeld[9];
        int hoehe = 3;
        int breite = 3;
        int x;
        int y;
    
        // Grafische Darstellung Anzahl der Spalten
        for(x = 0; x < breite; x++)
        {
            printf(" %d  ", x);
        }
        //Ende anzahl spalten
    
        printf("\n");
    
        //Grafische striche zur verschönerung :-)
        for(x = 0; x < breite; x++)
        {
            printf("- - ");
        }
    
        printf("\n");
    
        // Eigentliche Spielfelderstellung
        for(y = 0; y < hoehe; y++) 
        {
             for(x = 0; x < breite; x++)
             {
                 spielfeld[y*x] = 0; // Deine Leeren Spielfeldfelder sind hier 0, kannst sie natürlich so machen wie du willst
                 printf(" %d  ", spielfeld[y*x]);
             }
             //Grafische darstellung anzahl der Zeilen
             printf("| %d", y);
             // Grafische Darstellung anzahl der zeilen ende
    
             //Printf hier "wichtig", es macht dir einen Zeilenumbruch nach einer abgeschlossenen Reihe (Also in dem fall nach 3 0en), dient aber eigentlich auch nur zur Darstellung.
             printf("\n");
        }
        // Spielfelderstellung Ende
    
        // Verschönerung die zweite :-)
        for(x = 0; x < breite; x++)
        {
            printf("- - ");
        }
    
        printf("\n");
    
        return 0;
    

    So, schaumal. da musst du dir um die Grafik schonmal gar keine Gedanken mehr machen! 👍

    ➡ Du brauchst jetzt nur noch vom User 2 Werte fuer Spalte und Zeile, und setzt dann den Stein!
    ➡ dann brauchst du noch etwas um zu Überprüfen ob der Spieler gewonnen hat. (Nach jedem Zug)
    ➡ Wenn du dann noch bock auf zeiger hast, kannst du ja am Anfang des spieles den Benutzer Fragen, wie groß er sein Spielfeld haben will. Bei tic tac toe ist klar 3x3, aber man kann das ja ein bisschen Erweitern! 😃

    ⚠ Später beim 4-Gewinnt wirst du nur noch eine Benutzereingabe erwarten, nämlich die der Spalte. (Wenn dus dir mal im wahren leben vorstellst: Wirst du auch nur oben rein.)
    Da wird dann noch ne kleine For schleife dazu kommen, nämlich zeile-1 falls schon ein stein liegt. denn der stein soll ja schließlich auf den Stein drauffallen, und nicht "in den anderen Stein rein." 👍

    Grüße 😉


Anmelden zum Antworten