Haaaaallooo Leute,
ich bastel grad wieder bissi an meinem Endlos-Hobby-Jump'n'Run. Nun ist mir doch tatsaechlich eine Verbesserungsidee fuer GLBasic gekommen.
mein Code sieht in etwa so aus :
TYPE TRect
x1%
x2%
y1%
y2%
Function Draw:index%,rect as TRect
nun wuerde ich die Funktion Draw gerne aufrufen ohne eine Instanz von TRect mittels Local/Global zu erstellen, quasi eine Instanz erst beim Funktionsaufruf erzeugen und uebergeben, ich hab mir das so vorgestellt :
Draw(spr_player,[10,10,100,100])
Waere das moeglich, schon in Hinblick auf V11? Ist es ueberhaupt nuetzlich fuer andere, oder nur schlechter Programmierstil?!
LG
Hmm... versteh das Problem glaub nicht ganz...
Wieso verschachtelst du nicht TRect in einem TPlayer ?
Mit deiner Idee als Übergabe hättest du nie mehr bezug auf das erstellte TRect bzw. wenn das egal ist, kannst du gleich nur Parameter übergeben.
Verstehe dein Einwand, nur finde ich es Übersichtlicher wenn man weniger Übergabevariablen hat.... ist ja jetzt auch kein riesen Problem war nur ein Vorschlag! :)
könntest dir ja eine Funktion schreiben, die dir ein TRect zurückliefert
TYPE TRect
x1%
y1%
width%
height%
ENDTYPE
LOCAL r AS TRect
r = create_rect(10, 10, 100, 50)
draw(r)
SHOWSCREEN
KEYWAIT
FUNCTION create_rect AS TRect: x1%, y1%, width%, height%
LOCAL r AS TRect
r.x1 = x1
r.y1 = y1
r.width = width
r.height = height
RETURN r
ENDFUNCTION
FUNCTION draw: r AS TRect
DRAWRECT r.x1, r.y1, r.width, r.height, RGB(255, 0, 0)
ENDFUNCTION
nun könnte man ja vermuten, man könnte das in einen Befehl zusammenfassen, weil die Funktion create_rect ja ein TRect zurückliefert.
draw(create_rect(10, 10, 100, 50))
Das gibt allerdings einen Fehler durch den Precompiler. Das kann man bedauern, ich denke jedoch, wenn man das in zwei Codingzeilen packt, ist das doch übersichtlicher. Mich schaudert es ein wenig vor solchen Funktionsverkettungen. Es dient imho nicht gerade der Übersichtlichkeit, auch wenn manche Leute das elegant finden.
Ok,
danke für die Antwort. Ich denke du Hast Recht, ist wirklich übersichtlicher wenn ich es getrennt schreibe.
Werde das so beibehalten, ging mir ja vorallem um die Möglichkeit :)
mfg