Hallo miteinander
Ich m?chte mit einem kleinen Tutorial meine Programmiererfahrungen mit GLBasic weitergeben.
Es handelt sich um ein Grundger?st f?r einen Horizontal-Shooter das Routinen wie Intro, Men?, 2-Layerscrolling, Kollision oder Sound beinhaltet.
Falls ihr Fragen oder Anregungen habt dan postet die bitte nicht in diesem Thread sondern da:
http://www.glbasic.com/forum/index.php?topic=2948.0. Danke.
EDIT 27.07.2009: Habe nun einen einfachen Tilemap-Editor inkl. Quellcode im Anhang hinzugef?gt.Damit man auch was lernen kann werde ich das Tutorial aufteilen.
Wie das Ergebnis des Tutorials etwa aussieht k?nnt Ihr hier runterladen.
Windows Version:
http://www.zshare.net/download/5735249659b47d37/GP2X Version:
http://www.zshare.net/download/57352743c3fbf5c9/Steuerung->GP2X: Schuss=B
Steuerung->Win: Schuss=X
Im ersten Teil beginnen wir mit dem Programmrumpf:
//=============================================================================
// T Y P E S
//=============================================================================
//=============================================================================
// C O N S T A N T S
//=============================================================================
// application states
GLOBAL AS_INTRO% = 1
GLOBAL AS_MENU% = 2
GLOBAL AS_LEVEL00% = 10
GLOBAL AS_EXIT% = 255
// button map
GLOBAL BUTTON_RIGHT% = 205
GLOBAL BUTTON_LEFT% = 203
GLOBAL BUTTON_DOWN% = 208
GLOBAL BUTTON_UP% = 200
GLOBAL BUTTON_A% = 44
GLOBAL BUTTON_B% = 45
GLOBAL BUTTON_R% = 54
GLOBAL BUTTON_START% = 28
GLOBAL BUTTON_VOLI% = 201
GLOBAL BUTTON_VOLD% = 209
//=============================================================================
// V A R I A B L E S
//=============================================================================
// application
GLOBAL AppState% = AS_INTRO
LOCAL done = FALSE
//-----------------------------------------------------------------------------
// I N I T
//-----------------------------------------------------------------------------
DRAWRECT 0,0,320,240,0
SHOWSCREEN
DRAWRECT 0,0,320,240,0
SHOWSCREEN
//-----------------------------------------------------------------------------
// M A I N L O O P
//-----------------------------------------------------------------------------
WHILE done=FALSE
SELECT AppState
CASE AS_INTRO ; AppState=RunIntro()
CASE AS_MENU ; AppState=RunMenu()
CASE AS_LEVEL00 ; AppState=RunLevel00()
CASE AS_EXIT ; done=TRUE
DEFAULT ; done=TRUE
ENDSELECT
WEND
//-----------------------------------------------------------------------------
// D E I N I T
//-----------------------------------------------------------------------------
DRAWRECT 0,0,320,240,0
SHOWSCREEN
DRAWRECT 0,0,320,240,0
SHOWSCREEN
Als erstes machen wir Platz f?r Type-Definitionen welche wir sp?ter hier einsetzen werden.
Anschliessend kommen die Konstanten welche wir im Programm immer GROSS schreiben werden. Mit AS_INTRO etc. beschreiben wir den jeweiligen Status des Programms (AS = application state). Danach folgen die Konstanten f?r die Tastenbelegung welche wir sp?ter noch ben?tigen werden.
Jetzt folgen die Variablen, wobei wir globale mit grossem und lokale mit kleinem Anfangsbuchstaben schreiben. Die globale Variable
AppState initialisieren wir mit AS_INTRO da wir unser Programm mit dem INTRO starten wollen.
Dann l?schen wir den Framebuffer.
Nun kommt die Hauptschleife des Programms:
Wenn innerhalb der Schleife
WHILE done=FALSE
...
WEND
der Wert der Variable
done auf
TRUE gesetzt wird, l?schen wir wieder den Framebuffer und das Proramm endet.
SELECT AppState
CASE AS_INTRO ; AppState=RunIntro()
CASE AS_MENU ; AppState=RunMenu()
CASE AS_LEVEL00 ; AppState=RunLevel00()
CASE AS_EXIT ; done=TRUE
DEFAULT ; done=TRUE
ENDSELECT
Hier ?berpr?fen wir das auszuf?hrende Programmmodul. Da wir den Wert von
AppStateauf AS_INTRO gesetzt haben wird nat?rlich das Modul
RunIntro() aufgerufen. Die verschiedenen Module sind Funktionen welche wiederum einen Wert zur?ckgeben, der dann sofort wieder in der Variable
AppState gespeichert wird. Beim n?chsten Schleifendurchlauf wird diese erneut abgefragt.
So. Das w?rs mal f?r's erste. Im zweiten Teil werden wir uns mit dem Intro besch?ftigen.
[attachment deleted by admin]