function nur einmal aufrufen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

mas93

Betreff: function nur einmal aufrufen

BeitragMi, Feb 07, 2007 14:04
Antworten mit Zitat
Benutzer-Profile anzeigen
hi leute,
Ich bastele gerade an meinem ersten type versuch^^.
Das 1. Problem liegt aber nicht an einem type.
Ich will das die function gegner() nur einmal aufgerufen wird,wie mache ich das?

Code: [AUSKLAPPEN]

Graphics 640,480,16,1
SetBuffer BackBuffer()

Type schuss
Field schuss_x
Field schuss_y
Field richtung
End Type

Global shot=LoadImage("schuss.png")
player=LoadImage("player.png")
MaskImage player,0,0,255

y=450

SeedRnd MilliSecs

Repeat

gegner()

If KeyDown(203) Then x=x-1
If KeyDown(205) Then x=x+1 
       
DrawImage player,x,y


If KeyHit(57) Then
s.schuss=New schuss

s\schuss_x=x+35
s\schuss_y=y-15
EndIf

Color 255,0,0

For s.schuss = Each schuss
DrawImage shot,s\schuss_x,s\schuss_y

If s\schuss_x>640 And s\schuss_y>480 Then
Delete s.schuss
 

Else s\schuss_y=s\schuss_y-5

EndIf
 

Next

Flip
Cls
Until KeyHit(1)
End

Function gegner()

For i=1 To 20

gx=Rnd(0,640)
gy=Rnd(0,480)
DrawImage shot,gx,gy

Next


End Function
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau]

TheMatrix

BeitragMi, Feb 07, 2007 14:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du möchstest, das die Funktion Gegner() nur einmal aufgerufen werden soll, dann muss den Aufruf vor dem Schleifenbeginn machen.
°_° °.° °~° °v° .. -.-

garret

BeitragMi, Feb 07, 2007 14:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Und bevor dann die Frage aufkommt, warum du den Schuss dann nicht mehr siehst: Das Zeichnen der Schüsse muss in der Schleife erfolgen.

Zudem musst du unterscheiden, ob die Funktion tatsächlich nur einmal oder nur zu bestimmten Punkten aufgerufen werden soll. Soll sie im ganzen Programmverlauf nur einmal abgearbeitet werden, vor die Hauptschleife packen. Bei mehrmaliger Verwendung musst du das mit einer Bedingung verknüpfen. Deine Funktion soll die Gegner doch sicherlich nur einmal erstellen, aber gleichzeitig immer zeichnen. Es wäre daher in meinen Augen sinnvoller, eine Funktion für's Erstellen zu nehmen, und eine zum Zeichnen.

MfG garret
>>nec aspera terrent<< (Auch Widerwärtigkeiten schrecken nicht)

mas93

BeitragMi, Feb 07, 2007 14:53
Antworten mit Zitat
Benutzer-Profile anzeigen
so,habs jetzt bei meinem type training mit einem type gelöst^^

Code: [AUSKLAPPEN]

Graphics 640,480,16,1
SetBuffer BackBuffer()

Type schuss
Field schuss_x
Field schuss_y
End Type

Type gegner
Field gegner_x
Field gegner_y
End Type

Global shot=LoadImage("schuss.png")
player=LoadImage("player.png")
MaskImage player,0,0,255
Global gegnerpic=LoadImage("gegner.png")

y=450

SeedRnd MilliSecs

For i=1 To 10
g.gegner=New gegner
g\gegner_x=gx
g\gegner_y=gy

g\gegner_x=Rnd(0,600)
g\gegner_y=Rnd(0,200)

Next



Repeat


For g.gegner =Each gegner
DrawImage gegnerpic,g\gegner_x,g\gegner_y
Next


If KeyDown(203) Then x=x-1
If KeyDown(205) Then x=x+1 
DrawImage player,x,y

;collisions

If ImagesCollide(gegnerpic,g\gegner_x,g\gegner_y,0,shot,s\schuss_x,s\schuss_y,0)Then End


If KeyHit(57) Then
s.schuss=New schuss
s\schuss_x=x+35
s\schuss_y=y-15
EndIf

Color 255,0,0



For s.schuss = Each schuss
DrawImage shot,s\schuss_x,s\schuss_y

If s\schuss_x>640 And s\schuss_y>480 Then
Delete s.schuss
 

Else s\schuss_y=s\schuss_y-5

EndIf
 

Next

Flip
Cls
Until KeyHit(1)
End



aber jetzt hab ich ein problem mit der collision.Da kommt Variable musst be a type???

mfg mas93
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau]

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group