Code für abschießen----bei meinem is irgendwas falsch?HILFE

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

woox

Betreff: Code für abschießen----bei meinem is irgendwas falsch?HILFE

BeitragMo, Feb 14, 2005 12:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Leute..
Ich bin gerade dabei einen 2D Space-Shooter zu Programmieren...
Aber mein Code is irgendwie falsch!! Sad
Hoffe ihr könnt mir helfen!!
Zuerst erstelle ich aber nen Schuss Smile
Das Type alien is das mit dem abschießen
Hier der Code:
Code: [AUSKLAPPEN]

Function create_schuss()
   s.schuss=New schuss
   s\x=playerx+50
   s\y=playery+20
   s\speed=10
   s\lifetime=30
   s\img=schusspic
End Function

Function update_schuss()
For s.schuss = Each schuss   ;alle schüsse
   del=0               ;löschen=0
   s\lifetime=s\lifetime-1 ;lebenszeit-1
   If s\lifetime<0 Then del=1 ;wenn lebenszeit<0 dann löschen
   s\x=s\x+s\speed            ;neue position
   DrawImage s\img,s\x,s\y     ;darstellen
   If del=1 Then            ;wenn gelöscht werden soll
   del=0
   Delete s               ;lösche das type
   EndIf
Next                     ;nächstes
End Function

Function logo()
DrawImage logo ,180,200
End Function

Type alien
Field x,y,img
Field  zahl = zahl + 1
Field  abschüsse = 0
Field schusspic
End Type


Local a.alien
For i= 1 To zahl
a=New alien
a\x=Rand(0,640)
a\y=Rand(0,480)
a\img=img
a\zahl= zahl
a\abschüsse = abschüsse
DrawImage a\img,a\y,a\x
Next
If ImagesCollide(s\img,s\x1, s\y1, 0, a\img,a\x,a\y,0) Then a\zahl =a\zahl -1
a\zahl =a\zahl +1 a\abschüsse = a\abschüsse + 1
 

David

BeitragMo, Feb 14, 2005 13:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

So beim überfliegen:

Code: [AUSKLAPPEN]

If ImagesCollide(s\img,s\x1, s\y1, 0, a\img,a\x,a\y,0) Then a\zahl =a\zahl -1
a\zahl =a\zahl +1 a\abschüsse = a\abschüsse + 1


Das müsste egdl auch in deine Foreach-Schleife nicht?

grüße
 

woox

BeitragMo, Feb 14, 2005 13:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Mhh??Geht nicht....
Das is der ganze Code vieleicht kannst du daraus mehr schließen Smile
Code: [AUSKLAPPEN]

Graphics 800,600,16,2
AppTitle "Space-Shooter"
SetBuffer BackBuffer()

Global playerx,playery,playerspeed

Global Spieler = LoadImage ("gfx/ship.bmp")
Global schusspic = LoadImage("gfx/orb.bmp")
Global logo =LoadImage ("gfx/logo.bmp")
Global img = LoadImage ("gfx/enemy1.bmp")
Global SternAnzahl=200
Dim sternx(SternAnzahl),sterny(SternAnzahl),sternz(SternAnzahl)


Type schuss
Field x,y,speed,lifetime,img
End Type


For i=1 To SternAnzahl
   sternx(i) = Rand(0,800)
   sterny(i) = Rand(0,600)
   sternz(i) = Rand(1,4)
Next


menustate=1

Repeat
   Cls
   bewege_sterne()
    logo()
   Select menustate
   Case 1Color 0,0,250:Text 400,300,"Start game",1,1
      Color 200,200,200:Text 400,350,"Beenden",1,1

   Case 2
      Color 200,200,200:Text 400,300,"Start game",1,1
      Color 0,0,250:Text 400,350,"Beenden",1,1
   End Select   
   
   If KeyHit(200) And menustate>1 Then menustate=menustate- 1
   If KeyHit(208) And menustate<2 Then menustate=menustate+ 1
   
   If KeyHit(57)
      Select menustate
         Case 1
              game()
              ;function_options()
         Case 2
      ;   Bei Case 3 wird nur das END abgefragt also wenn man Space (leertaste) drückt Endet das Programm!
           End
      End Select
   EndIf
Flip

Forever


Function game()
   playerx=300
   playery=300
   playerspeed=4
   While Not KeyHit(1)
      Cls ;nicht vergessen
   
      bewege_sterne()
      bewege_spieler()
      update_schuss()

      Flip
        Wend

End Function



Function bewege_spieler()
   ;spieler bewegen
   If KeyDown(200) And playery>20  Then playery = playery -playerspeed
   If KeyDown(208) And playery<570 Then playery = playery +playerspeed   
   If KeyDown(203) And playerx>20  Then playerx = playerx -playerspeed
   If KeyDown(205) And playerx<760 Then playerx = playerx +playerspeed   
   
   If KeyDown(57) Then create_schuss()
   If KeyDown(1) Then End
   ;spieler darstellen
   DrawImage spieler,playerx,playery
End Function

Function bewege_sterne()
   For i=1 To SternAnzahl
      If sternx(i)>0 Then
      sternx(i)=sternx(i)-sternz(i)
      Else
      sternx(i)=800
      EndIf
      Plot sternx(i),sterny(i)
   Next
End Function

Function create_schuss()
   s.schuss=New schuss
   s\x=playerx+50
   s\y=playery+20
   s\speed=10
   s\lifetime=30
   s\img=schusspic
End Function

Function update_schuss()
For s.schuss = Each schuss   ;alle schüsse
   del=0               ;löschen=0
   s\lifetime=s\lifetime-1 ;lebenszeit-1
   If s\lifetime<0 Then del=1 ;wenn lebenszeit<0 dann löschen
   s\x=s\x+s\speed            ;neue position
   DrawImage s\img,s\x,s\y     ;darstellen
   If del=1 Then            ;wenn gelöscht werden soll
   del=0
   Delete s               ;lösche das type
   EndIf
Next                     ;nächstes
End Function

Function logo()
DrawImage logo ,180,200
End Function

Type alien
Field x,y,img
Field  zahl = zahl + 1
Field  abschüsse = 0
Field schusspic
End Type


Local a.alien
For i= 1 To zahl
a=New alien
a\x=Rand(0,640)
a\y=Rand(0,480)
a\img=img
a\zahl= zahl
a\abschüsse = abschüsse
DrawImage a\img,a\y,a\x
If ImagesCollide(s\img,s\x1, s\y1, 0, a\img,a\x,a\y,0) Then a\zahl =a\zahl -1
a\zahl =a\zahl +1 a\abschüsse = a\abschüsse + 1
Next


Mailt mir
 

Hot-Bit

Sieger des B2D Retro Wettbewerb / Aug 04

BeitragMo, Feb 14, 2005 13:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Hoi.

Sorry, off-topic...

Bitte ändere deinen Avatar.
Ich denke immer, warum hat TheShadow mit sowas Probleme ?

Man kann ja mal nach gucken, ob schon wer so einen Avatar hat.
Sollte nicht zuviel verlangt sein.

Toni
... ..... .i.. ...

***
Sieger des BB-Gameboy-Contest 2004
Sieger des Blitzbaster 2D-Minigolf-Contest 2005
***
 

woox

BeitragMo, Feb 14, 2005 13:59
Antworten mit Zitat
Benutzer-Profile anzeigen
jo--->SORRY
Hast du denn auch ne Antwort auf mein Problem? Question
 

woox

BeitragMo, Feb 14, 2005 14:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Oder isses so richtig?
Code: [AUSKLAPPEN]

Graphics 800,600,16,2
AppTitle "Space-Shooter"
SetBuffer BackBuffer()

Global playerx,playery,playerspeed

Global Spieler = LoadImage ("gfx/ship.bmp")
Global schusspic = LoadImage("gfx/orb.bmp")
Global logo =LoadImage ("gfx/logo.bmp")
Global img = LoadImage ("gfx/enemy1.bmp")
Global SternAnzahl=200
Dim sternx(SternAnzahl),sterny(SternAnzahl),sternz(SternAnzahl)


Type schuss
Field x,y,speed,lifetime,img
End Type


For i=1 To SternAnzahl
   sternx(i) = Rand(0,800)
   sterny(i) = Rand(0,600)
   sternz(i) = Rand(1,4)
Next


menustate=1

Repeat
   Cls
   bewege_sterne()
    logo()
   Select menustate
   Case 1Color 0,0,250:Text 400,300,"Start game",1,1
      Color 200,200,200:Text 400,350,"Beenden",1,1

   Case 2
      Color 200,200,200:Text 400,300,"Start game",1,1
      Color 0,0,250:Text 400,350,"Beenden",1,1
   End Select   
   
   If KeyHit(200) And menustate>1 Then menustate=menustate- 1
   If KeyHit(208) And menustate<2 Then menustate=menustate+ 1
   
   If KeyHit(57)
      Select menustate
         Case 1
              game()
              ;function_options()
         Case 2
      ;   Bei Case 3 wird nur das END abgefragt also wenn man Space (leertaste) drückt Endet das Programm!
           End
      End Select
   EndIf
Flip

Forever


Function game()
   playerx=300
   playery=300
   playerspeed=4
   While Not KeyHit(1)
      Cls ;nicht vergessen
   
      bewege_sterne()
      bewege_spieler()
      update_schuss()

      Flip
        Wend

End Function



Function bewege_spieler()
   ;spieler bewegen
   If KeyDown(200) And playery>20  Then playery = playery -playerspeed
   If KeyDown(208) And playery<570 Then playery = playery +playerspeed   
   If KeyDown(203) And playerx>20  Then playerx = playerx -playerspeed
   If KeyDown(205) And playerx<760 Then playerx = playerx +playerspeed   
   
   If KeyDown(57) Then create_schuss()
   If KeyDown(1) Then End
   ;spieler darstellen
   DrawImage spieler,playerx,playery
End Function

Function bewege_sterne()
   For i=1 To SternAnzahl
      If sternx(i)>0 Then
      sternx(i)=sternx(i)-sternz(i)
      Else
      sternx(i)=800
      EndIf
      Plot sternx(i),sterny(i)
   Next
End Function

Function create_schuss()
   s.schuss=New schuss
   s\x=playerx+50
   s\y=playery+20
   s\speed=10
   s\lifetime=30
   s\img=schusspic
End Function

Function update_schuss()
For s.schuss = Each schuss   ;alle schüsse
   del=0               ;löschen=0
   s\lifetime=s\lifetime-1 ;lebenszeit-1
   If s\lifetime<0 Then del=1 ;wenn lebenszeit<0 dann löschen
   s\x=s\x+s\speed            ;neue position
   DrawImage s\img,s\x,s\y     ;darstellen
   If del=1 Then            ;wenn gelöscht werden soll
   del=0
   Delete s               ;lösche das type
   EndIf
Next                     ;nächstes
End Function

Function logo()
DrawImage logo ,180,200
End Function

Type alien
Field x,y,img
Field  zahl = zahl + 1
Field  abschüsse = 0
Field schusspic
End Type


Local a.alien 
For i= 1 To zahl
a=New alien 
a\x=Rand(0,640) 
a\y=Rand(0,480)  a\img=img  a\zahl= zahl  a\abschüsse = abschüsse  DrawImage a\img,a\y,a\x  Next 
If ImagesCollide(s\img,s\x1, s\y1, 0, a\img,a\x,a\y,0) Then a\zahl =a\zahl -1  a\zahl =a\zahl +1 a\abschüsse = a\abschüsse + 1     

Next

Waveblue

BeitragMo, Feb 14, 2005 14:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Local a.alien 
For i= 1 To zahl
a=New alien 
a\x=Rand(0,640) 
a\y=Rand(0,480)  a\img=img  a\zahl= zahl  a\abschüsse = abschüsse  DrawImage a\img,a\y,a\x  Next 

For s=each alien
If ImagesCollide(s\img,s\x1, s\y1, 0, a\img,a\x,a\y,0) Then a\zahl =a\zahl -1  a\zahl =a\zahl +1 a\abschüsse = a\abschüsse + 1     
next
Next

Vielleicht gehts schon so!
This is 10% luck
20% skill
15% concentrated power of will
5% pleasure, 50% pain
and 100% reason to remember the name
 

woox

BeitragMo, Feb 14, 2005 14:11
Antworten mit Zitat
Benutzer-Profile anzeigen
So gehts auch nicht.... Question Question Question Question
Code: [AUSKLAPPEN]

Graphics 800,600,16,2
AppTitle "Space-Shooter"
SetBuffer BackBuffer()

Global playerx,playery,playerspeed

Global Spieler = LoadImage ("gfx/ship.bmp")
Global schusspic = LoadImage("gfx/orb.bmp")
Global logo =LoadImage ("gfx/logo.bmp")
Global img = LoadImage ("gfx/enemy1.bmp")
Global SternAnzahl=200
Dim sternx(SternAnzahl),sterny(SternAnzahl),sternz(SternAnzahl)


Type schuss
Field x,y,speed,lifetime,img
End Type


For i=1 To SternAnzahl
   sternx(i) = Rand(0,800)
   sterny(i) = Rand(0,600)
   sternz(i) = Rand(1,4)
Next


menustate=1

Repeat
   Cls
   bewege_sterne()
    logo()
   Select menustate
   Case 1Color 0,0,250:Text 400,300,"Start game",1,1
      Color 200,200,200:Text 400,350,"Beenden",1,1

   Case 2
      Color 200,200,200:Text 400,300,"Start game",1,1
      Color 0,0,250:Text 400,350,"Beenden",1,1
   End Select   
   
   If KeyHit(200) And menustate>1 Then menustate=menustate- 1
   If KeyHit(208) And menustate<2 Then menustate=menustate+ 1
   
   If KeyHit(57)
      Select menustate
         Case 1
              game()
              ;function_options()
         Case 2
      ;   Bei Case 3 wird nur das END abgefragt also wenn man Space (leertaste) drückt Endet das Programm!
           End
      End Select
   EndIf
Flip

Forever


Function game()
   playerx=300
   playery=300
   playerspeed=4
   While Not KeyHit(1)
      Cls ;nicht vergessen
   
      bewege_sterne()
      bewege_spieler()
      update_schuss()

      Flip
        Wend

End Function



Function bewege_spieler()
   ;spieler bewegen
   If KeyDown(200) And playery>20  Then playery = playery -playerspeed
   If KeyDown(208) And playery<570 Then playery = playery +playerspeed   
   If KeyDown(203) And playerx>20  Then playerx = playerx -playerspeed
   If KeyDown(205) And playerx<760 Then playerx = playerx +playerspeed   
   
   If KeyDown(57) Then create_schuss()
   If KeyDown(1) Then End
   ;spieler darstellen
   DrawImage spieler,playerx,playery
End Function

Function bewege_sterne()
   For i=1 To SternAnzahl
      If sternx(i)>0 Then
      sternx(i)=sternx(i)-sternz(i)
      Else
      sternx(i)=800
      EndIf
      Plot sternx(i),sterny(i)
   Next
End Function

Function create_schuss()
   s.schuss=New schuss
   s\x=playerx+50
   s\y=playery+20
   s\speed=10
   s\lifetime=30
   s\img=schusspic
End Function

Function update_schuss()
For s.schuss = Each schuss   ;alle schüsse
   del=0               ;löschen=0
   s\lifetime=s\lifetime-1 ;lebenszeit-1
   If s\lifetime<0 Then del=1 ;wenn lebenszeit<0 dann löschen
   s\x=s\x+s\speed            ;neue position
   DrawImage s\img,s\x,s\y     ;darstellen
   If del=1 Then            ;wenn gelöscht werden soll
   del=0
   Delete s               ;lösche das type
   EndIf
Next                     ;nächstes
End Function

Function logo()
DrawImage logo ,180,200
End Function

Type alien
Field x,y,img
Field  zahl = zahl + 1
Field  abschüsse = 0
Field schusspic
End Type


Local a.alien
For i= 1 To zahl
a=New alien
a\x=Rand(0,640)
a\y=Rand(0,480) a\img=img a\zahl= zahl a\abschüsse = abschüsse DrawImage a\img,a\y,a\x Next

For s=Each alien
If ImagesCollide(s\img,s\x1, s\y1, 0, a\img,a\x,a\y,0) Then a\zahl =a\zahl -1 a\zahl =a\zahl +1 a\abschüsse = a\abschüsse + 1

Next
 

woox

BeitragMo, Feb 14, 2005 14:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaube ich schreibe das abschießen nochmal neu!!
Vieleicht gehts dann ja..Ich hoffe ihr habt noch vorschläge...
Wie ich es machen könnte!!
Bitte schreibt noch!! Arrow woox
 

woox

BeitragMo, Feb 14, 2005 15:36
Antworten mit Zitat
Benutzer-Profile anzeigen
wenn ihr so freundlich seit und mir einer den richtigen Code schicken würde wäre ich dem jenigem sehr dankbar Smile
Bitte es soll mir einer den Code schreiben wenn es ncih zuviele umstände macht...!!

Ich bin nämlich am versagen!! Crying or Very sad

BITTE

adba

BeitragMo, Feb 14, 2005 15:39
Antworten mit Zitat
Benutzer-Profile anzeigen
das brauch zeit vorallem wenn man diese bilder nicht hat und dann irgendwelche dummy bilder nehen muss.. mach doch ein rar oder zip deinse projektes und wir schauen mal...

Mooch

Betreff: ..

BeitragMo, Feb 14, 2005 16:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Sonst kann ich dir leider auch nicht helfen...
Musst du mal als zip oder rar irgendwo hochladen...
Pentium IV 3.0Ghz; nVidia Geforce 6800;
Microsoft Windows XP Home SP2; BlitzBasic 3D

.:: Sites ::.
.:: http://www.fl4sh-clan.de/ ::.


Mooch

Betreff: ..

BeitragMo, Feb 14, 2005 16:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Sorry für doppel-posting!

Also bei mir functs so:

Code: [AUSKLAPPEN]

Graphics 800,600,16,2
AppTitle "Space-Shooter"
SetBuffer BackBuffer()

Global playerx,playery,playerspeed

Global Spieler = LoadImage ("player.bmp")
Global schusspic = LoadImage("disc.bmp")
Global logo =LoadImage ("racetrack.bmp")
Global img = LoadImage ("alien.bmp")
Global SternAnzahl=200
Dim sternx(SternAnzahl),sterny(SternAnzahl),sternz(SternAnzahl)


Type schuss
Field x
Field y
Field speed
Field lifetime
Field img
End Type


For i=1 To SternAnzahl
   sternx(i) = Rand(0,800)
   sterny(i) = Rand(0,600)
   sternz(i) = Rand(1,4)
Next


menustate=1

Repeat
   Cls
   bewege_sterne()
    logo()
   
   Select menustate
      Case 1
             Color 0,0,250:Text 400,300,"Start game",1,1
         Color 200,200,200:Text 400,350,"Beenden",1,1
      Case 2
         Color 200,200,200:Text 400,300,"Start game",1,1
         Color 0,0,250:Text 400,350,"Beenden",1,1
   End Select   
   
   If KeyHit(200) And menustate>1 Then menustate=menustate- 1
   If KeyHit(208) And menustate<2 Then menustate=menustate+ 1
   
   If KeyHit(57)
      Select menustate
         Case 1
              game()
              ;function_options()
         Case 2
      ;   Bei Case 3 wird nur das END abgefragt also wenn man Space (leertaste) drückt Endet das Programm!
           End
      End Select
   EndIf
Flip

Forever


Function game()
   playerx=300
   playery=300
   playerspeed=4
   While Not KeyHit(1)
      Cls ;nicht vergessen
   
      bewege_sterne()
      bewege_spieler()
      update_schuss()

      Flip
        Wend

End Function



Function bewege_spieler()
   ;spieler bewegen
   If KeyDown(200) And playery>20  Then playery = playery -playerspeed
   If KeyDown(208) And playery<570 Then playery = playery +playerspeed   
   If KeyDown(203) And playerx>20  Then playerx = playerx -playerspeed
   If KeyDown(205) And playerx<760 Then playerx = playerx +playerspeed   
   
   If KeyDown(57) Then create_schuss()
   If KeyDown(1) Then End
   ;spieler darstellen
   DrawImage spieler,playerx,playery
End Function

Function bewege_sterne()
   For i=1 To SternAnzahl
      If sternx(i)>0 Then
      sternx(i)=sternx(i)-sternz(i)
      Else
      sternx(i)=800
      EndIf
      Plot sternx(i),sterny(i)
   Next
End Function

Function create_schuss()
   s.schuss=New schuss
   s\x=playerx+50
   s\y=playery+20
   s\speed=10
   s\lifetime=30
   s\img=schusspic
End Function

Function update_schuss()
For s.schuss = Each schuss   ;alle schüsse
   del=0               ;löschen=0
   s\lifetime=s\lifetime-1 ;lebenszeit-1
   If s\lifetime<0 Then del=1 ;wenn lebenszeit<0 dann löschen
   s\x=s\x+s\speed            ;neue position
   DrawImage s\img,s\x,s\y     ;darstellen
   If del=1 Then            ;wenn gelöscht werden soll
   del=0
   Delete s               ;lösche das type
   EndIf
Next                     ;nächstes
End Function

Function logo()
DrawImage logo ,180,200
End Function

Type alien
   Field x,y,img
   Field  zahl = zahl + 1
   Field  abschüsse = 0
   Field schusspic
End Type


Local a.alien
For i=1 To zahl
   a=New alien
   a\x=Rand(0,640)
   a\y=Rand(0,480)
   a\img=img
   a\zahl= zahl
   a\abschüsse = abschüsse
   
   DrawImage a\img,a\y,a\x
Next

For s.alien=Each alien
   If ImagesCollide(s\img,s\x,s\y,0,a\img,a\x,a\y,0) Then
      a\zahl = a\zahl -1
      a\zahl = a\zahl +1
      a\abschüsse = a\abschüsse + 1
   EndIf
Next


Warum denn s\x1 und s\y1 ?
Ich hoffe, ich hab dein Problem verstanden?!
Pentium IV 3.0Ghz; nVidia Geforce 6800;
Microsoft Windows XP Home SP2; BlitzBasic 3D

.:: Sites ::.
.:: http://www.fl4sh-clan.de/ ::.


 

woox

BeitragMo, Feb 14, 2005 17:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Jo dein Code geht nur ein Problem wäre da noch!!
Er zeigt die Gegner nicht an==????
Bitte mail mir!!
 

woox

BeitragMo, Feb 14, 2005 17:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habs immoment so:
Code: [AUSKLAPPEN]

Graphics 800,600,16,2
AppTitle "Space-Shooter"
SetBuffer BackBuffer()

Global playerx,playery,playerspeed

Global Spieler = LoadImage ("gfx/ship.bmp")
Global schusspic = LoadImage("gfx/orb.bmp")
Global logo =LoadImage ("gfx/logo.bmp")
Global img = LoadImage ("gfx/orb.bmp")
Global SternAnzahl=200
Dim sternx(SternAnzahl),sterny(SternAnzahl),sternz(SternAnzahl)

Type alien
Field x,y,img
Field zahl = zahl + 1
Field abschüsse = 0
Field schusspic
End Type

Type schuss
Field x
Field y
Field speed
Field lifetime
Field img
End Type


For i=1 To SternAnzahl
sternx(i) = Rand(0,800)
sterny(i) = Rand(0,600)
sternz(i) = Rand(1,4)
Next


menustate=1

Repeat
Cls
bewege_sterne()
logo()

Select menustate
Case 1
Color 0,0,250:Text 400,300,"Start game",1,1
Color 200,200,200:Text 400,350,"Beenden",1,1
Case 2
Color 200,200,200:Text 400,300,"Start game",1,1
Color 0,0,250:Text 400,350,"Beenden",1,1
End Select

If KeyHit(200) And menustate>1 Then menustate=menustate- 1
If KeyHit(208) And menustate<2 Then menustate=menustate+ 1

If KeyHit(57)
Select menustate
Case 1
game()
;function_options()
Case 2
; Bei Case 3 wird nur das END abgefragt also wenn man Space (leertaste) drückt Endet das Programm!
End
End Select
EndIf
Flip

Forever


Function game()
playerx=300
playery=300
playerspeed=4
While Not KeyHit(1)
Cls ;nicht vergessen

bewege_sterne()
bewege_spieler()
update_schuss()

Flip
Wend

End Function



Function bewege_spieler()
;spieler bewegen
If KeyDown(200) And playery>20 Then playery = playery -playerspeed
If KeyDown(208) And playery<570 Then playery = playery +playerspeed
If KeyDown(203) And playerx>20 Then playerx = playerx -playerspeed
If KeyDown(205) And playerx<760 Then playerx = playerx +playerspeed

If KeyDown(57) Then create_schuss()
If KeyDown(1) Then End
;spieler darstellen
DrawImage spieler,playerx,playery
End Function

Function bewege_sterne()
For i=1 To SternAnzahl
If sternx(i)>0 Then
sternx(i)=sternx(i)-sternz(i)
Else
sternx(i)=800
EndIf
Plot sternx(i),sterny(i)
Next
End Function

Function create_schuss()
s.schuss=New schuss
s\x=playerx+50
s\y=playery+20
s\speed=10
s\lifetime=30
s\img=schusspic
End Function

Function update_schuss()
For s.schuss = Each schuss ;alle schüsse
del=0 ;löschen=0
s\lifetime=s\lifetime-1 ;lebenszeit-1
If s\lifetime<0 Then del=1 ;wenn lebenszeit<0 dann löschen
s\x=s\x+s\speed ;neue position
DrawImage s\img,s\x,s\y ;darstellen
If del=1 Then ;wenn gelöscht werden soll
del=0
Delete s ;lösche das type
EndIf
Next ;nächstes
End Function

Function logo()
DrawImage logo ,180,200
End Function



Local a.alien
For i=1 To zahl
a=New alien
a\x=Rand(0,640)
a\y=Rand(0,480)
a\img=img
a\zahl= zahl
a\abschüsse = abschüsse

DrawImage a\img,a\y,a\x
Next

For s.alien=Each alien
DrawImage a\img,a\y,a\x
If ImagesCollide(s\img,s\x,s\y,0,a\img,a\x,a\y,0) Then
a\zahl = a\zahl -1
a\zahl = a\zahl +1
a\abschüsse = a\abschüsse + 1
EndIf
Next
 

David

BeitragMo, Feb 14, 2005 18:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Lad das Projekt + Bilder hoch sodas man sich keine Dummies einbauen muss. Vielleicht propierts dann ja jemand für dich aus!

grüße
 

woox

BeitragMo, Feb 14, 2005 21:17
Antworten mit Zitat
Benutzer-Profile anzeigen
ok,mach ich!!
Link zu meinem Code inclusive gfx Ordner!!
http://mitglied.lycos.de/woox11/Spiel.rar

BITTE MELDEN wenn ihr es hingekriegt habt!!
 

David

BeitragMo, Feb 14, 2005 21:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Sowas in der Art:

Code: [AUSKLAPPEN]

Graphics 800,600,16,2
AppTitle "Space-Shooter"
SetBuffer BackBuffer()

Global playerx,playery,playerspeed

Global Spieler = LoadImage ("gfx/ship.bmp")
Global schusspic = LoadImage("gfx/orb.bmp")
Global logo =LoadImage ("gfx/logo.bmp")
Global img = LoadImage ("gfx/enemy1.bmp")
Global SternAnzahl=200
Dim sternx(SternAnzahl),sterny(SternAnzahl),sternz(SternAnzahl)

Type alien
Field x,y,img
Field zahl = zahl + 1
Field abschüsse = 0
Field schusspic
End Type

Type schuss
Field x
Field y
Field speed
Field lifetime
Field img
End Type

zahl = 5

create_enemies(5)


For i=1 To SternAnzahl
sternx(i) = Rand(0,800)
sterny(i) = Rand(0,600)
sternz(i) = Rand(1,4)
Next


menustate=1

Repeat
Cls
bewege_sterne()
logo()

Select menustate
Case 1
Color 0,0,250:Text 400,300,"Start game",1,1
Color 200,200,200:Text 400,350,"Beenden",1,1
Case 2
Color 200,200,200:Text 400,300,"Start game",1,1
Color 0,0,250:Text 400,350,"Beenden",1,1
End Select

If KeyHit(200) And menustate>1 Then menustate=menustate- 1
If KeyHit(208) And menustate<2 Then menustate=menustate+ 1

If KeyHit(57)
Select menustate
Case 1
game()
;function_options()
Case 2
; Bei Case 3 wird nur das END abgefragt also wenn man Space (leertaste) drückt Endet das Programm!
End
End Select
EndIf
Flip

Forever


Function game()
playerx=300
playery=300
playerspeed=4
While Not KeyHit(1)
Cls ;nicht vergessen

bewege_sterne()
bewege_spieler()
update_schuss()
update_enemies()
draw_enemies()


Flip
Wend

End Function



Function bewege_spieler()
;spieler bewegen
If KeyDown(200) And playery>20 Then playery = playery -playerspeed
If KeyDown(208) And playery<570 Then playery = playery +playerspeed
If KeyDown(203) And playerx>20 Then playerx = playerx -playerspeed
If KeyDown(205) And playerx<760 Then playerx = playerx +playerspeed

If KeyDown(57) Then create_schuss()
If KeyDown(1) Then End
;spieler darstellen
DrawImage spieler,playerx,playery
End Function

Function bewege_sterne()
For i=1 To SternAnzahl
If sternx(i)>0 Then
sternx(i)=sternx(i)-sternz(i)
Else
sternx(i)=800
EndIf
Plot sternx(i),sterny(i)
Next
End Function

Function create_schuss()
s.schuss=New schuss
s\x=playerx+50
s\y=playery+20
s\speed=10
s\lifetime=30
s\img=schusspic
End Function

Function update_schuss()
For s.schuss = Each schuss ;alle schüsse
del=0 ;löschen=0
s\lifetime=s\lifetime-1 ;lebenszeit-1
If s\lifetime<0 Then del=1 ;wenn lebenszeit<0 dann löschen
s\x=s\x+s\speed ;neue position
DrawImage s\img,s\x,s\y ;darstellen
If del=1 Then ;wenn gelöscht werden soll
del=0
Delete s ;lösche das type
EndIf
Next ;nächstes
End Function

Function logo()
DrawImage logo ,180,200
End Function


Function create_enemies(anzahl)
For i=1 To anzahl
a.alien=New alien
a\x=Rand(0,640)
a\y=Rand(0,480)
a\img=img
a\zahl= zahl
a\abschüsse = abschüsse
Next
End Function

Function update_enemies()
For a.alien=Each alien
For s.schuss = Each schuss

If ImagesCollide(s\img,s\x,s\y,0,a\img,a\x,a\y,0) Then
Delete a
Exit
EndIf
 
Next
Next

End Function

Function draw_enemies()
For a.alien=Each alien
DrawImage a\img,a\y,a\x
Next
End Function


Wie wärs übrigens mit Codeformatierung? Und, so ganz perfekt durchdacht ist der Code auch nicht oder? Wieso hast du nichtmal vorher geplant was du nacher implementierst? Rolling Eyes

grüße

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMo, Feb 14, 2005 21:39
Antworten mit Zitat
Benutzer-Profile anzeigen
CodeFormatierung... ich mach mir mal die Mühe Very Happy Code: [AUSKLAPPEN]
Graphics 800 ,600,16,2
AppTitle "Space-Shooter"
SetBuffer BackBuffer ()
Global playerx,playery,playerspeed
Global Spieler = LoadImage ("gfx/ship.bmp")
Global schusspic = LoadImage ("gfx/orb.bmp")
Global logo = LoadImage ("gfx/logo.bmp")
Global img = LoadImage ("gfx/enemy1.bmp")
Global SternAnzahl = 200
Dim sternx (SternAnzahl) ,sterny (SternAnzahl) ,sternz (SternAnzahl)
Type alien
    Field x,y,img
    Field zahl = zahl + 1
    Field abschüsse = 0
    Field schusspic
End Type
Type schuss
    Field x
    Field y
    Field speed
    Field lifetime
    Field img
End Type
zahl = 5
create_enemies (5)

For i = 1 To SternAnzahl
    sternx (i) = Rand (0 ,800)
    sterny (i) = Rand (0 ,600)
    sternz (i) = Rand (1 ,4)
Next

menustate = 1

Repeat
    Cls
    bewege_sterne ()
    logo ()
   
    Select menustate
     Case 1
        Color 0 ,0,250 : Text 400 ,300,"Start game",1,1
        Color 200 ,200,200 : Text 400 ,350,"Beenden",1,1
     Case 2
        Color 200 ,200,200 : Text 400 ,300,"Start game",1,1
        Color 0 ,0,250 : Text 400 ,350,"Beenden",1,1
    End Select
   
    If KeyHit (200) And menustate > 1 Then menustate = menustate - 1
    If KeyHit (208) And menustate < 2 Then menustate = menustate + 1
    If KeyHit (57) Then
       
        Select menustate
         Case 1
            game ()
            ;function_options()
         Case 2
            ; Bei Case 3 wird nur das END abgefragt also wenn man Space (leertaste) drückt Endet das Programm!
            End
        End Select
       
    EndIf
    Flip
Forever

Function game ()
    playerx = 300
    playery = 300
    playerspeed = 4
   
    While Not KeyHit (1)
        Cls ;nicht vergessen
        bewege_sterne ()
        bewege_spieler ()
        update_schuss ()
        update_enemies ()
        draw_enemies ()
        Flip
    Wend
   
End Function

Function bewege_spieler ()
    ;spieler bewegen
    If KeyDown (200) And playery > 20 Then playery = playery - playerspeed
    If KeyDown (208) And playery < 570 Then playery = playery + playerspeed
    If KeyDown (203) And playerx > 20 Then playerx = playerx - playerspeed
    If KeyDown (205) And playerx < 760 Then playerx = playerx + playerspeed
    If KeyDown (57) Then create_schuss ()
    If KeyDown (1) Then End
    ;spieler darstellen
    DrawImage spieler,playerx,playery
End Function

Function bewege_sterne ()
   
    For i = 1 To SternAnzahl
        If sternx (i) > 0 Then
            sternx (i) = sternx (i) - sternz (i)
         Else
            sternx (i) = 800
        EndIf
        Plot sternx (i) ,sterny (i)
    Next
   
End Function

Function create_schuss ()
    s.schuss = New schuss
    s\x = playerx + 50
    s\y = playery + 20
    s\speed = 10
    s\lifetime = 30
    s\img = schusspic
End Function

Function update_schuss ()
   
    For s.schuss = Each schuss ;alle schüsse
        del = 0 ;löschen=0
        s\lifetime = s\lifetime - 1 ;lebenszeit-1
        If s\lifetime < 0 Then del = 1 ;wenn lebenszeit<0 dann löschen
        s\x = s\x + s\speed ;neue position
        DrawImage s\img,s\x,s\y ;darstellen
        If del = 1 Then ;wenn gelöscht werden soll
            del = 0
            Delete s ;lösche das type
        EndIf
    Next ;nächstes
   
End Function

Function logo ()
    DrawImage logo ,180,200
End Function

Function create_enemies (anzahl)
   
    For i = 1 To anzahl
        a.alien = New alien
        a\x = Rand (0 ,640)
        a\y = Rand (0 ,480)
        a\img = img
        a\zahl = zahl
        a\abschüsse = abschüsse
    Next
   
End Function

Function update_enemies ()
   
    For a.alien = Each alien
       
        For s.schuss = Each schuss
            If ImagesCollide (s\img,s\x,s\y,0,a\img,a\x,a\y,0) Then
                Delete a
                Exit
            EndIf
        Next
       
    Next
   
End Function

Function draw_enemies ()
   
    For a.alien = Each alien
        DrawImage a\img,a\y,a\x
    Next
   
End Function
[BB2D | BB3D | BB+]
 

woox

BeitragDo, Feb 17, 2005 17:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab jetzt alles neu geschrieben 3 Dateien gemacht
Spiel,Variablen,Functionen
Dann alles in Types und Functionen gesetzt nun gehts!! Smile Idea Idea
HUUHU

Aber trodzdem danke fürs schreiben an: Arrow ALLE

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group