Blinkimpulse

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

Travis

Betreff: Blinkimpulse

BeitragSo, Mai 30, 2004 8:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier mal ein Beispiel, wie man das Blinken eines Objektes realisieren könnte. Solche Effekte werden z.B. eingesetzt, wenn ein Spieler ein Leben verloren hat und danach für kurze Zeit unverwundbar ist und dies durch Blinken der Spielfigur angezeigt wird.

Man kann beliebig viele Objekte benutzen, man muss aber jeden 'Blinker' am Anfang einmal erstellen.

BlitzBasic: [AUSKLAPPEN]

Graphics 120,300,16,2
SetBuffer BackBuffer()
AppTitle "Impulse"

Type Impuls
Field Timer1, Timer2, Intervall, ID
End Type

For i = 1 To 6
CreateImpuls(i*200,i)
Next


Repeat
Cls

For i = 1 To 6
If Impuls(i) = 1 Then Color 255-i*30, 255-i*30,0: Oval 10, i*40,20,20,1
Color 255-i*30, 255-i*30,0: Text 50, 5+i*40, i*200 + " ms"
Next

Flip
Until KeyHit(1)
End


Function CreateImpuls(Intervall, Id)
i.impuls = New impuls
i\intervall = intervall
i\id = id
i\timer1 = MilliSecs()
i\timer2 = MilliSecs()
End Function


Function Impuls(id)

For i.impuls = Each impuls

If i\id = id

If MilliSecs() - i\timer1 < i\intervall/2 Then
Return 1
EndIf

If MilliSecs() - i\timer2 > i\intervall Then
i\timer2 = MilliSecs()
i\timer1 = MilliSecs()
EndIf

EndIf

Next

End Function
www.funforge.org

Ich hasse WASD-Steuerung.

Man kann alles sagen, man muss es nur vernünftig begründen können.

sbrog

BeitragSo, Mai 30, 2004 16:48
Antworten mit Zitat
Benutzer-Profile anzeigen
ganz nett, aber ich finde blinken immer schöner, wenn die objekte nach und nach transparenter werden und dann ganz verschwinden

Markus2

BeitragMo, Mai 31, 2004 23:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich fände es besser wenn CreateImpuls den Type zurück gäbe
damit man direkt den Status erfragen kann und den nicht aus
allen heraus suchen muß . Und eine Update Funktion für alle Timers .

BlitzBasic: [AUSKLAPPEN]

Graphics 640,480,16,2
SetBuffer BackBuffer()
AppTitle "Impulse"

Type ImpulsType
Field Intervall
Field Timer
Field OnOff
End Type

Local imp1.ImpulsType=CreateImpuls(1*200)
Local imp2.ImpulsType=CreateImpuls(2*200)
Local imp3.ImpulsType=CreateImpuls(3*200)
Local imp4.ImpulsType=CreateImpuls(4*200)
Local imp5.ImpulsType=CreateImpuls(5*200)
Local imp6.ImpulsType=CreateImpuls(6*200)

Repeat
Cls

;Status anzeigen zum testen
For i = 1 To 6
OnOff=0
Select i
Case 1:OnOff=imp1\OnOff
Case 2:OnOff=imp2\OnOff
Case 3:OnOff=imp3\OnOff
Case 4:OnOff=imp4\OnOff
Case 5:OnOff=imp5\OnOff
Case 6:OnOff=imp6\OnOff
End Select
Color 255-i*30, 255-i*30,0
If OnOff=1 Then Oval 10, i*40,20,20,1
Text 50, 5+i*40, i*200 + " ms"
Next

ImpulsUpdateAll()

Flip
Until KeyHit(1)
ImpulsFreeAll()
End

Function CreateImpuls.ImpulsType(Intervall)

Local i.ImpulsType
i.ImpulsType = New ImpulsType

i\intervall = intervall
i\OnOff= 0
i\timer = MilliSecs()

Return i

End Function

Function ImpulsUpdateAll()

Local Zeit=MilliSecs()
Local i.ImpulsType

For i.ImpulsType = Each ImpulsType

If (Zeit - i\timer) < i\intervall/2 Then i\OnOff=0 Else i\OnOff=1

If Zeit - i\timer => i\intervall Then
i\timer = Zeit
EndIf

Next

End Function

Function ImpulsFreeAll()

Local i.ImpulsType
For i.ImpulsType = Each ImpulsType
Delete i
Next

End Function

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group