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.
OpenWindow(0, 200,200, 500,500, #PB_Window_SystemMenu, "")
Img = CreateImage(#PB_Any, 500, 500)
Repeat
StartDrawing(ImageOutput())
For x = 0 To 500
For y = 0 To 500
If x & y <> 0
Plot(x,y, $FF)
EndIf
Next y
Next x
StopDrawing()
StartDrawing(WindowOutput())
DrawImage(UseImage(Img), 0,0)
StopDrawing()
Event = WaitWindowEvent()
If Event = 0
Delay(1)
EndIf
Until Event = #PB_Event_CloseWindow
OpenWindow(0, 200,200, 500,500, #PB_Window_SystemMenu, "")
Img = CreateImage(#PB_Any, 500, 500)
StartDrawing(ImageOutput())
For x = 0 To 500
For y = 0 To 500
If x & y <> 0
Plot(x,y, $FF)
EndIf
Next y
Next x
StopDrawing()
Repeat
StartDrawing(WindowOutput())
DrawImage(UseImage(Img), 0,0)
StopDrawing()
Event = WaitWindowEvent()
If Event = 0
Delay(1)
EndIf
Until Event = #PB_Event_CloseWindow
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
OpenWindow(0, 200,200, 300,300, #PB_Window_SystemMenu, "")
Img = CreateImage(#PB_Any, 300, 300)
x=16
y = 16
n=255
StartDrawing(ImageOutput())
For r=0 To n
For s=0 To n-r
If (r & s)
FrontColor(64+r/4,s/4,s/2+64)
Plot(x+r+5,y+s+5)
FrontColor(s/4,64+r/4,s/2+64)
Plot(x+6+n-r,y+6+n-s)
Else
FrontColor(128+r/4,s/2,s/2+128)
Plot(x+r+5,y+s+5)
FrontColor(s/2,128+r/4,s/2+128)
Plot(x+6+n-r,y+6+n-s)
EndIf
Next s
Next r
StopDrawing()
Repeat
StartDrawing(WindowOutput())
DrawImage(UseImage(Img), 0,0)
StopDrawing()
Event = WaitWindowEvent()
If Event = 0
Delay(1)
EndIf
Until Event = #PB_Event_CloseWindow
So long,
benny!
.
nur t0te f1sche schw1mmen m1t dem str0m - 00100 !
InitSprite()
OpenWindow(0, 200,200, 300,300, #PB_Window_SystemMenu, "")
OpenWindowedScreen(WindowID(0), 0, 0, 300, 300, 0, 0, 0)
Img = CreateSprite(#PB_Any, 300, 300)
x = 16
y = 16
n = 255
StartDrawing(ScreenOutput())
For r=0 To n
For s=0 To n-r
If (r & s)
Plot(x+r+5,y+s+5,RGB(64+r4,s/4,s/2+64))
Plot(x+6+n-r,y+6+n-s,RGB(s/4,64+r/4,s/2+64))
Else
Plot(x+r+5,y+s+5,RGB(128+r/4,s/2,s/2+128) )
Plot(x+6+n-r,y+6+n-s,RGB(s/2,128+r/4,s/2+128) )
EndIf
Next s
Next r
StopDrawing()
Repeat
Event = WaitWindowEvent()
If Event = 0
Delay(1)
EndIf
Until Event = #PB_Event_CloseWindow
Siehste! Geht doch....?! PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
Darauf habe ich bewußt in meinem Beispiel verzichtet, weil es ja in
letztzer Zeit immer mal Bug-Reports über Plot(x,y,RGB) gegeben
hat. (Oder ist der BUG bereits gefixt )
Deswegen habe ich diese Variante über direkten Speicherzugriff gemieden
und habe mich lieber für die GDI-Version (FrontColor) entschieden.
Besonders weil es bei den Zeichenoperationen im Prinzip nicht so sehr auf
Speed ankommt (wird ja nur einmal berechnet / gezeichnet).
So long,
benny!
.
nur t0te f1sche schw1mmen m1t dem str0m - 00100 !
@benny&ralle: Danke für die Komplimente, aber das ist auch nur eine umgewandelte Info aus dem unendlichen Internet
@DD: Jo ich weiss, ist halt so ein kurzer TestCode für kleine Fraktale von mir, der auch für bewegte Sachen funktionieren soll..
@KG:
@benny: nice!
@IS: Obwohl es hier nicht nötig wäre und es noch schneller ginge.