7.6 Code einbinden/Includes

Zum importieren von Codes aus einer anderen Datei in das aktuelle Skript können Sie Includes benützen. Hollywood-Skripts (.hws Dateien) sowie Applets (.hwa) sind dazu geeignet. Beim Ausführen oder Kompilieren des Skripts werden diese Dateien eingebunden. Code zu importieren ist besonders bei größeren Projekten nützlich, um den Überblick zu behalten, als wenn alles in nur einer Quelldatei mit viel Code geschrieben wurde.

Die Idee vom Einbinden ist, Ihr Programm in mehrere Teile zu splitten. Zum Beispiel könnte ein Jump'n'run-Spiel in folgende Stücke geteilt werden: Intro, Menü, Kartenmodul, Level und Spiel. Jetzt erstellen Sie für jedes dieser Teile eine Quellcodedatei, z.B. Intro.hws, Menu.hws, Kartenmodul.hws, Level.hws und Spiel.hws Eine der Quellcodedateien muss der Hauptquellcode sein. Das ist der, den Sie mit Hollywood beginnen.

Eine weitere Verwendung von Includes ist, Bibliotheken in Form von Hollywood Applets zu erstellen. Diese Applets veröffentlichen Sie dann, damit andere Programmierer von Ihnen profitieren können. Sie importieren dann das Applet in ihr eigenes Projekt. Der Vorteil von der Veröffentlichung als Hollywood-Applet ist, dass Sie Ihren Quellcode nicht freilegen müssen. Hollywood-Applets enthalten kompilierten Bytecode, der für uns nicht lesbar ist. Wenn Sie also Ihren Code schützen und trotzdem mit anderen Benutzern teilen möchten, veröffentlichen Sie ihn einfach als Hollywood-Applet.

Lassen Sie uns zum Jump'n'run-Spiel zurückkehren. Wir nehmen an, dass das Intro.hws unser Hauptquellcode sein wird, da der Endbenutzer das Intro als Erstes sehen wird. Unser Intro.hws wird grob etwa so aussehen:

 
@INCLUDE "Menu.hws"
@INCLUDE "Kartenmodul.hws"
@INCLUDE "Level.hws"
@INCLUDE "Spiel.hws"

ZeigeIntro()
ZeigeMenu()         ; Funktion ZeigeMenu() deklariert in Menu.hws
SpielStart()        ; SpielStart() deklariert in Spiel.hws
ZeichneKarten()     ; ZeichneKarten() deklariert in Kartenmodul.hws
NaechstesLevel()    ; NaechstesLevel() deklariert in Level.hws

Wie Sie sehen, benutzen wir die Präprozessor-Anweisung @INCLUDE, um die vier anderen Quellcodes in unser Intro.hws einzubinden. Das erlaubt es uns nun, alle Funktionen, welche in diesen vier Dateien deklariert wurden, im Hauptquellcode von Intro.hws aufzurufen.

Include-Dateien enthalten in den meisten Fällen nur Funktionen, Variablen und Konstanten. Wenn Sie direkte Befehle aufrufen, welche nicht in einer Funktion integriert wurden wie z.B. DebugPrint("Hello"), wird dieser Befehl vor dem Hauptquellcode ausgeführt. Hollywood arbeitet die Befehle in der Reihenfolge ab, wie sie eingebunden wurden. In unserem Beispiel oben würde zuerst Menu.hws geöffnet und sein Code importiert, dann Kartenmodul.hws, Level.hws und schließlich Spiel.hws. Also, was Hollywood kompiliert würde wie folgt aussehen:

 
@INCLUDE "Menu.hws"
@INCLUDE "Kartenmodul.hws"
@INCLUDE "Level.hws"
@INCLUDE "Spiel.hws"

<...Inhalt der Datei Menu.hws...>
<...Inhalt der Datei Kartenmodul.hws...>
<...Inhalt der Datei Level.hws...>
<...Inhalt der Datei Spiel.hws...>
ZeigeIntro()
ZeigeMenu()
...

Sie sehen, dass alle Include-Dateien vor Ihrem Hauptquellcode eingebunden werden. Deshalb werden alle direkten Befehle, die nicht in einer Funktion deklariert wurden, vor dem Hauptquellcode ausgeführt.

Wenn Sie Applets einbinden möchten, geschieht dies auch mit der Präprozessor-Anweisung @INCLUDE:

 
@INCLUDE "Test.hwa" ; Importiert Funktionen von Test.hwa

LibFunc() ; Ruft LibFunc() auf, definiert in Test.hwa


Navigation zeigen