TicTacToe - Array-Problem



  • Hey Leuts!

    Ich habe vor ein paar Tagen mit C++ angefangen (gut kenntnisse in PHP, MySQL, JavaScript, CSS, HTML, AJAX + VB waren gegeben) und habe mir dann gestern vrogenommen ein TicTacToe zu programmieren, ich war schon ziemlich weit gekommen als ich feststellte, dass ich in mein 2 dimensionales Array, was die Werte in dem TicTacToe Feld darstellt, nichts in Array[2][*] schreiben konnte, es gab dann jeweils unterschiedliche Fehler (z.B. GAR KEIN Wert wurde in das Array gesetzt oder es wurden woanders Werte hingesetz).
    Einfach kurz Kompilieren (nur getestet unter Mac OS X 10.6 Snow Leopard), dann werdet ihr das Problem schnell feststellen.

    Da der Code etwas länger ist, habe ich ihn mal hier gepostet: http://pastebin.com/5espRAPk

    Danke für jede Hilfe!

    (Kritik erwünscht!)

    _________________________
    http://p-remy.bplaced.de



  • So wie ich das sehe fehlt der Aufruf von `

    char** createMatrx(int spalten, int zeilen, char zellenInhalt)`
    oder habe ich das übersehen?



  • Ich habs nur kurz überflogen, aber welchen Sinn macht es, etwas wie char** in diesem Falle konstruieren zu wollen.
    Unten gibst du Fehlermeldungen aus, wenn eine Zahl größer 3 eingegeben wurde, du hast doch nicht vor, das Spielfeld auf 4x4, 5x5 oder 10x10 Felder zu vergrößern.
    Wie wärs also einfach mit einem

    char matrix[3][3];
    


  • So würde ich es machen, wenn ich eine dynamische Feldgröße wollte:

    size_t fieldLength = 3;
    std::vector<char> field(fieldLength * fieldLength);
    
    size_t x = 0;
    size_t y = 2;
    char &cell_at_x_y = field[x + y * fieldLength];
    


  • Ich hab die Funktion createMatrix(); einfach mal gelöscht, es war wirklich schwachsinnig sie zu erstellen^^

    Was createGameField(); angeht, habe ich sie umgeschrieben, dass es einfach ausgegeben wird (also ohne Schleife und so).

    Ich glaub ich hab ein bisschen übertrieben, was dynamisch + wiederverwendtbarkeit angeht^^

    Naja funktioniert jetzt alles ^^

    Danke trotzdem nochmal an euch alle!



  • hey du sagtest kritik erwünscht.
    also pech gehabt 🙂

    c++ ist eine objekt-orientierte programmiersprache. davon sieht man in deinem code nichts 🙂
    es gibt ja nicht mal eine klasse…

    desweiteren besteht deine spiellogik aus verschachtelten schleifen. warum nicht jeden schritt in eine methode auslagern?
    dies verkleinert die methoden, macht alles überschaubarer und ist leichter zu lesen und du musst dich mit methoden und parametern befassen 🙂


Anmelden zum Antworten