Tic Tac Toe von Main in viele Funktionen Hilfe



  • Dieser Beitrag wurde gelöscht!


  • Du hast viel zu viele Variablen. Deine Variablen haben keine guten Namen (was bedeuten g, j, i, r, q, x?) - Vergib aussagekräftige Namen! Einbuchstaben-Namen wie int/size_t i, j sind ausschließlich innerhalb von kurzen Schleifen und bei x und y für Koordinaten ok - aber ansonsten schreib aus, was gemeint ist.
    Deine Funktionen sind viel zu lang und tun viel zu viel. Vor allem solltest du GAR KEINE globalen Variablen verwenden. Stattdessen wichtige Dinge an die Funktionen per Parameter übergeben und den Return-Wert verwenden.

    Sorry, dass das so allgemein ist, aber ich kann hier keinen vollständigen Kurs geben 😞


  • Mod

    Ich kann da auch nicht so viel erklären, wie nötig wäre, aber mal anders gefragt: Denkst du, dass zum Beispiel bei einem Schachprogramm die Programmierer allen 64 Feldern einzelne Namen gegeben haben, und dann alle möglichen Züge einzeln ausgeschrieben haben? Oder dass bei einer Rechtschreibkorrektur alle existierenden Worte einzeln in einer großen if-Bedingung stehen?

    Wohl kaum. Solche Dingen werden, nun ja, programmiert. Und das ist auch kein abgehobenes Hexenwerk, für das man lange gelernt haben muss. Mit ein paar einfachen Schleifen und Feldern kann man schon sehr viel erreichen. Die du ja schon offensichtlich kennst, denn du benutzt sie stellenweise. Wie lernst du derzeit? Es sieht nämlich so aus, als hätte dir jemand die Mittel gegeben, ohne zu erklären, wie man sie sinnvoll einsetzt, und das ist nicht gut für dich.

    PS: Das hier ist von dir, oder? https://www.c-plusplus.net/forum/topic/352797/tic-tac-toe
    Bei dem Thread hat leider ein dummer Troll, Labude_Fabian, dazwischen gefunkt, bevor ich ihn bannen konnte. Aber an sich stehen da unter den ersten Antworten auch jede Menge gute Hinweise, die du beachten solltest, obwohl der Thread dann später entgleist ist. Ignoriere einfach Labude_Fabian und alle Antowrten, die auf ihn eingehen.





    1. @MadDevil:
      Sauber, dass du deine Frage gelöscht hast. Das Forum dient dazu, Wissen zur Verfügung zu stellen und indem du deinen Beitrag gelöscht hast ist der Thread hier sinnlos geworden. Durch dieses Verhalten motivierst du andere, nicht mehr auf deine Fragen zu antworten. Und auch wenn dein Quelltext bemängelt wird kann er trotzdem (nicht böse gemeint) als schlechtes Beispiel dienen um zu zeigen, wie man´s besser macht.

    2. @Irishman:
      Hab den Quelltext mal überflogen und an der Stelle abgehakt, wo zum Bestimmen der Zeile und Spalte 9 if-Abfragen benutzt werden, wo man mit zwei Zeilen auskommt:

    unsigned int const row = digit / 3; // falls digit von 0-8, ansonsten (digit -1) / 3 für digit von 1-9
    unsigned int const col = digit % 3; // siehe oben
    
    if( row > 2 || col > 2 )
    {
       // ungültige Position
    }
    

Anmelden zum Antworten