Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
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.
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()
Zuletzt geändert von STARGÅTE am 27.08.2010 01:03, insgesamt 2-mal geändert.
Structure T
x.l
y.l
r.l
EndStructure
Global xP.l, yP.l, DesktopOutput_Memory.l
Global NewList T.T()
Procedure.l DesktopOutput()
PokeL(DesktopOutput_Memory, 1)
ProcedureReturn DesktopOutput_Memory
EndProcedure
Procedure DesktopX()
ProcedureReturn GetSystemMetrics_(0)
EndProcedure
Procedure DesktopY()
ProcedureReturn GetSystemMetrics_(1)
EndProcedure
DesktopOutput_Memory = AllocateMemory(1024)
#b = 0.01745329
xP = DesktopX()
yP = DesktopY()
Global 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
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
If StartDrawing(DesktopOutput())
Desktop()
Repeat
If GetAsyncKeyState_ (#VK_ESCAPE) : Break : 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()
EndIf
End
Ist allerdings noch ein Bug drin. Plot zeichnet wohl über den Bildschirm-
rand hinaus ....
"Papa, ich laufe schneller - dann ist es nicht so weit."
D@nte hat geschrieben:Zur Verwendung:
Kannst es ja an M$ mailen die VISTA User scheinen ja auf so Effektchen zu stehen
...das Programm funktioniert aber unter Vista so garnicht
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
@dige
Dein Code hat noch den fehler das du plot benutzt und deswegen wenn ein tropfen aus den bildschirm kommt der compiler meckert. Könntest du den fehler vielleicht mit einer If Endif abfrage verbessern?
PB 4.20,Blitz3D 1.98,Microsoft Visual Studio 2005 Professional, Microsoft Visual Studio 2008 Professional