Snake:D



  • Wie dus besser machen kannst:
    Eine Klasse map, die verwaltet die Map.
    Darauf agiert eine Klasse snake.
    Und gewöhn dir bitte dieses C davor ab, das ist einfach nur... blöd.



  • SeppJ schrieb:

    Du hast die "ein Wurstbrot ist ein Supermarkt"-Krankheit. Hast du Bücher von Jürgen Wolf gelesen?

    Falls dir der Begriff nichts sagt: Total vermurkstes Design durch Missbrauch von Vererbung.

    Ja, das dachte ich mir. Jürgen Wolf sagt mir nichts...(jetzt nachm google, ja ich habe mal mit galileo computing mir c etwas näher gebracht, für die Uni)
    Was hätte ich denn anders machen sollen. Also ich weiß da gibt es bestimmt viel. Aber durch die Vererbung schien mir das alles relativ einfach zu sein.
    Hätte ich das mit der Vererbung lieber sein lassen und einfach Schnittstellen erstellt?
    Ich will es halt besser machen, deshalb bitte etwas konkreter, wenns geht 😃
    Dankeschön!

    Wie dus besser machen kannst:
    Eine Klasse map, die verwaltet die Map.
    Darauf agiert eine Klasse snake.
    Und gewöhn dir bitte dieses C davor ab, das ist einfach nur... blöd.

    Also das mit dem C hab ich nur von der Uni, dachte es sei sinvoll...
    Wenn du sagst, verwaltet die Map, dann macht sie alles von wegen Crash oder das Essen usw.? Darauf agiert eine Klasse Snake, im Sinne von einer Vererbung?

    EDIT: Meint ich sollte es nochmal machen, aber diesmal versuchen es besser zu machen, oder lieber an ein anderes Projekt wagen?



  • Aknayirp schrieb:

    Wie dus besser machen kannst:
    Eine Klasse map, die verwaltet die Map.
    Darauf agiert eine Klasse snake.
    Und gewöhn dir bitte dieses C davor ab, das ist einfach nur... blöd.

    Also das mit dem C hab ich nur von der Uni, dachte es sei sinvoll...
    Wenn du sagst, verwaltet die Map, dann macht sie alles von wegen Crash oder das Essen usw.? Darauf agiert eine Klasse Snake, im Sinne von einer Vererbung?

    Nein, nicht mit einer Vererbung. Eine Vererbung steht für eine ist-ein Beziehung.
    Ist Snake eine Map? Nein.
    Ich geb dir mal ein denkbares Interface vor, dann verstehst du vielleicht wie ich das meine:

    class map
    {
    public:
        // Konstruktoren...
    
        void update(); // updated die Map, indem dort Essen und so hinzugefügt werden
        void draw(); // zeichnet die Map auf dem Bildschirm
    };
    
    class snake
    {
    public:
        // Konstruktoren
    
        void update(map &m); // nimmt die Map als Referenz, d.h. veränderbar
                             // setzt an den Positionen der Schlange die Tiles entsprechend, checkt Kollision, etc.
    };
    
    int main()
    {
        map m;
        snake s;
    
        while (!game_over)
        {
            m.update();
            s.update(m);
            m.draw();
        }
    }
    

    Ist natürlich noch ausbaufähig.



  • Eine Vererbung steht für eine ist-ein Beziehung. 
    Ist Snake eine Map? Nein.
    

    Jaaa richtig. So hatte ich das auch gelernt, aber hab das heute wohl verdrängt. Aber macht natürlich Sinn.
    Du hast es jetzt hier "void update(map &m)" gesetzt, damit beim Snake update auch Zugriff auf die Klasse map hast? Wenn ja, worauf hast du dann alles Zugriff?

    Vielen Dank für die Hilfe 👍
    MfG
    Aknayirp

    EDIT: Noch ne ganz andere Frage: Wenn ich Snake.exe aufm Laptop starte(hab es auch hier drauf geschrieben), dann ist das Spiel langsam und aufm Rechner viel schneller. Woran kann das liegen?



  • Auf alles public.
    Deshalb wären vielleicht noch Funktionen angebracht wie:
    get_tile_at() bzw. set_tile_at(), damit die Snake auch sich reinzeichnen, bzw. die Früchte abfragen kann.



  • Nathan schrieb:

    Auf alles public.
    Deshalb wären vielleicht noch Funktionen angebracht wie:
    get_tile_at() bzw. set_tile_at(), damit die Snake auch sich reinzeichnen, bzw. die Früchte abfragen kann.

    Alles klar, danke. Ich denke dann versuche ich mich sobald ich kann, an eine bessere Version ran. Aber bin froh es überhaupt geschafft zu haben:D
    P.S: Im letzten Post hatte ich im EDIT eine wichtige Frage gestellen, wäre toll wenn da einer was zu sagen könnte.

    MfG
    Aknayirp



  • Liegt vermutlich am system("cls"), ist scheiße lahm.
    Siehe: http://support.microsoft.com/kb/99261/de für Alternativen.



  • Nathan schrieb:

    Liegt vermutlich am system("cls"), ist scheiße lahm.
    Siehe: http://support.microsoft.com/kb/99261/de für Alternativen.

    Also auf der Seite gibt es nur eine andere Funktion die man benutzen kann, aber kann ich die einfach so einsetzen? Und was muss ich denn
    "void cls( HANDLE hConsole )" für "HANDLE hConsole" einsetzen, wenn ich die Fkt. aufrufe?

    EDIT: Hab eine andere Funktion im I-Net gefunden, mit der es gut funktioniert:
    http://www.cplusplus.com/articles/4z18T05o/#Windows

    EDIT2: Lag wirklich am system("cls")!

    EDIT3: Frage: Habe hier im Programm oft in Memberfkt, andere Memberfkt aufgerufen, ist das so üblich? Oder ist das schlechter Programmierstil?



  • Aknayirp schrieb:

    EDIT3: Frage: Habe hier im Programm oft in Memberfkt, andere Memberfkt aufgerufen, ist das so üblich? Oder ist das schlechter Programmierstil?

    Völlig ok und üblich.



  • nwp3 schrieb:

    Aknayirp schrieb:

    EDIT3: Frage: Habe hier im Programm oft in Memberfkt, andere Memberfkt aufgerufen, ist das so üblich? Oder ist das schlechter Programmierstil?

    Völlig ok und üblich.

    Cool, thx 😃


Anmelden zum Antworten