Ergebnis 1 bis 11 von 11

Thema: -

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Zitat Zitat von Owly Beitrag anzeigen
    (Übrigens, meine Unerfahrenheit erschlägt mich nahezu. Ein dreidimensionales Array mit 3x160x60 Tiles zu initialisieren ist offenbar ungesund für den Stack. Ist da malloc oder ein Vector der Weg, den man gehen sollte?)
    Eindeutig malloc bzw. falls du mit C++ arbeitest new. Das reserviert Speicher auf dem Heap statt auf dem Stack und Heap hat man üblicherweise wesentlich mehr. Von der Vector-Klasse würde ich in dem Fall dringend abraten. Die ist für Listen, deren Größe sich häufig ändert. Das Hinzufügen und Löschen von Elementen geht (je nach Implementierung) wesentlich schneller als bei Arrays, dafür ist der Zugriff langsamer und es wird mehr Platz gebraucht.

    Den Rest hat dir Jeez ja schon erklärt. Wenn du noch so unerfahren bist, empfehle ich dir, erstmal etwas kleiner anzufangen und dir möglichst ein paar Bücher durchzulesen. Für C und C++ empfehle ich "C von A bis Z" bzw. "C++ von A bis Z" von Jürgen Wolf. Ersteres gibt es als kostenloses Openbook auf www.galileocomputing.com und letzteres im Buchhandel. Für ein grundlegendes Verständnis von Algorithmen und der Abwägung von Platz vs. Geschwindigkeit habe ich mit "Algorithms and Data Structures: The Basic Toolbox" von Peter Sanders (dessen Vorlesung zu dem Thema ich genießen durfte) und Kurt Mehlhorn empfehlen. In der Zwischenzeit existiert auch eine deutsche Übersetzung und mit etwas Glück findest du die PDF (legal) im Netz. Die zugehörigen Vorlesungsfolien und Übungsblätter samt Musterlösungen findest du auf der Vorlesungswebsite zum kostenlosen Download.

  2. #2
    Zitat Zitat von DFYX Beitrag anzeigen
    Von der Vector-Klasse würde ich in dem Fall dringend abraten. Die ist für Listen, deren Größe sich häufig ändert. Das Hinzufügen und Löschen von Elementen geht (je nach Implementierung) wesentlich schneller als bei Arrays, dafür ist der Zugriff langsamer und es wird mehr Platz gebraucht.
    std::vector???


    Owly: Nach Möglichkeit/Bedarf solltest du dein Dateiformat flexibel gestalten. Flexibilität heißt hier Erweiterbarkeit ohne Kompatibilitätsverlust. Ein guter Start wäre, wenn du dich am IFF, oder seinen Derivaten orientierst.

  3. #3
    Zitat Zitat von Kyuu Beitrag anzeigen
    std::vector???
    Ja, std::vector. Wobei ich in dem Moment davon ausgegangen bin, dass der als doppelt verkettete Liste implementiert sein kann. Allerdings ist wohl tatsächlich vorgeschrieben, dass es ein dynamisches Array sein muss. Dementsprechend ist der Geschwindigkeitsunterschied noch da. Da sich die Layergröße aber zur Laufzeit nicht ändert, ist ein Array fester Größe via malloc/new trotzdem noch die bessere Wahl.

  4. #4
    Zitat Zitat von DFYX Beitrag anzeigen
    Allerdings ist wohl tatsächlich vorgeschrieben, dass es ein dynamisches Array sein muss. Dementsprechend ist der Geschwindigkeitsunterschied nicht da. Da sich die Layergröße aber zur Laufzeit nicht ändert, ist ein Array fester Größe via malloc/new trotzdem noch die bessere Wahl.
    Es gibt durchaus Gründe gegen std::vector, diesen würde ich aber wirklich nicht dazu zählen. Zum Beispiel ist ein Layer ein zweidimensionales Feld und da würde sich die eindimensionale Struktur von std::vector als unnötig unhandlich erweisen. Persönlich würde ich hier sowieso zu einer eigenen Layer-Klasse mit RAII raten.

    Owly: Ich kann dir den Rat geben, deinen Editor in einer Skriptsprache wie beispielsweise Python oder Lua zu schreiben. Das hat viele Vorteile, wie etwa erhöhte Produktivität, bessere Wartbarkeit und Erweiterbarkeit sowie Plattformunabhängigkeit. Außerdem solltest du dich auf ein Toolkit festlegen, das deinen Anforderungen am ehesten entspricht. Falls du beispielsweise vorhast deine Software für andere Plattformen anzubieten, würde ich von .NET schonmal die Finger lassen. Meine persönliche Empfehlung wäre die Kombination Lua + Qt. Lua ist cool und Qt ist großartig, ich glaube nicht, dass du damit irgendwas verlieren würdest. Für Qt gibt es sogar mehrere Anbindungen an Lua, sodass du sofort loslegen kannst.

    Geändert von Kyuu (03.08.2010 um 11:37 Uhr)

  5. #5
    Zitat Zitat von DFYX Beitrag anzeigen
    Für C und C++ empfehle ich "C von A bis Z" bzw. "C++ von A bis Z" von Jürgen Wolf. Ersteres gibt es als kostenloses Openbook auf www.galileocomputing.com und letzteres im Buchhandel.
    Wobei ich finde, dass die verketteten Listen im Buch "C von A bis Z" sehr umständlich erklärt werden. Man wird da echt mit Quellcodes erschlagen, die dann alles doppelt und dreifach ausführen.

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •