Tyyppi toisen tyypin kenttänä

Oletko tehnyt jotain, mistä muut voisivat hyötyä. Postita vinkit tänne.
Post Reply
User avatar
SPuntte
Tech Developer
Tech Developer
Posts: 650
Joined: Mon Aug 27, 2007 9:51 pm
Location: Helsinki, Finland
Contact:

Tyyppi toisen tyypin kenttänä

Post by SPuntte » Thu Aug 28, 2008 7:24 pm

En tiedä, onko tämän jo joku keksinyt, mutta laitetaan ainakin kaikkien näkyville. Siis idea on, että Tyypin kenttämuuttujan voi määritellä customTyyppi -tyyppiseksi muutujaksi. Yksinkertainen pätkä koodia esimerkiksi:

Code: Select all

Type DATABLOCK
    Field content As Integer
EndType

Type TESTTYPE
    Field db.DATABLOCK
EndType

//ForceVariableDeclaration vatii nämä
Dim test.TESTTYPE, tmp.DATABLOCK

//Luodaan TESTTYPE-instanssi ja sen sisälle DATABLOCK-instanssi
test = New(TESTTYPE)
test\db = New(DATABLOCK)

//Tyypin sisäiseen instanssiin ei kuitenkaan voida viitata suoraan test\db\content,
//joten tarvitaan väliaikainen tyyppimuuttuja tmp
tmp = test\db
tmp\content = 1337

//Osoitetaan, että homma toimii
PrintData(ConvertToInteger(test))
WaitKey

Function PrintData(ID%)
    Dim _type.TESTTYPE, inside_type.DATABLOCK
    _type = ConvertToType(ID%)
    inside_type = _type\db
    Print inside_type\content
EndFunction
Kuten näkyy, tyyppiviittauksissa ei voi käyttää kahta tai useampaa kauttaviivaa, joten välimuuttujia tarvitaan, mutta systeemistä on silti tiettyjä hyötyjä. Voi esimerkiksi luoda tyypin, joka kantaa sisällään toista instanssia itsestään pelkän osoittimen sijasta. Tällöin säästyt kirjoittamasta kasaa ConvertToInteger()- ja ConvertToType()-funktiokutsuja.
CoolBasic henkilökuntaa
Tech-kehittäjä
CoolBasic Classic, Cool VES

CoolPhysicsEngine | MissileSystem | Jana-ympyrä -törmäys | cbSimpleTexture | CoolCPLX

User avatar
Valtzu
Active Member
Posts: 115
Joined: Sun Aug 26, 2007 2:40 pm
Location: Sauvo
Contact:

Re: Tyyppi toisen tyypin kenttänä

Post by Valtzu » Thu Aug 28, 2008 7:29 pm

No jotain samantyylistä joskus väkersin.. http://finhost8.futuron.fi/~coolbasi/ol ... c=7739&hl=

User avatar
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: Tyyppi toisen tyypin kenttänä

Post by MaGetzUb » Fri Aug 29, 2008 6:04 pm

Eli onko nämä niitä "tietotyyppejä"?
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.

User avatar
regalis
Advanced Member
Posts: 268
Joined: Mon Aug 27, 2007 9:44 pm

Re: Tyyppi toisen tyypin kenttänä

Post by regalis » Fri Aug 29, 2008 9:13 pm

programmer of DSG wrote:Eli onko nämä niitä "tietotyyppejä"?
Ei, tietotyyppejä on esim. kokonaisluvut, tavut, desimaaliluvut ja merkkijonot.

Tuo on kyllä todella kätevää, kun pitää vaikka tehdä RPG-pelin NPC:ille inventoryt tai muuta vastaavaa. Minäkin kyhäsin joskus samantapaisen systeemin johonkin projektiini, mutta se oli paljon pidempi ja purkkaisampi... :)

User avatar
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: Tyyppi toisen tyypin kenttänä

Post by MaGetzUb » Sun Aug 31, 2008 3:44 pm

regalis wrote:
programmer of DSG wrote:Eli onko nämä niitä "tietotyyppejä"?
Ei, tietotyyppejä on esim. kokonaisluvut, tavut, desimaaliluvut ja merkkijonot.

Tuo on kyllä todella kätevää, kun pitää vaikka tehdä RPG-pelin NPC:ille inventoryt tai muuta vastaavaa. Minäkin kyhäsin joskus samantapaisen systeemin johonkin projektiini, mutta se oli paljon pidempi ja purkkaisampi... :)
Oho, tullut pieni väärinkäsitys. :) No mutta kätevä tämä on silti. :D Esim pelisää vihollisella voi olla vain pelkkä reppu tyyppimuuttuja... Jos tajusin oikein
EDIT:

Mutta tuo reppu homma voi olla kovan homman takana. :roll:

Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.

Post Reply