Author Topic: Type-Insanz uebergeben  (Read 2545 times)

Offline CptnRoughnight

  • Mr. Polyvector
  • ***
  • Posts: 114
    • View Profile
Type-Insanz uebergeben
« on: 2012-Aug-22 »
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
Es ist kein Mond....

A young band from Thuringia with a lot of potential :
http://youtu.be/diMBlNspsD8

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5116
  • O Rly?
    • View Profile
Re: Type-Insanz uebergeben
« Reply #1 on: 2012-Aug-23 »
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

Offline CptnRoughnight

  • Mr. Polyvector
  • ***
  • Posts: 114
    • View Profile
Re: Type-Insanz uebergeben
« Reply #2 on: 2012-Aug-23 »
Verstehe dein Einwand, nur finde ich es Übersichtlicher wenn man weniger Übergabevariablen hat.... ist ja jetzt auch kein riesen Problem war nur ein Vorschlag! :)
Es ist kein Mond....

A young band from Thuringia with a lot of potential :
http://youtu.be/diMBlNspsD8

Offline Quentin

  • Prof. Inline
  • *****
  • Posts: 915
    • View Profile
Re: Type-Insanz uebergeben
« Reply #3 on: 2012-Aug-24 »
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.

Offline CptnRoughnight

  • Mr. Polyvector
  • ***
  • Posts: 114
    • View Profile
Re: Type-Insanz uebergeben
« Reply #4 on: 2012-Sep-14 »
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
Es ist kein Mond....

A young band from Thuringia with a lot of potential :
http://youtu.be/diMBlNspsD8