Regentropfen auf dem Desktop
Verfasst: 09.07.2007 16:41
Tachchen,
hat jemand Interesse an Regentropfen,
dann soll er sich die (Link veraltet) saugen.
Einfach die EXE starten (am besten
auf dem Desktop) und kurz warten.
Beenden mit jeder Taste.
Danach müsste man nur kurz den Desktop "trocknen",
weil er danach "durchnässt" ist.
Ich kann die Teile leider (zur Zeit) für nix gebrauchen,
aber vllt hat ein von euch eine Idee,
für was man sie Brauchen kann.
hat jemand Interesse an Regentropfen,
dann soll er sich die (Link veraltet) saugen.
Einfach die EXE starten (am besten
auf dem Desktop) und kurz warten.
Beenden mit jeder Taste.
Danach müsste man nur kurz den Desktop "trocknen",
weil er danach "durchnässt" ist.
Ich kann die Teile leider (zur Zeit) für nix gebrauchen,
aber vllt hat ein von euch eine Idee,
für was man sie Brauchen kann.
Code: Alles auswählen
InitKeyboard()
Global DesktopOutput_Memory.l
DesktopOutput_Memory = AllocateMemory(1024, 1024)
Procedure.l DesktopOutput()
PokeL(DesktopOutput_Memory, 1)
ProcedureReturn DesktopOutput_Memory
EndProcedure
Procedure DesktopX()
ProcedureReturn GetSystemMetrics_(0)
EndProcedure
Procedure DesktopY()
ProcedureReturn GetSystemMetrics_(1)
EndProcedure
#b = 0.01745329
xP = DesktopX()
yP = DesktopY()
Dim Punkt(xP, yP)
Procedure DisplayTropfen(x,y,r)
rr = r*r
Ar.f = 1/rr
For yy = -r To r
sr = Sqr(rr-yy*yy)
For xx = -sr To sr
d = xx*xx+yy*yy
Px = Int(x+xx*d*Ar)
Py = Int(y+yy*d*Ar)
Plot(xx+x,yy+y,Punkt(Px,Py))
Next xx
Next yy
EndProcedure
Procedure Desktop()
xx = DesktopX() : yy = DesktopY()
For y = 0 To yy
For x = 0 To xx
Punkt(x,y) = Point(x,y)
Next x
Next y
EndProcedure
Structure T
x.l
y.l
r.l
EndStructure
NewList T.T()
Procedure NeuerTropfen()
AddElement(T())
T()\x = Random(DesktopX()-100)+50
T()\y = Random(DesktopY()/2)+50
T()\r = Random(25)+15
EndProcedure
For n = 1 To 10 : NeuerTropfen() : Next n
StartDrawing(DesktopOutput())
Desktop()
Repeat
ExamineKeyboard() : If KeyboardPushed(#PB_Key_All) : End : EndIf
ResetList(T())
While NextElement(T())
T()\y + 3
DisplayTropfen(T()\x,T()\y,T()\r)
If T()\y-T()\r > yP
DeleteElement(T())
NeuerTropfen()
EndIf
Wend
ForEver
StopDrawing()