Typeen taulukko?

Voit pyytää apua ohjelmointiongelmiin täältä.
Post Reply
jannepelaa
Active Member
Posts: 101
Joined: Tue Aug 28, 2007 2:27 pm

Typeen taulukko?

Post 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?
Harakka
Advanced Member
Posts: 430
Joined: Mon Aug 27, 2007 9:08 pm
Location: Salo
Contact:

Re: Typeen taulukko?

Post by Harakka »

Taitaapi olla mahdotonta.
Peli piirtokomennoilla - voittaja, Virtuaalilemmikkipeli - voittaja,
Sukellusvenepeli - voittaja, Paras tileset - voittaja
Vaihtuva päähenkilö - voittaja, Autopeli - voittaja sekä
Hiirellä ohjattava peli - voittaja B)
User avatar
Ilmuri
Developer
Developer
Posts: 277
Joined: Sun Aug 26, 2007 2:46 pm
Location: \o

Re: Typeen taulukko?

Post by Ilmuri »

Ellet käytä memblockeja. Niiden kanssa on tietysti tosin omat häslinkinsä.
CoolBasic henkilökuntaa
Kehittäjä
CoolBasic Classic
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Typeen taulukko?

Post 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.
User avatar
elmo123
Active Member
Posts: 153
Joined: Sun Sep 09, 2007 4:19 pm

Typeen taulukko?

Post 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
Kiinnostuin pelien tekemisestä ennen 1. luokkaa.
Sitten 3. luokalla tuli CB. Ja siitä se alkoi.

Blender! TF2! CB! Game Maker! Nokia-mollaus! Kitaransoitto! Breakdance! MadTracker! Minecraft!
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Typeen taulukko?

Post 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.
User avatar
Jare
Devoted Member
Posts: 877
Joined: Mon Aug 27, 2007 10:18 pm
Location: Pori
Contact:

Re: Typeen taulukko?

Post 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.
Henkru
Advanced Member
Posts: 359
Joined: Sun Aug 26, 2007 2:46 pm

Re: Typeen taulukko?

Post by Henkru »

Aika hieno viritelmä kyllä :D. Jarelal tuntuu näitä hienoja viritelmiä olevan erityisen paljon :D
Post Reply