Gewitter - Blitz

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Gewitter - Blitz

Beitrag von X360 Andy »

Ich suche jetzt seit 45 Minuten nach einem Code für einen Blitz.

Es gibt einem im Codearchiv das weiß ich sicher , da ich ihn vor geraumer Zeit mal gesehen und getestet habe.

Ich habe hier und im Englishen Forum mit allen möglichen Suchbegriffen versucht irgendwas änliches zu finden , aber leider ohne Erfolg.

Weiß einer zufählig wo ich den Code finde ?

Würde mich freuen :D
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

Im PureBoard-Archiv gibt es das: http://www.purebasic.fr/german/archive/ ... ight=blitz

Ich wusste es noch, weil es mein Code war. <)

///Edit:
Hey, fast genau 6 Jahre her. :D
Zuletzt geändert von NicTheQuick am 10.05.2009 20:56, insgesamt 1-mal geändert.
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Beitrag von X360 Andy »

thx genau der wars :allright: :allright: :allright:
EDIT
WTF ich hab doch nach GEWITTER gesucht :?
EDIT 2
Ach das war im Archiv .... /:->
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Gewitter - Blitz

Beitrag von NicTheQuick »

Weil ich gerade danach gefragt wurde. Hier der Code von damals. Ich habe ihn nicht angepasst an die neue PB-Version:

Code: Alles auswählen

Procedure InitDirectX() 
  If InitSprite() And InitKeyboard() And InitMouse() And InitSound() 
    ProcedureReturn #True 
  EndIf 
EndProcedure 

Global Width.l, Height.l 
Width = 1024
Height = 768

Procedure Gewitter(x1.l, y1.l, Anzahl.l, Rekursion.l) 
  If x1 = -1 : x1 = Random(Width) : EndIf 
  If y1 = -1 : y1 = Random(Height) : EndIf 
  Rekursion - 1 
  For a.l = 1 To Anzahl 
    x2.l = x1 + Random(200) - 100 
    If x2 < 0 : x2 = 0 : EndIf 
    If x2 > Width : x2 = Width : EndIf 
    y2.l = (Height - y1) / (2 + Random(4)) + y1 

    LineXY(x1, y1, x2, y2, $FFFFFF) 
    Dicke.l = Rekursion
    For b.l = 1 To Dicke 
      ColorSW.l = (Dicke - b + 1) * 255 / Dicke 
      LineXY(x1 - b, y1, x2 - b, y2, RGB(ColorSW, ColorSW, ColorSW)) 
      LineXY(x1 + b, y1, x2 + b, y2, RGB(ColorSW, ColorSW, ColorSW)) 
    Next 
    
    If Rekursion
      Gewitter(x2, y2, Random(2) + 1, Rekursion) 
    EndIf 
  Next 
EndProcedure 

InitDirectX() 

If OpenScreen(Width, Height, 16, "Gewitter") 
  NextTS.l = GetTickCount_() + Random(2000) 
  Repeat 
    ClearScreen(backlight, backlight, backlight) 
    StartDrawing(ScreenOutput()) 
      If NextTS <= GetTickCount_() 
        Gewitter(-1, Random(100), 1, 4) 
        
        backlight = 250 
        
        NextTS.l = GetTickCount_() + Random(2000) 
      EndIf 
      
      If backlight
        backlight - 10
      EndIf 
      
      
      Locate(0, 0) 
      DrawText(Str(NextTs - GetTickCount_()) + " ms") 
    StopDrawing() 
    FlipBuffers() 
    ExamineKeyboard() 
  Until KeyboardReleased(#PB_Key_Escape) 
EndIf
Antworten