Im zweiten Teil von unserem Tutorial erstellen wir nun ausf?hrbaren Code. Dazu findet Ihr im Anhang das dazugeh?rige GLBasic Projekt.
Nachdem Ihr die ZIP-Datei entpackt habt sollten folgende Dateien vorhanden sein:
[isdo] -> dieser Ordner beinhaltet die Daten welches unser ausf?hrbares Programm ben?tigen wird
[gfx] -> hier befinden sich die ben?tigten Grafikdateien
intro.png -> Grafik f?r das Intro
menu.png -> Grafik f?r das Startmen?
2D Shooter Tutorial Part 2.gbap -> unsere GLBasic Projektdatei
isdo.gbas -> Programmmodul mit der Hauptschleife
intro.gbas -> Programmmodul mit dem Code f?r den sichtbaren Programmstart
menu.gbas -> Programmmodul mit dem Code f?r ein kleines Startmen?
Als erstes kommentieren wir folgende Zeile im Mainloop (isdo.gbas) aus, da wir diese erst etwas sp?ter ben?tigen werden.
Anschliessend schauen wir uns mal die Datei intro.gbas etwas genauer an.
Hier wird die Grafik f?r unser kleines Intro in den Hintergrundbuffer geladen, damit wir anschliessend die verschiedenen Sprites heraus
"grabben" k?nnen. Dies sieht dann so aus:
Wenn Ihr die Grafik oben in intro.png ?ndert, k?nnt Ihr z.B. euer eigenes Logo erscheinen lassen.
Nun lassen wir die einzelnen Grafikteile erscheinen.
In der FOR..NEXT-Schleife bestimmen wir in der Variablen i wie die Grafik eingeblendet wird. Das DRAWRECT ist n?tig damit die Grafik nicht
sich selbst ?berblendet. Nachdem die Grafik voll eingeblendet ist; let's have a break.
Danach blenden wir die Grafik wieder aus.
Zum Schluss l?schen wir wieder den Hintergrundbuffer.
Mit
?bergeben wir die Kontrolle wieder der Hauptschleife in isdo.gbas. Was w?rde wohl passieren wenn wir hier anstatt AS_MENU die
Konstante AS_INTRO zur?ckgeben w?rden...?
Nun zum Startmenu. Dieser Code steht in der Datei menu.gbas. Hier ben?tigen wir zuerst einige lokale Konstanten und Variablen.
Die MS_ steht f?r MenuState und beschreibt den jeweiligen Men?punkt. buttonUp und buttonDown ben?tigen
wir f?r den jeweiligen Buttonstatus dies ist vor allem beim GP2X n?tig!
Wie beim Intro laden wir zuerst die Men?grafik und "grabben" anschliessend die einzelnen Bilder heraus. Hier sind es die einzelnen Men?eintr?ge.
In der Schleife
wird der Wert von done ?berpr?ft falls dieser auf TRUE gesetzt ist, wird das Programm beendet. Wenn man genau hinsieht ist
aber diese Abfrage nicht unbedingt n?tig. Wir haben aber so beim Programmieren die M?glichkeit zu Testzwecken irgendwo durch done=TRUE
abzubrechen.
Nun kommt die erste Eingabeabfrage. Dazu fragen wir ab ob beim GP2X der B-Button bzw. bei Windows die X-Taste gedr?ckt wird.
Je nachdem wird dann zum jeweiligen Men?punkt gesprungen. Vorerst ist dies in unserem Programm nur EXIT.
Auch hier wieder: Was w?rde wohl passieren wenn wir hier anstatt AS_EXIT die Konstante AS_INTRO zur?ckgeben w?rden...?
Bei der ?berpr?fung der Pfeiltasten bzw. Pad auf die Auf- und Abbewegung m?ssen wir darauf achten, dass erst wieder zum n?chsten Me?punkt
gesprungen wird, wenn wir die Taste wieder loslassen. Ansonsten brennt uns der Men?cursor wie ein wildgewordenes Pferd durch.
Mit
machen wir dann das Ganze auch noch sichtbar.
Das war's f?r den zweiten Teil. Hat doch nicht weh getan, oder?
Falls Ihr Fragen zu diesem Tutorial habt, oder etwas nicht verstanden, dann nur zu, wenn ich helfen kann probiere ich zu helfen.
[attachment deleted by admin]
Nachdem Ihr die ZIP-Datei entpackt habt sollten folgende Dateien vorhanden sein:
[isdo] -> dieser Ordner beinhaltet die Daten welches unser ausf?hrbares Programm ben?tigen wird
[gfx] -> hier befinden sich die ben?tigten Grafikdateien
intro.png -> Grafik f?r das Intro
menu.png -> Grafik f?r das Startmen?
2D Shooter Tutorial Part 2.gbap -> unsere GLBasic Projektdatei
isdo.gbas -> Programmmodul mit der Hauptschleife
intro.gbas -> Programmmodul mit dem Code f?r den sichtbaren Programmstart
menu.gbas -> Programmmodul mit dem Code f?r ein kleines Startmen?
Als erstes kommentieren wir folgende Zeile im Mainloop (isdo.gbas) aus, da wir diese erst etwas sp?ter ben?tigen werden.
Code (glbasic) Select
//CASE AS_LEVEL00 ; AppState=RunLevel00()
Anschliessend schauen wir uns mal die Datei intro.gbas etwas genauer an.
Code (glbasic) Select
//-----------------------------------------------------------------------------
// I N I T I N T R O
//-----------------------------------------------------------------------------
LOADBMP "./isdo/gfx/intro.png"
Hier wird die Grafik f?r unser kleines Intro in den Hintergrundbuffer geladen, damit wir anschliessend die verschiedenen Sprites heraus
"grabben" k?nnen. Dies sieht dann so aus:
Code (glbasic) Select
GRABSPRITE 1,0,0,306,52
GRABSPRITE 2,0,52,75,21
GRABSPRITE 3,75,52,18,17
GRABSPRITE 4,112,52,193,32
Wenn Ihr die Grafik oben in intro.png ?ndert, k?nnt Ihr z.B. euer eigenes Logo erscheinen lassen.
Nun lassen wir die einzelnen Grafikteile erscheinen.
Code (glbasic) Select
// mountainsoft
FOR i=-0.01 TO -1 STEP -0.02
ALPHAMODE 0
DRAWRECT 0,0,320,240,RGB(255,255,255)
ALPHAMODE i
DRAWSPRITE 1,7,94
SHOWSCREEN
NEXT
In der FOR..NEXT-Schleife bestimmen wir in der Variablen i wie die Grafik eingeblendet wird. Das DRAWRECT ist n?tig damit die Grafik nicht
sich selbst ?berblendet. Nachdem die Grafik voll eingeblendet ist; let's have a break.
Code (glbasic) Select
SLEEP 3000
Danach blenden wir die Grafik wieder aus.
Code (glbasic) Select
FOR i=-1 TO 0 STEP 0.02
ALPHAMODE 0
DRAWRECT 0,0,320,240,RGB(255,255,255)
ALPHAMODE i
DRAWSPRITE 1,7,94
SHOWSCREEN
NEXT
Zum Schluss l?schen wir wieder den Hintergrundbuffer.
Code (glbasic) Select
ALPHAMODE 0
BLACKSCREEN
Mit
Code (glbasic) Select
RETURN AS_MENU
?bergeben wir die Kontrolle wieder der Hauptschleife in isdo.gbas. Was w?rde wohl passieren wenn wir hier anstatt AS_MENU die
Konstante AS_INTRO zur?ckgeben w?rden...?
Nun zum Startmenu. Dieser Code steht in der Datei menu.gbas. Hier ben?tigen wir zuerst einige lokale Konstanten und Variablen.
Code (glbasic) Select
// constants
LOCAL MS_STARTGAME% = 0
LOCAL MS_OPTIONS% = 1
LOCAL MS_PASSWORD% = 2
LOCAL MS_EXIT% = 3
// variables
LOCAL menuState% = 0
LOCAL buttonUp% = FALSE
LOCAL buttonDown% = FALSE
LOCAL done% = FALSE
Die MS_ steht f?r MenuState und beschreibt den jeweiligen Men?punkt. buttonUp und buttonDown ben?tigen
wir f?r den jeweiligen Buttonstatus dies ist vor allem beim GP2X n?tig!
Code (glbasic) Select
//-----------------------------------------------------------------------------
// I N I T M E N U
//-----------------------------------------------------------------------------
LOADBMP "./isdo/gfx/menu.png"
GRABSPRITE 0,0,0 ,128,14
GRABSPRITE 1,0,22,128,14
GRABSPRITE 2,0,44,128,14
GRABSPRITE 3,0,66,128,14
GRABSPRITE 4,0,80,128,80
Wie beim Intro laden wir zuerst die Men?grafik und "grabben" anschliessend die einzelnen Bilder heraus. Hier sind es die einzelnen Men?eintr?ge.
In der Schleife
Code (glbasic) Select
WHILE done=FALSE
....
....
WEND
RETURN AS_EXIT
wird der Wert von done ?berpr?ft falls dieser auf TRUE gesetzt ist, wird das Programm beendet. Wenn man genau hinsieht ist
aber diese Abfrage nicht unbedingt n?tig. Wir haben aber so beim Programmieren die M?glichkeit zu Testzwecken irgendwo durch done=TRUE
abzubrechen.
Nun kommt die erste Eingabeabfrage. Dazu fragen wir ab ob beim GP2X der B-Button bzw. bei Windows die X-Taste gedr?ckt wird.
Code (glbasic) Select
IF KEY(BUTTON_B)
....
....
ENDIF
Je nachdem wird dann zum jeweiligen Men?punkt gesprungen. Vorerst ist dies in unserem Programm nur EXIT.
Code (glbasic) Select
SELECT menuState
CASE MS_EXIT
RETURN AS_EXIT
ENDSELECT
Auch hier wieder: Was w?rde wohl passieren wenn wir hier anstatt AS_EXIT die Konstante AS_INTRO zur?ckgeben w?rden...?
Bei der ?berpr?fung der Pfeiltasten bzw. Pad auf die Auf- und Abbewegung m?ssen wir darauf achten, dass erst wieder zum n?chsten Me?punkt
gesprungen wird, wenn wir die Taste wieder loslassen. Ansonsten brennt uns der Men?cursor wie ein wildgewordenes Pferd durch.
Code (glbasic) Select
IF KEY(BUTTON_DOWN)
IF menuState<MS_EXIT
IF buttonDown=FALSE
INC menuState,1
buttonDown=TRUE
ENDIF
ENDIF
ELSE
buttonDown=FALSE
ENDIF
Mit
Code (glbasic) Select
DRAWRECT 0,0,320,240,0x0
DRAWSPRITE 4,96,128
DRAWSPRITE menuState,96,menuState*22+128
SHOWSCREEN
machen wir dann das Ganze auch noch sichtbar.
Das war's f?r den zweiten Teil. Hat doch nicht weh getan, oder?
Falls Ihr Fragen zu diesem Tutorial habt, oder etwas nicht verstanden, dann nur zu, wenn ich helfen kann probiere ich zu helfen.
[attachment deleted by admin]