Suche Vorschläge für Verwaltung von Daten...



  • Ich plane einen Leveleditor zu schreiben. In einer Datei sollen mehrere Levels gespeichert werden. D.h. ich benötige dafür Listen. Dann wiederum habe ich unterschiedliche Arten von Objekten (15 verschiedene) - manche haben gleiche Eigenschaften wie X,Y mache aber auch breite,höhe usw...

    Wie kann ich das ganze managen?
    In C++ könnte man das wohl einfacher lösen... Ich hab mich jetzt für C entschieden, weil ich das ganze als DLL kompilieren will und in Programmiersprachen verwenden will, die keine Objektorientierung beherschen sowas wie myobj.move(x,y) wäre da ein problem - ich muß deswegen sowas benutzen object_move(myobj,x,y)

    so nun hab ich mir überlegt das ganze mit void-zeigern zu machen - und dann zu konvertieren - wobei jedes Objekt als 1. Eigenschaft immer ID-Kennung (typ) hat:

    struct sprite
    {
      char id;
      int x;
      int y;
      image* i;
    };
    

    bei einem anderen objekt wäre das z.B.:

    struct rect
    {
      char id;
      int x;
      int y;
      int width;
      int height;
    };
    

    und die will ich in einer liste managen. sowas wie linked list:

    struct list
    {
      void* object;
      void* after;
      void* before;
    };
    

    wäre das OK - habt ihr Voschläge??? ich hab jetzt die codes nicht geteste ob die fehlerfrei sind - ist nur Idee... Das ganze soll möglichst ganz einfach sein (und nicht so langsam)



  • Ein paar mehr Infos wären schon nicht schlecht... Schneller ist es eigentlich immer Blockweise mit fread und fwrite zu arbeiten, allerdinngs haben die Funktionen den Nachteil, dass sie nicht portabel und plattformabhängig sind. Sollen denn alle Objekte und Levels in einer Datei liegen oder willst du wissen, wie du alles am besten aufteilen kannst?! Ich werd aus deinem Post jedenfalls net schlau ^^

    Mfg,
    Matthias



  • nein... es geht nicht um Datei - das kommt später.

    es geht erstmal darum die Objekte im RAM zu managen... wie gesagt suche ich eine Lösung unterschiedlichste Objekte in nahezu vielen und beliebig großen Listen zu verwalten.

    warum ist fread und fwrite nicht portabel??? ich dachte das ist es... oder meinst du wegen big/little endian - ich denke da kann man hilfsfunktionen coden (readint)


Anmelden zum Antworten