Tic Tac Toe



  • Schönen Abend liebe C++ community. Ich muss für die wöchentliche Abgabe an der Uni ein Tic Tac Toe Spiel programmieren aber habe da Schwierigkeiten mit. Ich bekomme ein Spielfeld gezeichnet und kann auch die einzelnen Felder in zwei unterschiedlichen Farben einfärben, welche zur Erkennung der beiden Spieler dient. Jedoch muss ich es noch hinbekommen, dass nach einfärben des einzelnen Feldes, sich die Farbe nicht mehr ändern darf. Und zusätzlich habe ich keinerlei Idee, wie ich den Code zur Überprüfung des Gewinners schreiben soll. Vielen Dank im Voraus !!

     #include <algoviz/SVG.hpp>
    using namespace std;
    
     AlgoViz::clear();
    
    SVG zeichnung = SVG(400,400);
    
    
    int bild[3][3] = {
    
    {-1,-1,-1},
    {-1,-1,-1},
    {-1,-1,-1}
     };
    
       Rect rects[3][3];
    
     for ( int spalte = 0 ; spalte < 3; spalte = spalte+1 ) {
    for ( int zeile = 0 ; zeile < 3; zeile = zeile+1 ) {
        
        
        rects[spalte][zeile].moveTo(spalte*100,zeile*100);
       
        rects[spalte][zeile].setWidth(100);
        rects[spalte][zeile].setHeight(100);
    
       
        bild[spalte][zeile] = 0;
        
        
        if ( bild[spalte][zeile] == 1 ) {
            rects[spalte][zeile].setFill("black");
        } else {
            rects[spalte][zeile].setFill("white");
        }
    
       
        rects[spalte][zeile].addTo(&zeichnung);
        
    }    
       ****Fettschrift****  }
    
     string taste = "";
     MouseState maus;
      bool farbe = false;
    
      AlgoViz::sendText("Beenden mit einer beliebigen Taste");
     do {
    
    taste = zeichnung.lastKey();
    
    
    maus = zeichnung.lastClick();
    
    
    if ( maus.isLegal() ) {
        if ( farbe) {
            
        
        
        int spalte = maus.x()/100;
        int zeile = maus.y()/100;
    
        
        
        
        
    
            rects[spalte][zeile].setFill("blue");
        } else {
            
        
        int spalte = maus.x()/100;
        int zeile = maus.y()/100;
            rects[spalte][zeile].setFill("red");
        } farbe = not (farbe);
    }
    
    
     } while ( taste == "" ); 
    
     AlgoViz::sendText("Ende!");


  • Frage vor dem Setzen ab, ob ein Spieler das Feld bild[spalte][zeile] belegt hat.

    Und für den Gewinner mußt du ebenfalls dieses Array abfragen (such mal hier im Forum nach TicTacToe - sollte genug Code dafür geben).

    PS: Statt bild solltest du das Array besser spielbrett oder felder (bzw. noch tictactoe_ als Prefix) nennen.


Anmelden zum Antworten