Programmierung=Unordnung ???

Previous topic - Next topic

Baggi

Hallo zusammen,

ich habe mal eine Frage zur Programmierung
von Computerspielen.

Also wenn ich Computerspiele mit GLBasic
programmiere (es sind bis jetzt etwa 7), dann
wird mein Code schnell unübersichtlich.
Der Grund dafür sind eine Vielzahl von Variablen,
die sozusagen als "Schalter" arbeiten.

Wenn zum Beispiel der Held des Spiels von einem
Gegner erschossen wird, dann benötigt man eine Variable,
ich nenne sie mal "getroffen", und setzte sie dann gleich Eins.
Dadurch wird in eine Sub gesprungen, die dann auf dem
Bildschirm anzeigt : Du wurdest getroffen. Dann müssen für
den Level in dem der Held gestorben ist eventuell einige
Sachen neu initialisiert werden (Gegner auf ihre alten Plätze usw.).
"getroffen" muss wieder Null gesetzt werden, damit der Level
von vorne beginnt.

Also was ich meine ist, dass ich für ein Spiel eine
ganze Menge dieser "Schalter" brauche.

Vielleicht weiss ja jemand wie man da eine bessere Ordnung
reinbekommt, oder ob es vielleicht eine bessere Methode
dafür gibt.

Wenn ich mir vorstelle, wie das wohl bei proffesionellen
Spielen aussieht, denke ich das das wichtigste ist, die
Ordnung zu halten. Wie machen die das wohl ?

Vielen Dank
Baggi

Kitty Hello

Ich habe bei Wumbo's Adventure eine Variable für die Gegner z.B. die mir angibt was er gerade macht.
Links-rechts gehen, rauf, runter, platzen, nicht mehr da sein, usw...
Also:
1 = Links rechts-modus, läuft links
2 = Links rechts-modus, läuft rechts
...
100 - 120 = platzt gerade (animation)

Wenn ich getroffen wurde mach ich das oft so:
Code (glbasic) Select
LevelNeu:
   LadeLevel(Nummer)
   GOSUB VorDemLevelWasAnzeigen()
Maingame:
   IF MussSpielerNeuAnfangen()
      GOSUB SpielerHatVersagtScreen()
      GOTO LevelNeu
   ENDIF
GOTO Maingame

Oder Du machst ein Feld:
Code (glbasic) Select
DIM SpielerStatus[5]
IstBlau = 0
IstGruen=1
IstBlahBlah=2
IF SpielerStatus[IstBlau] THEN GOSUB BlauerSpieler

Versuche möglichst alle diese Schalter in IF ... ENDIF umzuwandeln. Das ist oft übersichtlicher. Das Problem ist sonst, dass schwer sagen kann ob eine Variable jetzt diesen oder jenen Wert hat, und wo der schon wieder gesetzt wurde bzw. vergessen wurde zu setzen. Auch hat GLBasic dadurch dass man keine Variablen vordeklarieren muss das Problem, dass typos (Tippfehler) verherend sind.
Code (glbasic) Select
SpielerBlau = SpeilerGruen
Der neue Compiler gibt dazu jetzt Warnungen aus, die bei meinem Programmierstil ziemlich nerven. :)
Code (glbasic) Select
"C:\xxx\Test.gbas"(1) warning : propably unassigned variable : SpeilerGruen

Hoffe das war ein bisserl eine Hilfe...
-Gernot

Baggi

Hallo,

danke für die Tipps, die kann ich gut gebrauchen.
Das sind gute Ideen.
Eine Variable für die Gegner ist gut. Falls man mehrere Gegner hat
macht man ein Feld.

Wenn man getroffen wurde, dann mach ich das auch genauso wie du.

Code (glbasic) Select
LevelNeu:
   LadeLevel(Nummer)
   GOSUB VorDemLevelWasAnzeigen()
Maingame:
   IF MussSpielerNeuAnfangen()
      GOSUB SpielerHatVersagtScreen()
      GOTO LevelNeu
   ENDIF
GOTO Maingame

Schalter in IF...ENDIF umwandeln werde ich mir merken.

Arbeite gerade am Artikel für diesen Wettbewerb, bin deswegen ganzschön
im Stress, hoffe ich schaffe das bis zum 15.

Viele Grüße
Baggi