Type-Insanz uebergeben

Previous topic - Next topic

CptnRoughnight

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 :

Code (glbasic) Select

TYPE TRect
  x1%
  x2%
  y1%
  y2%


Code (glbasic) Select

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 :
Code (glbasic) Select

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

Schranz0r

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.
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

CptnRoughnight

Verstehe dein Einwand, nur finde ich es Übersichtlicher wenn man weniger Übergabevariablen hat.... ist ja jetzt auch kein riesen Problem war nur ein Vorschlag! :)

Quentin

könntest dir ja eine Funktion schreiben, die dir ein TRect zurückliefert

Code (glbasic) Select

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.
Code (glbasic) Select

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.

CptnRoughnight

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