Page 1 of 1

Typeen taulukko?

Posted: Thu Oct 11, 2007 6:01 pm
by jannepelaa
Miten voin laittaa TYPE:en taulukon, tyyliin:

Code: Select all

Type Class
     Field taulukko (10) As Float
End Type
Onko vastaavan toteutus edes mahdollista?

Re: Typeen taulukko?

Posted: Thu Oct 11, 2007 6:46 pm
by Harakka
Taitaapi olla mahdotonta.

Re: Typeen taulukko?

Posted: Fri Oct 12, 2007 5:41 pm
by Ilmuri
Ellet käytä memblockeja. Niiden kanssa on tietysti tosin omat häslinkinsä.

Re: Typeen taulukko?

Posted: Sat Oct 13, 2007 3:24 pm
by koodaaja
Tätä olen itse pohtinut iät ja ajat ja kokeillut lähes kaikkia mahdollisia värkkejä... Ei tunnu onnistuvan. Samantapaista olen yrittänyt funkkareilla väkertää, metodin vastinetta siis.

Typeen taulukko?

Posted: Sun Oct 14, 2007 5:02 pm
by elmo123
Jos aiot sisällyttää siihen taulukkoon vaikka vihun tietoja, kuten healtti, ase ja niin edelleen..., tee sen sijaan

Code: Select all

Type VIHUT
    Field health
    Field ase
    Field shield
    ...
EndType
Mutta jos haluat vaikka sisällyttää taulukkoosi vaikka esim. hyttysestä tehtyjä kuvia, joiden kokoa on muutettu, toteuta kuvien lataus tällä tavalla

Code: Select all

Dim hyttynen(100)

hyt = LoadImage("hyttynen.bmp")

For i = 1 To 100
hyttynen(i) = CloneImage(hyt)
ResizeImage hyttynen(i),i,i
HotSpot hyttynen(i)
Next i


ja pistä tyyppi piirtämään vaikka hyttyskuva näin:

Code: Select all

DrawImage hyttynen(hytty\koko),hytty\x,hytty\y

Re: Typeen taulukko?

Posted: Sun Oct 14, 2007 8:07 pm
by koodaaja
elmo123 wrote:Jos aiot sisällyttää siihen taulukkoon vaikka vihun tietoja, kuten healtti, ase ja niin edelleen..., tee sen sijaan

Code: Select all

Type VIHUT
    Field health
    Field ase
    Field shield
    ...
EndType
Mutta jos haluat vaikka sisällyttää taulukkoosi vaikka esim. hyttysestä tehtyjä kuvia, joiden kokoa on muutettu, toteuta kuvien lataus tällä tavalla

Code: Select all

Dim hyttynen(100)

hyt = LoadImage("hyttynen.bmp")

For i = 1 To 100
hyttynen(i) = CloneImage(hyt)
ResizeImage hyttynen(i),i,i
HotSpot hyttynen(i)
Next i


ja pistä tyyppi piirtämään vaikka hyttyskuva näin:

Code: Select all

DrawImage hyttynen(hytty\koko),hytty\x,hytty\y
Jannepelaa tuntuu kyllä tietävän tämän, mutta jos haluat tehdä vaikka matriisin, on hiukka typerää tehdä 16 fieldiä yhden taulukon sijaan.

Re: Typeen taulukko?

Posted: Thu Oct 18, 2007 1:32 pm
by Jare
Memoryblockeihin ei tarvitse tutustua tämän asian hoitamiseksi.

Tarvittaessa pelkkä tavallinen string-muuttuja (tai field) käy taulukosta. Stringiin voi tehdä helposti yksiulotteisen taulukon, joskin myös moniulotteinen taulukko on mahdollista toteuttaa, mutta se on haastavampaa.

Oletetaan, että teemme yksiulotteisen taulukon (listan), jonka kussakin solussa voi olla luku tai merkkijono, jonka suurin sallittu pituus on vaikkapa 10 merkkiä. Soluja tässä taulukossa voisi olla vaikka 20.

Tehkäämme aluksi string-muuttuja, johon asetetaan 20 * 10 jotakin merkkiä, esimekriksi Chr(0). Tämä merkki tarkoittaa tyhjää, jossa ei ole mitään - ei edes välilyöntiä.

Taulukkoon voi asettaa arvon korvaamalla osan tämän muuttujan sisällöstä. Korvattava osa alkaa merkkijonon kohdasta "solu * 10", missä "solu" tarkoittaa haluamaamme solunumeroa (Huom! väliltä 0 - 19! Eli aloitetaan nollasta). Osa päättyy tästä kohdasta kymmenen merkin päähän. Korvaa tämä osa uudella arvolla. Muista, että uuden arvon on oltava täsmälleen yhtä pitkä kuin korvattavan osan, eli siis se kymmenen merkkiä! Jos uusi arvo on tätä lyhyempi, täytetään loppupää tyhjää tarkoittavalla merkillämme (tässä tapauksessa Chr(0))

Koodia:

Code: Select all

'Varataan "taulukko"
taulukko$ = String(Chr(0),20*10)

'Asetetaan arvo
solu = 5
uusiArvo$ = "01234567890"
offset = solu * 10
'Napataan Left:llä ja Mid:llä taulukon "reunat" niin, että korvattava osa jää pois. Liitetään uusi osa näiden "reunojen" väliin.
taulukko = Left(taulukko,offset-1) + uusiArvo + Mid(taulukko,offset+10)
Tästä kannattaa tehdä oma funktionsa, jolle välitetään taulukko-string, solunumero (index) sekä uusi arvo.

Seuraavaksi luemme taulukkoa. Se onkin helpompaa kuin kirjoittaminen.

Code: Select all

offset = solu * 10
luettuArvo$ = Mid(taulukko$,offset,10)
luettuArvo = Replace(luettuArvo,Chr(0),"") 'Poistetaan mahdolliset "tyhjät" merkit
Tästäkin voi tehdä helppokäyttöisemmän funktion.

Tämä on sitten helppo soveltaa tyyppeihin kun stringin voi laittaa fieldiksi. Samoin tällaisia taulukoita voi näppärästi välittää funktioiden parametreina ja paluuarvoina. ;)

Koodeja en ole testannut, mutta testaan ne myöhemmin ja muokkaan tarvittaessa. Voi olla että tuossa taulukkoon kirjoittamisessa on pientä virhettä.

Moniulotteisia taulukkoja en ala käsittelemään, koska en ole sellaisten luomiseen tällä tavalla vielä itsekään kunnolla perehtynyt.

Re: Typeen taulukko?

Posted: Thu Oct 18, 2007 1:42 pm
by Henkru
Aika hieno viritelmä kyllä :D. Jarelal tuntuu näitä hienoja viritelmiä olevan erityisen paljon :D