Code: Alles auswählen
;Durchgang=15
Structure thing_struc ;Z1, Deeem2031 (11)
pos.l ;hinzugefügt, Deeem2031 (13)
radius.l ;hinzugefügt, NicTheQuick (14)
color.l ;hinzugefügt, NicTheQuick (14)
EndStructure ;Z1, Deeem2031 (11)
Define event.l, GadgetID.l ;hinzugefügt, NicTheQuick (2)
Define Anzahl.l = 1 ;hinzugefügt, NicTheQuick (8)
Global aktiv.l;hinzugefügt, Franky (9)
Global NewList thing.thing_struc() ;Z2, Deeem2031 (11)
Procedure HauptFunktion(wert1.l);Z1, Franky (5)
Protected a.l;Hinzugefügt, Franky (5)
Protected r.l ;hinzugefügt, NicTheQuick (14)
StartDrawing(ImageOutput(0)) ;Z1, Deeem2031 (6)
For a=0 To wert1;Z2, Franky (5)
ForEach thing() ;Z1, Deeem2031 (13)
For r = thing()\radius To 1 Step -1 ;Z1, NicTheQuick (14)
thing()\color=RGB(Random(255),Random(255),Random(255));Z1, Franky (15)
Circle(245 + ((thing()\pos>>16)&$FF-128) / (thing()\pos&$FF),232 + ((thing()\pos>>8)&$FF-128) / (thing()\pos&$FF+1),r,RGB(Red(thing()\color) * (thing()\radius - r) / thing()\radius, Green(thing()\color) * (thing()\radius - r) / thing()\radius, Blue(thing()\color) * (thing()\radius - r) / thing()\radius)) ;(Geändert) Z2, NicTheQuick (14)
;Circle(245 + ((thing()\pos>>16)&$FF-128) / (thing()\pos&$FF),232 + ((thing()\pos>>8)&$FF-128) / (thing()\pos&$FF+1),Random(5)+1,Random($FFFFFF)) ;(Geändert) Z2, Deeem2031 (13)
Next ;Z1, NicTheQuick (14)
Next ;Z1, Deeem2031 (13)
;Circle(Random(489),Random(465),Random(5)+1,Random($FFFFFF)) ;Z2, Deeem2031 (6)
Line(Int(Abs(Cos(wert1+a)*489)),Int(Abs(Sin(wert1+a)*465)),Int(Abs(Sin((wert1+a))*489)),Int(Cos(wert1+a)*465),Int(Abs(Tan(a)*255))<<((Int(Second(Date())/10)%3)*8)) ;Z1, hardfalcon (12)
Next;Z2, Franky (5)
DrawingMode(#PB_2DDrawing_Transparent) ;Z1, PMV (7)
DrawText(5, 5, "Programm des deutschen PureBasic Forums: www.pure-board.de", Random($FFFFFF)) ;Z2, PMV (7)
StopDrawing() ;Z1, Deeem2031 (6)
SetGadgetState(2, ImageID(0)) ;Z3, PMV (7)
EndProcedure;Z1, Franky (5)
Procedure NebenFunktion() ;Z3, NicTheQuick (8)
Protected posx.f,posy.f,radius.f = 100 + Random(100) ;Geändert, PMV (10)
;Protected posx.f,posy.f,radius.f;hinzugefügt, Franky(9)
CreateImage(1, radius, radius) ;Z1, PMV (10)
AddElement(thing()) ;Z3, Deeem2031 (11)
thing()\pos = (Random(200)<<16) | (Random(200)<<8) | (Random(5)+1) ;Z3, Deeem2031 (13)
thing()\radius = Random(10) ;Z3, NicTheQuick
StartDrawing(ImageOutput(0)) ;Z2, PMV (10)
DrawImage(ImageID(1), posx, posy) ;Z3, PMV (10)
StopDrawing() ;Z2, PMV (10)
EndProcedure ;Z3, NicTheQuick (8)
If CreateGadgetList(OpenWindow(1, 100, 100, 500, 550, "Das Super-Pure-Board-Programm")) ;Geändert, Z1, Deeem2031 (3)
;If OpenWindow(1, 100, 100, 500, 500, "Das Super-Pure-Board-Programm") ;Z1, Franky (1)
PanelGadget(3,0,0,WindowWidth(1),WindowHeight(1));Z2, Franky(15)
AddGadgetItem(3,1,"Bunte Bilder");Z3, Franky(15)
ButtonGadget(0,5,475,490,20,"Start") ;Z2, Deeem2031 (3)
ContainerGadget(1, 5, 5, 490, 465, #PB_Container_Single) ;Z1, milan1612 (4)
ImageGadget(2,0,0,490,465,CreateImage(0,490,465)) ;Z3, Deeem2031 (6)
CloseGadgetList();Auf Wunsch für Milan hinzugefügt (5)
Repeat ;Z2, Franky (1)
event = WaitWindowEvent(10) ;geändert, NicTheQuick (14)
;event = WaitWindowEvent() ;Z3, Franky (1)
GadgetID = EventGadget() ;Z1, NicTheQuick (2)
If aktiv=1; Z1, Franky (9)
NebenFunktion(); Z2, Franky (9)
HauptFunktion(Anzahl) ;Z2, hardfalcon (12)
Anzahl + 1 ;Z3, hardfalcon (12)
EndIf
Select event ;Z2, NicTheQuick (2)
Case #PB_Event_Gadget ;Z3, NicTheQuick (2)
Select GadgetID ;Z3, Deeem2031 (3)
Case 0 ;Geändert, PMV (7)
;Case 1 ;Z2, milan1612 (4)
If EventType() = #PB_EventType_LeftClick ;Z3, milan1612 (4)
;HauptFunktion(Anzahl) ;Z1, NicTheQuick (8)
aktiv=aktiv!1; Z3, Franky (9)
;HauptFunktion(15) ;Z3, Franky (5)
;Anzahl + 1 ;Z2, NicTheQuick (8)
EndIf ;Z3, milan1612 (4)
EndSelect ;Z3, Deeem2031 (3)
EndSelect ;Z2, NicTheQuick (2)
Until event = #PB_Event_CloseWindow ;Z2, Franky (1)
EndIf ;Z1, Franky (1)
OK, Kinder, Folgende neue Regelvorschläge:
1.)Proceduren Dienen der Übersicht, die Deklaration einer Procedure sollte für den Schreibenden also keinen Nachteil ergeben, daher denke ich:
1.1) Procedure, EndProcedure zählen nicht als BEfehlszeilen
1.2) Wenn man eine Procedure erstellt, darf sie eine Zeile enthalten, die auch nicht zählt (Bei einmaligem Aufruf ist das gleichbedeutend mit einem Code ohne Procedureaufruf)
1.3)Beim hinzufügen eines Parameters gilt die Gesamte änderung des Procedure-Kopfes mit Änderung der einzelnen Aufrufe als änderung einer Befehlszeile. So verhindern wir übermäßige Nutzung optionaler Parameter
2)Die Definition von Befehlszeile würde ich gerne leicht abändern von:
...Der ohne einen Doppelpunkt in eine Zeile geschrieben werden kann....
in
...Der ohne einen Doppelpunkt in eine Zeile geschrieben werden könnte....
Der Grund hierfür ist zum Beispiel in der Procedure für die Platzierung der Kreise zu sehen. Da hat man einen unendlich langen Wuust, den man besser in 4 Zeilen teilen könnte:
Zeile 4 enthält den Code, Zeile 1-3 deklarationen für Variablen, die dann in den Code eingefügt werden. Ich möchte so zu sagen die Auslagerung von Code anstreben aus gründen der Übersichtlichkeit

den Beweis kann dann ja jeder direkt bei der Änderung kurz unten angeben.
Äh, zum Thema Procedure nochmal:
Darf jemand Proceduren erstellen, die er dann nicht benutzt? Ich wär dagegen, man kann ja am ende seiner antwort immer noch schreiben:
"Füg mal bitte wer das hier ein".....
Sonst haben wir nacher 1000 Ungenutzte Proceduren
Achja, also mal die Liste der Dinge, die als einzelnes keine Befehlszeile darstellen:
Code: Alles auswählen
Next
End....(-Select/-If/-etc.)
Wend
Repeat (oder Until/Forever, mir egal)
Procedure und Endprocedure
Alles von Enumeration bis EndEnumeration
Global, Static, Protected, Shared
Alles von Structure bis EndStructure
Ordnung sollte oberstes Gebot sein, damit
-Der Code auch im 100ten Durchlauf noch verstehbar ist (mehr oder Weniger)
-Nicht jeder ab dem 20ten Durchlauf nur noch eigenen Code anfängt und man so parallel mehrere Programme jeweils alleine entwickelt, sondern auf die Codes der Anderen eingeht.
Daher wär auch ein Changelog der eigenen Änderungen am Ende nich schlecht. Hat man den Alten Code noch im Kopf, kann man sich kurz durch den Changelog wieder reindenken.
Kommentare?