Code archives/Graphics/lightning function
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
| a lightning from A to B. not the same mistake as like robs lightning function, but it is a little like his one. the names and some comments are in german. maybe someone could translate it into english | |||||
;Blitz-Effekt
;by Claudio
Graphics 640,480,16,2
SetBuffer BackBuffer()
SeedRnd MilliSecs()
t=CreateTimer(60)
While KeyHit(1)=0
Cls
If KeyHit(49) Then t2=0 ;N next
If t2=0
t2=200
Ax=Rand(19,619);anfang
Bx=Rand(19,619);-"-
Ay=Rand(19,459);ende
By=Rand(19,459);..
EndIf
t2=t2-1
blitzmalen(Ax,Ay,Bx,By)
While KeyDown(57):Wend ;space -pause
WaitTimer(t)
Flip
Wend
End
Function blitzmalen(vonX,vonY,zuX,zuY)
;Color 90,90,255
Local wurz#,steps#,size#,verX#,verY# ;'steps'-mal (diagonal) um 'size' veränd. um zu B zu kommen.
Local abstX,abstY,x#,y# ;der abstand zwischen Ax und Bx
Local r,winkel2
Local blitzteil=16
abstX=zuX-vonX : abstY=zuY-vonY
wurz=Sqr(abstX^2+abstY^2) : size=blitzteil+(wurz Mod blitzteil) : steps=wurz/size
verX=abstX/steps : verY=abstY/steps ;verX/Y=welche veränderung auf der x&y-achse um diagonal
;(ca.)12-{<24} pixel näher zu B zu kommen.
x=vonX+verX
y=vonY+verY
xx1=vonX:yy1=vonY
xx2=x:yy2=y
For i=0 To Floor(steps)-1
r=Rand(size)
winkel2=Rand(359)
xx2=xx2+Cos(winkel2)*r : yy2=yy2+Sin(winkel2)*r
If (i+2)>steps Then xx2=zuX:yy2=zuY
BlitzLine (xx1,yy1,xx2,yy2)
xx1=xx2
yy1=yy2
x=x+verX:xx2=x
y=y+verY:yy2=y
Next
Color 127,127,127:Oval vonX-4,vonY-4,9,9:Oval zuX-4,zuY-4,9,9
End Function
Function BlitzLine(mlx,mly,mlx2,mly2)
Color 90,90,255
Line mlx-1,mly-1,mlx2-1,mly2-1
Line mlx-1,mly+1,mlx2-1,mly2+1
Line mlx+1,mly-1,mlx2+1,mly2-1
Line mlx+1,mly+1,mlx2+1,mly2+1
Color 255,255,255
Line mlx,mly,mlx2,mly2
End Function |
Comments
None.
Code Archives Forum