[Code] Delphi: einfache 2D Grafikengine, aber wie?!

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Yamaha RGX A2, 31. Januar 2009 .

Schlagworte:
  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  1. #1 31. Januar 2009
    Delphi: einfache 2D Grafikengine, aber wie?!

    Hey Leute!
    Ich hab seit diesem Jahr in der Schule Informatik. Wir programmieren mit Delphi 7, aber kommen nicht wirklich voran.. Im Moment versuche ich privat, n kleines 2D Game zu programmieren, hab da an nen Pacman gedacht, der durch ein Parcour zum Ziel laufen muss, mit Wänden durch die er nicht durch kann, und Hindernissen, die ihn umbringen. Das Ganze funktioniert auch einigermaßen, solange ich die Grafiken weg lass [Pacman ist ein Radiobutton, Wände sind Panels, und Hindernisse sind Checkboxes, sagt jetzt mal lieber nichts, ich bin n blutiger Anfänger :eek: ] Das ganze klappt auch richtig gut, der Radiobutton-Pacman bewegt sich ruckel frei. Jetzt wollte ich das ganze mit Grafiken machen, und hab einfach bitmaps in ein Image eingefügt. aber mit der flüssigen Bewegung ists jetzt aus, der Bitmap-Pacman springt vom Anfang der Bewegung, direkt zum Ende.

    Jetzt meine Frage, wie kann ich mir ne eigene kleine 2D Grafikengine zusammenbasteln, die es mir möglich macht, Bitmaps ruckel frei zu bewegen?

    thx!
     

  2. Anzeige
  3. #2 4. Februar 2009
    Mit sowas Ähnlichem hatte ich mich auch mal beschäftigt, allerdings nicht in Delphi sondern mit C++.
    Bin dabei zu dem Schluss gekommen, dass mir OpenGL für diesen Zweck besser gefällt als DirectX.
    Die folgenden Tutorial-Quellen waren recht hilfreich:

    Tutorial 2D – DGL Wiki
    APRON TUTORIALS OPENGL
    Home – Swiftless Tutorials - OpenGL Tutorials

    Für Dich kommt mit Delphi wohl vor allem der oberste Link in Betracht,
    für C++ gibt's vermutlich mehr zu finden.
    Wirst Dich selber durchbeißen müssen, ich hab nicht sooo viel Zeit und kann Dir
    mit Delphi sowieso nicht viel helfen.
    Bereite Dich mal auf 10-100 Stunden Arbeit vor, bis Du da halbwegs durchblickst.
    Ist aber auf jeden Fall ein möglicher Weg der zu Deinem Pacman-Spiel führt.
     
  4. #3 7. Februar 2009
    AW: Delphi: einfache 2D Grafikengine, aber wie?!

    2D mit OpenGL ist ziemlich zwar im allgemeinen keine schlechte Idee. Aber für einen Anfänger sehr verwirrend. Ich hab mich selber schon mehr als einmal mit OpenGL beschäftigt und kann dir folgendes sagen:
    - Man ärgert sich eigentlich immer rum, wenn man was neues anfängt. Sowas wie Texturen, Displaylisten, ... sind ja recht gut dokumentiert, aber trotzdem hat es bei mir nie auf Anhieb geklappt und dann fängt das große Suchen an. Da es immer nur an irgendwelchen Kleinigkeiten liegt, die man nicht gleich sieht.
    - Die Funktionen haben sehr komplizierte Interfaces, das heißt Methoden mit > 5 Parameter sind durchaus üblich. Finde ich nicht gerade einsteigerfreundlich.
    - Die Grafikroutinen sind sehr rudimentär, man muss also fast alles selber implementieren. Sowas wie Kreise oder konkave Polygone.
    - Gerade Texturen bereiten einem sehr viel ärger, wenn man nicht mit Bildformaten vertraut ist.

    Als Vorteil sehe ich hier nur die verbesserte Zoomfunktion an und die erhöhte Geschwindigkeit. Beides wird bei einem einfachen Spiel aber nicht benötigt. Im 3D Bereich sieht es allerdings ganz anders aus.

    Nimm am besten ne Canvas und zeichne. Das geht so, in jedem Zeichenschritt machst du folgendes:
    - du beginnst mit einer leeren Bitmap in der Größe deinen Spielfeldes
    - du Zeichnest deine Figuren und Hindernisse mit den eingebauten Zeichenroutinen (Rechtecke, Kreise, ...) oder du lädst sie aus anderen Graphiken, die du dann entsprechend auf die Bitmap zeichnest.
    - du Zeichnest die Bitmap auf die Canvas (im OnPaint Event)

    Die Positionen kannst du aus deinem bisherigen Programm nehmen. Musst nur die Controls durch eigene Graphiken oder selbst gezeichnete Symbole austauschen.
     

  5. Videos zum Thema
Die Seite wird geladen...