Kann man mit Blitz Basic 3D auch 2D Games erstellen?

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen

Spikespine

BeitragDi, Jan 25, 2005 22:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Soo der liebe Spikey hat sich jetzt die Mühe gemacht, diesen Code zu tippen. Er könnte schludrig sein, da ich ihn schnell dahingecoded hab, ist aber gut kommentiert. Schau in der Onlinehilfe nach, wenn du einen Befehl nicht weißt. Bei Fragen frage.
Ich bezweifle jedoch, dass es dir viel hilft, naja:
Code: [AUSKLAPPEN]

;in den Grafikmodus:
Graphics 500,400,0,2 ;das sind ungefähr die Abmessungen, die dein Bild hat

;anstatt mit LoadImage zu laden, erstellen wir ein Bild:
Global Hochhaus = CreateImage(100,450)
;um in das Bild zeichnen zu können, gehen wir in seinen Imagebuffer
SetBuffer ImageBuffer(Hochhaus)
;Das Hochhaus soll Grau sein.
Color 192,192,192
;nun wird ein ausgefülltes Rechteck hineingezeichnet
Rect 0,0,100,450,1

;noch ein primitives Bild, vom Springer, diesmal animiert.
Global Springer = CreateImage(10,20,2)
;zeichnen wir zuerst den Spieler ohne Fallschirm
SetBuffer ImageBuffer(Springer,0)
Color 0,0,255
Oval 2,10,5,10,1
;und den Springer mit Fallschirm
SetBuffer ImageBuffer(Springer,1)
Color 0,0,255
Oval 2,10,5,10,1
Color 255,0,0
Rect 0,0,10,10
;transparenz bestimmen
MaskImage Springer,0,0,0

;für den Hintergurnd nehmen wir einfach eine hellblaue Löschfarbe
ClsColor 140,180,255

;nun definieren wir eigene globale Variablen
Global PlayerX# = 20 ;X-Koordinate des Spielers
Global PlayerY ;Y-Koordinate des Spielers
Global Zustand ;Zustand des Spiels (0 - Auf dem Hochhaus, 1 - Sprung)
Global Fallschirmzustand ;ist der Fallschirm draußen

;und einige Konstanten
Const Schwerkraft = 2
Const Luftwiderstand = 1

SetBuffer BackBuffer()
;nun kommt die Hauptschleife
While Not KeyHit(1)
   ;Bildschirm löschen
   Cls
   
   ;Bei der Anlaufphase starten wir die Funktion "Phase1"
   If Zustand = 0 Then Phase1
   
   ;Bei der Sprungphase starten wir die Funktion "Phase2"
   If Zustand = 1 Then Phase2
   
   ;Bei der Landungsphase beenden wir das Spiel
   If Zustand = 2 Then Phase3
   
   ;am Ende zeichnen wir alles
   zeichnen
   
   Flip
Wend

;hier die Funktion "Phase1"
Function Phase1()
   ;Die Y-Koordinate ist momentan immmer gleich
   PlayerY = 30
   
   ;mit den Pfeiltasten kann der Spieler bewegt werden
   If KeyDown(203) Then
      PlayerX = PlayerX - 1 ;links
   EndIf
   If KeyDown(205) Then PlayerX = PlayerX + 1 ;rechts
   
   ;wenn er nicht mehr auf horizontaler Höhe des Hochhauses ist, wird die 2. Phase eingestellt
   If PlayerX > 100 Then Zustand = 1
End Function

;und die 2. Phase
Function Phase2()
   ;zur Y-Koordinate wird die Schwerkraft addiert.
   ;Bei offenem Fallschirm wird der Luftwiderstand abgezogen.
   PlayerY = PlayerY + Schwerkraft - (Fallschirmzustand * Luftwiderstand)
   
   ;zur X-Koordinate wird die seitliche Absprunggeschwindigkeit (also 1) addiert,
   ;aber nur wenn der Fallschirm nicht offen ist.
   If Fallschirmzustand = 0 Then
      PlayerX = PlayerX + 1
   Else
      PlayerX = PlayerX + 0.25
   EndIf
   
   ;Bei Leertaste wird der Fallschirm ausgepackt
   If KeyHit(57) Then Fallschirmzustand = 1
   
   ;Wenn der Spieler gelandet ist, wird die Landungsphase eingeleitet
   If PlayerY > 380 Then zustand = 2
   
End Function

Function Phase3()
   Cls
   Color 0,0,0
   Text 50,50,"Das wars"
   Flip
   FlushKeys
   WaitKey
   End
End Function

Function zeichnen()
   
   ;Das Hochhaus malen
   DrawImage Hochhaus,0,50
   
   ;Den Springer zeichnen.
   DrawImage Springer, PlayerX,PlayerY, Fallschirmzustand ;wenn der 1 ist, wird der Fallschirm gezeichnet.
   
End Function

Rob_

BeitragDi, Jan 25, 2005 23:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein Spikey!
So lernt er doch nichts, du hast dir mühe gegeben aber er gibt sich bestimmt keine oder andere habens jetzt leicht es abzugucken und lernen nichts dazu.
AMD Athlon 64 3500+ | Infineon 1 GB DDR RAM | nVidia Geforce 7800 GTX

Spikespine

BeitragMi, Jan 26, 2005 13:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Najohh, ich dachte, es hilft, wenn er jeden Befehl beschrieben sieht, außerdem wollte er es und ich hatte nichts anderes zu tun. Und der Code ist ja noch ausbaufertig, im Moment ist es ja noch kein Spiel.

edit: hab mal eine Beschleunigung des Springers für mehr Realismus eingebaut:

Code: [AUSKLAPPEN]

;in den Grafikmodus:
Graphics 500,400,0,2 ;das sind ungefähr die Abmessungen, die dein Bild hat

;anstatt mit LoadImage zu laden, erstellen wir ein Bild:
Global Hochhaus = CreateImage(100,450)
;um in das Bild zeichnen zu können, gehen wir in seinen Imagebuffer
SetBuffer ImageBuffer(Hochhaus)
;Das Hochhaus soll Grau sein.
Color 192,192,192
;nun wird ein ausgefülltes Rechteck hineingezeichnet
Rect 0,0,100,450,1

;noch ein primitives Bild, vom Springer, diesmal animiert.
Global Springer = CreateImage(10,20,2)
;zeichnen wir zuerst den Spieler ohne Fallschirm
SetBuffer ImageBuffer(Springer,0)
Color 0,0,255
Oval 2,10,5,10,1
;und den Springer mit Fallschirm
SetBuffer ImageBuffer(Springer,1)
Color 0,0,255
Oval 2,10,5,10,1
Color 255,0,0
Rect 0,0,10,10
;transparenz bestimmen
MaskImage Springer,0,0,0

;für den Hintergurnd nehmen wir einfach eine hellblaue Löschfarbe
ClsColor 140,180,255

;nun definieren wir eigene globale Variablen
Global PlayerX# = 20 ;X-Koordinate des Spielers
Global PlayerY# ;Y-Koordinate des Spielers
Global PlayerYSpeed#
Global Zustand ;Zustand des Spiels (0 - Auf dem Hochhaus, 1 - Sprung)
Global Fallschirmzustand ;ist der Fallschirm draußen

;und einige Konstanten
Const Schwerkraft# = 0.05
Const Luftwiderstand# = 1.45

SetBuffer BackBuffer()
;nun kommt die Hauptschleife
While Not KeyHit(1)
   ;Bildschirm löschen
   Cls
   
   ;Bei der Anlaufphase starten wir die Funktion "Phase1"
   If Zustand = 0 Then Phase1
   
   ;Bei der Sprungphase starten wir die Funktion "Phase2"
   If Zustand = 1 Then Phase2
   
   ;Bei der Landungsphase beenden wir das Spiel
   If Zustand = 2 Then Phase3
   
   ;am Ende zeichnen wir alles
   zeichnen
   
   Flip
Wend

;hier die Funktion "Phase1"
Function Phase1()
   ;Die Y-Koordinate ist momentan immmer gleich
   PlayerY = 30
   
   ;mit den Pfeiltasten kann der Spieler bewegt werden
   If KeyDown(203) Then
      PlayerX = PlayerX - 1 ;links
   EndIf
   If KeyDown(205) Then PlayerX = PlayerX + 1 ;rechts
   
   ;wenn er nicht mehr auf horizontaler Höhe des Hochhauses ist, wird die 2. Phase eingestellt
   If PlayerX > 100 Then Zustand = 1
End Function

;und die 2. Phase
Function Phase2()
   ;zur Y-Koordinate wird die Schwerkraft addiert.
   ;Bei offenem Fallschirm wird der Luftwiderstand abgezogen.
   PlayerYSpeed = PlayerYSpeed + Schwerkraft
   
   If Fallschirmzustand = 1 Then PlayerYSpeed = PlayerYSpeed / Luftwiderstand + 0.25
   PlayerY = PlayerY + PlayerYSpeed
   
   ;zur X-Koordinate wird die seitliche Absprunggeschwindigkeit (also 1) addiert,
   ;aber nur wenn der Fallschirm nicht offen ist.
   If Fallschirmzustand = 0 Then
      PlayerX = PlayerX + 1
   Else
      PlayerX = PlayerX + 0.25
   EndIf
   
   ;Bei Leertaste wird der Fallschirm ausgepackt
   If KeyHit(57) Then Fallschirmzustand = 1
   
   ;Wenn der Spieler gelandet ist, wird die Landungsphase eingeleitet
   If PlayerY > 380 Then zustand = 2
   
End Function

Function Phase3()
   Cls
   Color 0,0,0
   Text 50,50,"Das wars"
   Flip
   FlushKeys
   WaitKey
   End
End Function

Function zeichnen()
   
   ;Das Hochhaus malen
   DrawImage Hochhaus,0,50
   
   ;Den Springer zeichnen.
   DrawImage Springer, PlayerX,PlayerY, Fallschirmzustand ;wenn der 1 ist, wird der Fallschirm gezeichnet.
   
End Function

Artemis

BeitragMi, Jan 26, 2005 16:05
Antworten mit Zitat
Benutzer-Profile anzeigen
ich mag meins auch sehr!!
Code: [AUSKLAPPEN]
AppTitle "Fallschirmspringen"
FlushKeys
y = 10
Graphics 200,600,16,2
SetBuffer(BackBuffer())
ClsColor 0,255,255
Cls
Color 255,0,0
Rect 90,20,110,5
Color 0,0,255
Rect 90,y,5,10
Color 0,255,0
Rect 0,590,200,10
Flip
Repeat
Until KeyHit(57)
Cls
Color 255,0,0
Rect 100,20,100,5
Color 0,0,255
Rect 90,y,5,10
Color 0,255,0
Rect 0,590,200,10
Repeat
   Color 0,255,255
   Rect 90,y,5,10
   y = y + 2
   Color 0,0,255
   Rect 90,y,5,10
   Flip
   If KeyHit(1) Then End
   If y = 580 Then
      Color 0,0,0
      Text 100,300,"VERLOREN",1,1
      Flip
      FlushKeys
      WaitKey
      End
   EndIf
Until KeyHit(57)
Repeat
   y = y + 1
   Color 0,255,255
   Rect 80,y-30,25,35
   Color 255,255,255
   Oval 80,y-20,25,25
   Color 0,255,255
   Oval 80,y-10,25,25
   Color 0,0,255
   Rect 90,y,5,10
   Flip
   If KeyHit(1) Then End
Until y = 580
Color 0,0,0
Text 100,300,"GEWONNEN",1,1
Flip
FlushKeys
WaitKey
End

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group