Bomberman Klon (Community Tutorial) BMAX
Gehe zu Seite Zurück 1, 2, 3, 4, 5, 6 Weiter
Worklogs

Minitipp
Dienstag, 24. August 2010 um 12:23 Uhr von D2006
Ich nutze bei größeren Sachen dann meist eine "includes.bmx", in der alle nötigen Dateien inkludiert werden und das Hauptprogramm inkludiert dann nur eben jene "includes.bmx". Das macht es auch nochmal ne kleine Ecke übersichtlicher. Oh, und alle inkludierten Dateien sind bei mir in einem entsprechenden Unterordner. Weiß grad nich, wie du das handhabst.
Weiter so!
Tag!
Ich habe mir deinen Code angeschaut und ein paar Sachen die du verbessern könntest:
* das Thema mit Framework und Import ansprechen. Zweck ist das die exe nur mit denen Modulen gebaut wird welches das Spiel benötigt:
<code>
Framework brl.max2d
Import brl.Timer
Import brl.Random
Import brl.D3D7Max2D
Import brl.PNGLoader
</code>
dadurch müsstest du auch den Render setzen:
<code>
SetGraphicsDriver D3D7Max2DDriver()
</code>
für die OpenGL freunde natürlich:
<code>
Framework BRL.GLMax2D
Import BRL.GLGraphics
SetGraphicsDriver GLMax2DDriver()
</code>
* den Fenstertitel setzen: (Vor Graphics)
<code>
AppTitle = "Bomberman Klon (Community Tutorial) by KirkZero"
</code>
* Die Zeile „Until KeyHit(KEY_ESCAPE)“ durch „Until (KeyHit(KEY_ESCAPE) Or AppTerminate())“ ersetzen. Damit reagiert das Grapicsfenster auch auf den X Button.
* Frameunabhängige Bewegung könnte man so realisieren: (Tipp)
<code>
Global msc:Int 'Differenz variable
Global lasttime:Int = MilliSecs() 'letzte zeit variable
Global time:Int = MilliSecs() 'aktuelle zeit variable
Repeat
lasttime = time 'speichere letzte zeit
time = MilliSecs() 'besorge neue (da bei größeren Programmen sich die MilliSecs() zeit mit verändert wäre das unpraktisch für die Genauigkeit)
msc = time - lasttime 'in msc die die gesamt Dauer der letzten frame speichern in ms
Cls
x:+calc_move(1.0) 'eine einfache Funktion (die Spieler coordinaten sollten dann aber in Float sein)
Flip(0)
Until (KeyHit(KEY_ESCAPE) Or AppTerminate())
Function calc_move:Float(speed:Float)
Return ((speed * Float(msc) / 100.0)) 'bei 33 FPS wäre die Rechnung: 1.0*30ms/100.0 = 0.3 (bedeutet in einer Sekunde eine Bewegung von 10 Pixeln)
End Function
</code>
* in Tfeld lädst du bei jedem 'new' die Image noch einmal neu. Du kannst auch in einer Type Global benutzen. Dann wird das Image nur einmal geladen.
* Eine extra Type für jeden einzelnen Tspieler zu machen ist etwas zu viel des guten. Extends ist doch etwas für Fortgeschrittene. Wie wäre es die Tastatur Belegung in Tspieler zu speichern? KEY_LEFT ist auch nur eine variable mit einem wert.
<code>
Field upkey:int, downkey:int, rightkey:int, leftkey:int
</code>
und bei typischen 4 Spielern reicht auch eine kleine array/liste.
have a nice day.
So, neuer Eintrag ist up
Ausserdem das von BladeRunner angesprochene TMap umbenannt.
Ein weiterer Fehler, in dem ich vergessen hab, den Inhalt des Feldes bei der SoftBlockerstellung auch mit SoftBlock zu füllen wird ebenfalls beseitigt...
Hoffe ihr habt viel spass beim Lesen und auch ein paar Verbesserungsvorschläge!?
@HamZta
Danke... das freut und Motiviert mich!!!
@BladeRunner
hmm... ok, das hatte ich bisher immer so gehandhabt.... aber ich würde die original TMap mit meinem Code doch eigentlich überschreiben... oder?
Aber denke, ich werde aus der TMap dann TKarte machen...da der Aufruf an sich keine Probleme bereiten sollte, wenn ich ih ändere... danke für den Hinweis... kommt ins nächste WorkLog
Habe unwissender Weise immer TMap für meine Karten benutzt.
Abgesehen davon, für Interessierte... denke ich werde von nun an mein WorkLog parallell zum coden führen... denke, dann kann ich alles auch besser erklähren... allerdings werde ich frühstens am Dienstag weiterschreiben, da ich am Wochenende arbeitstechnisch voll ausgebucht bin...
Also dann... bis dann
Freue mich schon voll darauf... TSpieler vorzustellen und auf eure Anregungen und Kritiken
LG...
Kirk
Ich möchte dich auf den Umstand hinweisen dass es in BMax schon eine Klasse TMap gibt. Um da diversen Problemen aus dem Weg zu gehen könnte es sinnvoll sein deinen Type umzubenennen.
Bei der leider überwiegenden Anzahl an Zweizeilerworklogs hier freut es mich richtig, dass du dir soviel Mühe gibst!
Weiter so!
so... neues Worklog ist online
**** kostet sowas Zeit
@Xeres
Andererseits benutzt du für den Timer nicht TTimer.Create() und timer.wait()?
nein, habe ich so bisher noch nie benutzt, werd ich mir aber mal anschauen. Kannte das bis jetzt nicht so, würde aber besser zum Rest passen... also befasse ich mich mal damit... Danke
Hmmm... gut, das mit dem Menü werd ich mir nochmal überlegen, wird ja eh der letzte Schritt vom Grundgerüst. Dann kann ich ja ein wenig mit dem Menü rumprobieren, muss gestehen, hab noch nicht viele Menüs gemacht, PuzzleGotchie war eigentlich mein erstes Projekt mit Menü
TMap werde ich glaub ich vorerst lassen, weil mir da noch etwas vorschwebt, wozu das nützlich sein kann, wenn es sich allerdings später als unnütz herausstellt, werd ich mir das mit dem Array only mal durch den Kopf gehen lassen.
@Goodjee
Ja, du hast recht, es wird immer nur eine TMap (je nach Spielvariante) erstellt und danach soll diese auch wieder gelöscht werden.
Naja, habe gestern Nacht schon viel drann rumgewerkelt und werde auch gleich nach dem Duschen mit dem Worklogeintrag dazu beginnen, dann könnt ihr euch vielleicht ein besseres Bild von dem machen, was ich mir da vorgestellt hatte.
Spätestens dann denk ich, wird man besser darüber diskutieren können.
Freu mich schon und schonmal dickes Danke für die Teilnahme!
thunder, das mit der tmap würde ich lassen, vom speicher ist es ja egal, gibt ja vermutlich nur eine tmap
- Einen Type fürs Menü finde ich auch etwas übertrieben. Eine Funktion tuts auch.
- Außerdem schreibe ich das eigentliche Spiel immer in einer Funktion damit ich diese dann aus dem Menü aufrufen kann.
- Für mich persönlich (ich spare gerne an Speicher ) sind es schon zu viele Types. BlitzMax speichert für jede Type-Instanz eine Menge Mist mit. Ich würde auf TMap verzichten und einfach ein Array aus TFeld nehmen.
Der letzte Punkt macht den Code möglicherweise wieder unübersichtlicher.
mfg Thunder
Gehe zu Seite Zurück 1, 2, 3, 4, 5, 6 Weiter