Space Assault--->Probleme mit Schuss<-----

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

tmode00

Betreff: Space Assault--->Probleme mit Schuss<-----

BeitragSa, Nov 05, 2005 19:07
Antworten mit Zitat
Benutzer-Profile anzeigen

hi,

Ich und mein Kumpel sind dabei ein Spiel zu programmieren was wir Space Assault nennen. Es soll ein 2d Weltraumschooter Spiel werden, wo man sein Raumschiff Upgraden kann (mit Geld)... z.B. Waffen kaufen usw.

Warnung: Bitte nicht zu viel erwarten, wir proggen erst seid 3 Tagen!

Screenshots:

Zum vergrößern HIER klicken
user posted image

Zum vergrößern HIER klicken
user posted image

Da ich noch ziemlich neu bin fällt es mir leider ziemlich schwer Perfekt Strukturiert zu Arbeiten und verschiedene Sachen zu realisieren. Befor ich zum Problem komme erstmal der Quellbbcode, aufgeteilt in bis jetzt 4 Dateien:



Startint.bb ----> Sozusagen vorbereitungsfile


BlitzBasic: [AUSKLAPPEN]

;-----------------------------------------------------------------------------------------------------
;Constanten und normale Variablen:

Const auflos_breite = 1024
Const auflos_hohe = 768
Const auflos_bit = 16
Const auflos_full = 1;0 ist Fenstermodus
Const schrift_gros = 24

;Initialisierungen:
AppTitle \"Space-Aassult\"
SeedRnd(MilliSecs())
Graphics auflos_breite,auflos_hohe,auflos_bit,auflos_full ;Auflösung
SetBuffer BackBuffer()
schrift = LoadFont(\"Comic Sans\",schrift_gros) ;Standartschrift
SetFont schrift
hintergrund_mucke=PlayMusic (\"musik.mp3\") ;Hintergrundmusik


Pralax.bb ---->Verantwortlich für Tastengesteuertes Pralax-Scrolling

BlitzBasic: [AUSKLAPPEN]
;Pralax Scrolling (erwartet multiplikator übergabe)
;muss im zusammenhang mit while(1) schleife, cls und flip verwendet werden
;Variablen----------------------------------------->
Global pralax_x# = 0
Global pralax_y# = 0
Global pralax_key = 1 ;soll auf tasten reagiert werden? 1= ja
Global Ebene1 = LoadImage(\"sterne1.png\")
Global Ebene2 = LoadImage(\"sterne2.png\")



Function pralax(pralax_mult#)
;------

If pralax_key = 1
If KeyDown(200) = 0 And KeyDown(205) = 0 And KeyDown(208) = 0 And KeyDown(203) = 0 Then ;keine Tasten
pralax_x# = pralax_x# - pralax_mult# ;zeichne standart pralax (links n rechts)
pralax_y# = pralax_y#
TileImage Ebene1,pralax_x,pralax_y
TileImage Ebene2,pralax_x * 2,pralax_y * 2

EndIf


If KeyDown(200) Then ;nach oben gdrückt
pralax_x# = pralax_x# - pralax_mult#

pralax_y# = pralax_y# + pralax_mult#
TileImage Ebene1,pralax_x,pralax_y
TileImage Ebene2,pralax_x * 2,pralax_y * 2
EndIf

If KeyDown(205) Then ;nach rechts gedrückt
pralax_x# = pralax_x# - pralax_mult# * 2 ;multiplikator wird erweitert
pralax_y# = pralax_y#
TileImage Ebene1,pralax_x ,pralax_y
TileImage Ebene2,pralax_x * 2,pralax_y * 2 ;Ebene 2 geht generell doppelt so schnell wie 1
EndIf

If KeyDown(208) Then ;nach unten gedrückt
pralax_x# = pralax_x# - pralax_mult# ;multiplikator bleibt gleich
pralax_y# = pralax_y# - pralax_mult#
TileImage Ebene1,pralax_x ,pralax_y
TileImage Ebene2,pralax_x * 2,pralax_y * 2 ;Ebene 2 geht generell doppelt so schnell wie 1
EndIf

If KeyDown(203) Then ;nach links gedrückt
pralax_x# = pralax_x# - pralax_mult# / 2 ;multiplikator wird verringert
pralax_y# = pralax_y#
TileImage Ebene1,pralax_x ,pralax_y
TileImage Ebene2,pralax_x * 2,pralax_y * 2 ;Ebene 2 geht generell doppelt so schnell wie 1
EndIf
EndIf

If pralax_key = 0 Then


pralax_y# = pralax_y# - pralax_mult# / 2
TileImage Ebene3,pralax_x ,pralax_y


EndIf


End Function


Spieler.bb ------->Verantwortlich für Steuerung des raumschiffes und animation der Sprites, sowie tod des raumschiffesund Gameover Bildschirm

BlitzBasic: [AUSKLAPPEN]

Include \"pralax.bb\"

;Typen------------>(1)
Type spieler
Field x ;Position
Field y

Field standart ;Raumschiffbilöd

Field oben_anim ;Animation und Steuerung
Field unten_anim
Field rechts_anim
Field links_anim
Field tod_anim

Field tod ;Zustand
Field leben

Field schuss ;waffen
Field schuss_count ;weclche waffe
Field schuss_x
Field schuss_y
Field schuss_bild
End Type


;-----------------------------------------------------------------------------------------------------

;Objekterstellung(2) (Gegener, Spieler und co nach typ spieler usw.....) und Standartzuweisung:
;raumschiff----->
raumschiff.spieler = New spieler ;Erstellt das Raumschiff



;-----------------------------------------------------------------------------------------------------
;Globale Bilder
Global Ebene3 = LoadImage(\"nebel1.png\")
Global gameover_bild = LoadImage(\"gameover.png\")
;-----------------------------------------------------------------------------------------------------



;Zuweisung von Eigenschaften (3):
;Für Raunschiff:
;Positionierung------------>
raumschiff\x = 30
raumschiff\y = auflos_hohe / 3

;-------------Zustände---------->
raumschiff\leben = 20

;-------------Schuss----------->
raumschiff\schuss_x = raumschiff\x ;schussstartposition
raumschiff\schuss_y = raumschiff\y



;Sprites------------------>(oben, unten links, rechts..)
raumschiff\standart = LoadAnimImage(\"player.png\",205,205,0,2)
raumschiff\oben_anim = LoadAnimImage(\"PlayerHoch.png\",205,205,0,2)
raumschiff\unten_anim = LoadAnimImage(\"Playerrunter.png\",205,205,0,2)
raumschiff\links_anim = LoadAnimImage(\"Playerlinks.png\",205,205,0,2)
raumschiff\rechts_anim = LoadAnimImage(\"Playerrechts.png\",205,205,0,2)
raumschiff\tod_anim = LoadAnimImage(\"tot.png\",250,250,0,60)
raumschiff\schuss_bild = LoadImage(\"laser.png\")
;-----------------------------------------------------------------------------------------------------
;Umwandlung von Eigenschaften (Globalisierung damit in funktion verwendbar)(4):
;Für Raunschiff:
Global raumschiff_x = raumschiff\x
Global raumschiff_y = raumschiff\y
Global raumschiff_leben = raumschiff\leben
Global raumschiff_standart = raumschiff\standart
Global raumschiff_oben_anim = raumschiff\oben_anim
Global raumschiff_unten_anim = raumschiff\unten_anim
Global raumschiff_links_anim = raumschiff\links_anim
Global raumschiff_rechts_anim = raumschiff\rechts_anim
Global raumschiff_tod_anim = raumschiff\tod_anim
Global raumschiff_schuss_bild = raumschiff\schuss_bild
Global raumschiff_schuss_count = raumschiff\schuss_count
Global raumschiff_schuss_x = raumschiff\schuss_x
Global raumschiff_schuss_y = raumschiff\schuss_y
;-----------------------------------------------------------------------------------------------------

;Funktionen (5)
Function movement_raumschiff() ;ist für die bewegung des raumschiffes und ani der sprites
If KeyDown(200) = 0 And KeyDown(205) = 0 And KeyDown(208) = 0 And KeyDown(203) = 0 Then ;keine Tasten
DrawImage raumschiff_standart,raumschiff_x,raumschiff_y,1

EndIf
If KeyDown(200) Then ;wenn nach oben
If Raumschiff_y > -80 ;Wenn Bildschirmende niciht erreicht dann
raumschiff_y = raumschiff_y - 1 ;verändere Position dae Raumschiffes
EndIf
DrawImage raumschiff_oben_anim,raumschiff_x,raumschiff_y,1

EndIf
If KeyDown(208) Then ;wenn nach unten
If Raumschiff_y < 620
raumschiff_y = raumschiff_y + 1
EndIf
DrawImage raumschiff_unten_anim,raumschiff_x,raumschiff_y,1
EndIf
If KeyDown(203) Then ;wenn nach links
If Raumschiff_x > -60
raumschiff_x = raumschiff_x - 1
EndIf
If KeyDown(200) = 0 And KeyDown(208) = 0
DrawImage raumschiff_standart,raumschiff_x,raumschiff_y,1
EndIf
EndIf
If KeyDown(205) Then ;wenn nach rechts
If Raumschiff_x < 830
raumschiff_x = raumschiff_x + 1
EndIf
If KeyDown(200) = 0 And KeyDown(208) = 0
DrawImage raumschiff_rechts_anim,raumschiff_x,raumschiff_y,1
End If
EndIf
End Function
;-----------------------------------------------------------------------------------------------------
Function energie_raumschiff()
If raumschiff_leben = 0 Then raumschiff_tod = 1 ; wenn keine leben mehr dann tod

;----------------------------
;Leben abzugstestzeile
If KeyHit(28) Then raumschiff_leben = raumschiff_leben -1; wenn getroffen ziehe leben ab
;----------------------------
;Lebensabzug:
Color 255,128,50
If raumschiff_tod = 0 ;wenn das raumschiff lebt
Text 0,0, \"Energie: \" + raumschiff_leben ;dann zeige energie an
EndIf

If raumschiff_tod = 1 Then ;wenn das raumschiff gestorben ist
For tod_frame = 0 To 59
Cls
pralax(2)
DrawImage raumschiff_tod_anim,raumschiff_x,raumschiff_y,tod_frame

For abla = 0 To 100000
Next
Flip
Next


Cls ;wenn die todesanimation abgespielt ist, lösche den Bildschirm
Color 128,50,40 ;ändere die farbe


While 1; Wiederhole immer wieder (wird mit exit unterbrochen)
neu=GetKey()
pralax_key = 0
pralax(2) ;aktiviere schnellpralax
DrawImage gameover_bild,0,0 ;zeige gamover_bild an

Flip
Cls
;Frage ob neuer versuch gestartet werden soll
If neu = 49 Then ;wenn ja dann lebe wieder
raumschiff_tod = 0
raumschiff_leben = 20
pralax_key = 1 ;wieder pralax scrolling tastenreaktion aktivieren
Exit
ElseIf neu = 50
na =0
While neu2 = 0
If na < 500 Then na = na + 1
If na > 499 Then na = na - 1
neu2 = GetKey()
Color 0,255,128
Text na,na ,\"by Fox Teladi (Graphics) and Tmode (Skripter)\"

Flip
Cls
Wend
End
EndIf


Wend
EndIf
End Function
;-----------------------------------------------------------------------------------------------------



Function raumschiff_schuss()

;??????????????????????????????????????????????????????????
;??????????????????????????????????????????????????????????
;??????????????????????????????????????????????????????????
;??????????????????????????????????????????????????????????
;??????????????????????????????????????????????????????????
;??????????????????????????????????????????????????????????
;??????????????????????????????????????????????????????????
;??????????????????????????????????????????????????????????
;??????????????????????????????????????????????????????????
;??????????????????????????????????????????????????????????
;??????????????????????????????????????????????????????????
;??????????????????????????????????????????????????????????
;??????????????????????????????????????????????????????????
;??????????????????????????????????????????????????????????
;??????????????????????????????????????????????????????????


End Function


Space.bb ----->Hauptdatei, hier läuft die while 1 schleife ab und alles wird eingebunden

BlitzBasic: [AUSKLAPPEN]

;#####################################################################################################
;Space-Aassult .-/by TTL Industry\-.
;#####################################################################################################

;-----------------------------------------------------------------------------------------------------
;Include Sector------>
Include \"startinit.bb\" ;Lädt Grafikmodus, Hintergrundmucke und Standartschrift
Include \"pralax.bb\"
Include \"spieler.bb\"
Include \"gegner.bb\"

;-----------------------------------------------------------------------------------------------------


;Nationaler einstiegspunkt und Aufrufpool Dynamischer Hauptspieleablauf:

While Not KeyHit(1)


pralax(0.5) ;Starte Pralax-Scrolling mit geschwindigkeit 0.5
movement_raumschiff() ;Erstelle Spieler mit bewegungen
energie_raumschiff() ;energieverwaltung und todanimation
raumschiff_schuss()

Flip ;In den FrontBuffer wechseln und alles anzeigen
Cls ;Alles löschen und
Wend ;neu beginnen

[color=darkblue]

So und in der Datei spieler.bb sind jetzt weit unten viele ???????

Weilich da 6 Stunden probiert hab nen Schuss hinzubekommen.

Kurz: ich weis nicht wie man innerhalb eines dynamisch ablaufenden Spieles (in einer Schleife) eine unterbrechung, hinbekommt....So dass ein Gegener erst nach einer Zeit erscheint oder mehrere Schüsse abgefeuert werden können....

Noch kürzer: man soll schießenkönnen ^^
While (1) : Wend
 

Chris02

BeitragSa, Nov 05, 2005 20:09
Antworten mit Zitat
Benutzer-Profile anzeigen
geht mir grad so durch den Kopf weis aber nicht obs stimmt: du rufst die funktion generell bei jedem Schleifendurchlauf auf, wenn die Schusstaste gedrückt wurde dann erstellst du einen neuen Schuss (am besten mit Types)
und dann verschiebst du die ganzen schüsse um den gewünschten Wert.
z.B.BlitzBasic: [AUSKLAPPEN]

Schuss.Schuss=Each Schuss
Schuss\y =Schuss\y+1;(oder x oder wasauchimmer)
Repeat
und dann halt die schüsse zeichnen kollisionen prüfen usw.
 

tmode00

BeitragSa, Nov 05, 2005 21:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, danke ich glaub das hat funktioniert!

Für alle die vielleicht lust haben mitzumachen....mögen sich auf diesem Wege des Forums melden..^^
While (1) : Wend

Firstdeathmaker

BeitragSo, Nov 06, 2005 3:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Da hab ich mal was auf meiner Page zu veröffentlicht, kann dir vielleicht helfen:

Klick Mich
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image
 

tmode00

BeitragSo, Nov 06, 2005 11:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Cool,
Danke... Da find ich echt viel interresantes was ich gebrauchen kann.


Ps. : Geile Page, Geile Songs!!!
While (1) : Wend

Firstdeathmaker

BeitragSo, Nov 06, 2005 14:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke Wink

Ich beschäftige mich schon fast meine ganze BB-Zeit mit Spaceshootern, also falls du fragen hast, kannst du dich gerne auch per PN bei mir melden!
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group