function nur einmal aufrufen
Übersicht

![]() |
mas93Betreff: function nur einmal aufrufen |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn du möchstest, das die Funktion Gegner() nur einmal aufgerufen werden soll, dann muss den Aufruf vor dem Schleifenbeginn machen. | ||
°_° °.° °~° °v° .. -.- |
![]() |
garret |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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] |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group