Janelas 1.0

- Ohjeet -

Tervetuloa selaamaan Janelas:n ohjetta!

Janelas on ilmainen ja kevyt ikkunamoottori CoolBasic:lle. Sen avulla on helppoa luoda useitakin samanaikaisia ikkunoita CoolBasic-peleihin ja -ohjelmiin. Ikkunoihin voi piirtää mitä tahansa CoolBasic:n omilla piirtokomennoilla samaan tapaan kuin piirretään kuviin. Ikkunoita voi myös esimerkiksi raahata hiirellä ja niiden sisältö on mahdollista piilottaa niin, että ikkunasta näkyy vain otsikkopalkki. Moottori on tehty mahdollisimman yksinkertaiseksi ja helpoksi käyttää - monipuolisuutta ja tehokkuutta kuitenkaan unohtamatta!

Moottorin nimi tulee portugalinkielisestä sanasta janelas, joka on suomeksi ikkunat. Englanninkielinen vastine oli jo varattu.

Jotta moottori toimisi, muista linkittää se ohjelmaasi CoolBasic:n Include-käskyllä!


Sisälmysluettelo


Mikäli käytät Janelas:a pelissäsi tai ohjelmassasi, olisi mukavaa, mikäli mainitsisit pelisi tai ohjelmasi yhteydessä moottorin tekijän sekä tietysti sen, että peli tai ohjelma käyttää juuri Janelas-moottoria. Pakko ei ole, mutta kiva kuitenkin. Kiitos.



1. Moottorin perusominaisuudet

Tämä kappale sisältää pähkinänkuoressa kaiken sen, mihin Janelas pystyy ja miten se toimii. Vaikka yksin tämän kappaleen lukeminen ei riitä moottorin käyttämiseksi, on se kuitenkin syytä lukea pohjatietojen vuoksi.

Moottorin toimintaperiaate on yksinkertainen. Ikkunoiden erilaiset tiedot talletetaan taulukkoihin, joista ne käydään läpi. Ikkunoiden sisältämä teksti ja grafiikka piirretään taulukoituihin kuviin, jotka moottori liimaa ikkunoihin. Käyttäjä siis piirtää ikkunan sisällön kuvaan käyttämällä ensin DrawToWindow()-funktiota ja sen jälkeen CoolBasic:n piirtokomentoja. Edellä mainittu funktio ohjaa piirtämisen oikeaan kuvaan ja tarvittaessa tyhjentää sitä ennen kuvan aiemmasta tekstistä ja grafiikasta.

Ikkunat luodaan käyttäen NewWindow()-funktiota, jolle annetaan parametriksi ikkunassa tarvittavat tiedot. Funktio palauttaa luotuun ikkunaan viittaavan id-numeron, jonka avulla ikkunaa voidaan käsitellä myöhemmin. Numero on syytä ottaa talteen johonkin muuttujaan. Janelas päivittää ja piirtää kaikki ikkunat oikeassa järjestyksessä käytettäessä UpdateWindows()-funktiota. Tätä tulisi käyttää yhden kerran jokaisella ohjelman päälenkin suorituskerralla.

Ikkunoiden värit on mahdollista valita ikkunakohtaisesti. Värit voit määrittää ikkunassa kolmelle elementille: kehys, tausta ja otsikkopalkki. Viimeisessä käytetään kahta väriä, joista muodostetaan liukuväri.

Aivan kivuttomasti Janelas ei CoolBasic:ssa kuitenkaan toimi. Ongelmia nimittäin syntyy käytettäessä CoolBasic:n objekteja. Koska objekteja ei piirretä yksitellen, niiden sijoittaminen ikkunoihin on mahdotonta. Ikkunoidenhan on yleensä mentävä toistensa päälle - ja tällöin objektien kokonaan/osittain piilottaminen päällimäisten ikkunoiden alle alimmissa ikkunoissa on erittäin hankalaa. Lisäksi objektien maailmankoordinaatit voivat aiheuttaa ongelmia sijoitettaessa objektia ikkunaan. On myös huomattava, että myös CoolBasic:n tilemapit ovat objekteja, joten pelikenttiä ei saa ikkunaan, mikäli ne ovat tilemappeja.

Tilanne onkin ratkaistava itse pelin/ohjelman suunnittelussa niin, että ikkunat sisältävät vain sellaista materiaalia, jossa ei tarvita objekteja. Pelikentät taas piirretään ihan normaalisti ohjelmaikkunan taustalle. Jos käytät objekteja, muista myös kirjoittaa DrawGame ennen ikkunat piirtävää UpdateWindows()-funktiota.

CoolBasic:n Text-komennon kanssa on vielä yksi bugi, josta tarkemmin YCoordinateFactor-vakion yhteydessä..




2. Funktioiden käyttöopas

Tämä kappale sisältää tiedot kaikista Janelas:n funktioista ja niiden käyttämisestä. Osa funktioista on sellaisia, joita käyttäjän ei ole normaaliolosuhteissa tarkoitus käyttää. Ne ovat kuitenkin listattu tähän siltä varalta, että joku haluaa muokata Janelas:a vähän reilummallakin kädellä. Tälläiset funktiot on merkitty tähdellä (*). Joidenkin funktioiden esimerkeissä käytetään muuttujaa nimeltä ViestiIkkuna. Tämä on vain havainnollistava esimerkki ikkunasta, joka voisi sisältää esimerkiksi pelin tai ohjelman näyttämiä viestejä pelaajalle.

Monet funktiot muuttavat (tai kutsuvat toista funktiota, joka muuttaa) CoolBasic:n piirtoväriä ja piirtokohdetta (Screen tai Image). Tälläiset funktiot on merkitty #:llä.

Huomautus id-parametrien käytöstä! Käyttäessäsi id-parametria sinun on ensin varmistuttava, että parametri on kelvollinen. Sen pitäisi olla väliltä 1 - 20 (20 on oletusraja ikkunoiden määrälle, mutta sitä voi muuttaa). Mikäli Id ei ole tältä väliltä, ohjelma kaatuu virheilmoitukseen, jossa kerrotaan muistiylivuodosta. Kun id-arvo on em. rajojen sisällä, Janelas osaa itse tarkistaa, onko ko. ikkunaa olemassa. Jos ei ole, niin ohjelma ei kaadu vaan hallitsee tilanteen. Joissakin funktioissa voit id:n sijasta käyttää ALL_WINDOWS-vakiota. Mikäli yrität käyttää tätä sellaisessa funktiossa, jossa sitä ei ole tarkoitettu käytettäväksi, ohjelma kaatuu jälleen yllä mainittuun virheilmoitukseen. Tarkkana siis id-numeroiden käytössä! (NewWindow()-funktio ei koskaan palauta sellaista id-numeroa, joka kaataisi ohjelman sen vuoksi, että id olisi rajojen ulkopuolella. Näin ollen ohjelman kaatumisriski tämän asian vuoksi on erittäin pieni).


Funktio (parametreineen)KuvausEsimerkki
ChangeWindowBackgroundColor(id, r,g,b)Muuttaa halutun ikkunan taustaväriä.

Huom! CoolBasic:n sisäänrakennetut värivakiot eivät toimi tässä, sillä värit on ilmoitettava RGB-muodossa!

ALL_WINDOWS-vakion käyttäminen id-parametrissa asettaa uudet värit oletusväreiksi seuraaville uusille ikkunoille.
ChangeWindowBackgroundColor(ViestiIkkuna, 255,255,255)
ChangeWindowBorderColors(id, r,g,b, ar,ag,ab)Muuttaa halutun ikkunan kehyksen väriä.

Parametrit:
  • id: sen ikkunan id-numero, jonka kehystä muutos koskee
  • r,g,b: Ei-aktiivisen kehyksen väri RGB-muodossa.
  • ar,ag,ab: Aktiivisen kehyksen väri RGB-muodossa.

  • Huom! CoolBasic:n sisäänrakennetut värivakiot eivät toimi tässä, sillä värit on ilmoitettava RGB-muodossa!

    ALL_WINDOWS-vakion käyttäminen id-parametrissa asettaa uudet värit oletusväreiksi seuraaville uusille ikkunoille.
    ChangeWindowBorderColors(ViestiIkkuna, 0,128,192, 0,64,128)
    # ChangeWindowHeadbarColors(id, r1,g1,b1, r2,g2,b2, ar1,ag1,ab2, ar2,ag2,ab2)Kohdistaa CoolBasic:n piirtokomennot haluttuun ikkunaan.

    Parametrit:
  • id: sen ikkunan id-numero, jonka otsikkopalkkia muutos koskee
  • r1,g1,b1: Ei-aktiivisen otsikkopalkin liukuvärin ulompi väri RGB-muodossa.
  • r2,g2,b2: Ei-aktiivisen otsikkopalkin liukuvärin sisempi väri RGB-muodossa.
  • ar1,ag1,ab1: Aktiivisen otsikkopalkin liukuvärin ulompi väri RGB-muodossa.
  • ar2,ag2,ab2: Aktiivisen otsikkopalkin liukuvärin sisempi väri RGB-muodossa.

  • Huom! CoolBasic:n sisäänrakennetut värivakiot eivät toimi tässä, sillä värit on ilmoitettava RGB-muodossa!

    ALL_WINDOWS-vakion käyttäminen id-parametrissa asettaa uudet värit oletusväreiksi seuraaville uusille ikkunoille.
    ChangeWindowHeadbarColors(ViestiIkkuna, 0,0,255, 0,128,192, 0,0,128, 0,64,128)
    # ChangeWindowTitle(id, r,g,b, [fontti], [otsikko$])Muuttaa ikkunan otsikon väriä, fonttia ja tekstiä.

    Parametrit:
  • id: sen ikkunan id-numero, johon muutokset tulee kohdistaa
  • r,g,b: Otsikon väri RGB-muodossa.
  • fontti (valinnainen): Otsikossa käytettävä fonttimuuttuja. Huom! Fontti on ensin ladattava muistiin käyttäen LoadFont-muuttujaa! Jos nolla, fonttia ei vaihdeta (oletus).
  • otsikko$ (valinnainen): otsikoksi laitettava teksti.


  • ALL_WINDOWS-vakion käyttäminen id-parametrissa asettaa uuden otsikkovärin oletusväriksi seuraaville uusille ikkunoille. Tällöin valinnaiset parametrit eivät mene minnekään oletusarvoiksi!
    ChangeWindowTitle(ViestiIkkuna, 0,255,255, OtsikkoFontti, "Hello World!")
    DeleteWindow(id)Poistaa ikkunan muistista. Yksittäisen ikkunan id:n voi myös korvata ALL_WINDOWS-vakiolla.DeleteWindow(ALL_WINDOWS) 'tuhotaan kaikki ikkunat
    # DrawToWindow(id, [tyhjennys])Kohdistaa CoolBasic:n piirtokomennot haluttuun ikkunaan.

    Parametrit:
  • id: sen ikkunan id-numero, johon piirtokomennot tulee kohdistaa
  • tyhjennys (valinnainen): tyhjennetäänkö ikkunan vanha sisältö pois ennen uutta piirtämistä. Joko ON tai OFF. Oletuksena ON. Laita OFF, mikäli haluat jatkaa ikkunaan piirtämistä tyhjentämättä sitä.
  • DrawToWindow(ViestiIkkuna)
    * FormatWindowsDefaultColors()Alustaa uusien ikkunoiden oletusvärit. Oletusvärejä ei tosin pysty vielä muuttamaan, joten funktiota tarvitaan vain kerran Janes:n alussa (jossa sitä jo kutsutaan, eli funktiosta ei tarvitse välittää).FormatWindowsDefaultColors()
    * GetActiveWindow()Käy ikkunat läpi piirtojärjestyksessä ja etsii sen, jonka päällä hiiri on. Mikäli hiiri on usean ikkunan päällä, valitaan päällimäinen ikkuna. Palauttaa löydetyn ikkunan id:n ActiveWindow-muuttujaan. Funktiota kutsutaan automaattisesti aina kun ikkunat päivitetään.GetActiveWindow()
    * # MakeWindowHeadbar(id)Laskee ja piirtää ikkunalle uuden otsikkopalkin. Käytetään uuden ikkunan luomisen yhteydessä sekä muokattaessa jo olemassa olevan ikkunan otsikkopalkkia. Hyödytön tavalliselle käyttäjälle, sillä Janelas kutsuu tätä automaattisesti. Raskas, joten ei sovellu käytettäväksi silmukassa kokoajan.MakeWindowHeadbar(ViestiIkkuna)
    MouseXInWindow(id)Palauttaa hiiren x-koordinaatin tietyn ikkunan koordinaateista mitattuna.If MouseXInWindow(ViestiIkkuna) > 50 Then ...
    MouseYInWindow(id)Palauttaa hiiren y-koordinaatin tietyn ikkunan koordinaateista mitattuna.If MouseYInWindow(ViestiIkkuna) > 50 Then ...
    # NewWindow(otsikko$, x, y, leveys, korkeus, [otsikkopalkin paksuus], [otsikkopalkin sijoitus], [auki/kiinni])Luo muistiin uuden ikkunan.

    Parametrit:
  • otsikko$: Otsikkopalkissa näkyvä teksti
  • x, y: ikkunan sijainti (lasketaan niin, että ikkunan sisällön vasen yläkulma tulee näihin koordinaatteihin)
  • leveys, korkeus: ikkunan sisällön ulottuvuudet (lopulliseen ikkunan kokoon tulee vielä lisäksi kehys ja otsikkopalkki)
  • Otsikkopalkin paksuus (valinnainen): Otsikkopalkin paksuus, jos nolla tai HEADBAR_OFF, niin ikkunassa ei ole kehystä. Oletuksena 20.
  • otsikkopalkin sijoitus (valinnainen): joko HEADBAR_TOP tai HEADBAR_BOTTOM, eli otsikkopalkin sijainti ikkunassa. Oletuksena HEADBAR_TOP.
  • auki/kiinni (valinnainen): Onko ikkuna aluksi auki vai kiinni (kiinni = ikkuna on pienennetty otsikkopalkin kokoiseksi). Joko WINDOW_OPEN tai WINDOW_CLOSED. Oletuksena WINDOW_OPEN.

  • Palauttaa uuteen ikkunaan viittaavan id-numeron, jolla ikkunaa voidaan myöhemmin komentaa. Id on juokseva numero, joka alkaa numerosta 1.
    ViestiIkkuna = NewWindow("Hello World!", 50,50, 100,200, 20,HEADBAR_TOP, WINDOW_OPEN)
    PositionWindow(id, x,y)Muuttaa ikkunan sijaintia näytöllä.PositionWindow(ViestiIkkuna, 100,150)
    # ResizeWindow(id, leveys, korkeus, [sisällön venytys], [otsikkopalkin paksuus])Muuttaa ikkunan kokoa. Parametrit:
  • id: sen ikkunan id, jota halutaan muuttaa
  • leveys, korkeus: Ikkunan uusi leveys ja korkeus
  • Sisällön venytys (valinnainen): True tai False. True venyttää ikkunan sisällön uuden koon mukaiseksi, False ei. Oletuksena False.
  • Otsikkopalkin paksuus (valinnainen): Otsikkopalkin uusi paksuus. Oletuksena otsikkopalkin paksuutta ei muuteta. Tähän voi myös laittaa HEADBAR_OFF-vakion, jolloin otsikkopalkki piilotetaan.
  • ResizeWindow(ViestiIkkuna, 400,250, 30)
    ScreenXInWindow(id, x)Funktiolle syötetään ruudulta x-koordinaatti, jonka jälkeen funktio palauttaa vastaavan x-koordinaatin halutussa ikkunassa.muuttuja = ScreenXInWindow(ViestiIkkuna, 100)
    ScreenYInWindow(id, y)Funktiolle syötetään ruudulta y-koordinaatti, jonka jälkeen funktio palauttaa vastaavan y-koordinaatin halutussa ikkunassa.muuttuja = ScreenYInWindow(ViestiIkkuna, 100)
    SetWindowState(id, koko, [OtsikkopalkinSijoitus])Parametrilla koko voit muuttaa ikkunan kokotilaa, eli onko ikkuna auki (True) vai pienennetty pelkäksi otsikkopalkiksi (False). Parametrilla otsikkopalkinSijoitus taas voit määrätä, näkyykö otsikkopalkki ikkunan yläpuolella (0) vai alapuolella (1). Oletuksena otsikkopalkin paikkaa ei muuteta.

    Hyväksyy id:n sijasta myös ALL_WINDOWS-vakion.
    SetWindowTopmost(ViestiIkkuna)
    SetWindowTopmost(id)Siirtää halutun ikkunan piirtojärjestyksessä viimeiseksi, jolloin se piirretään päällimäiseksi. Ikkuna pysyy päällimmäisenä niin kauan, että jokin toinen ikkuna nostetaan päällimäiseksi joko ohjelman tai moottorin toimesta.SetWindowTopmost(ViestiIkkuna)
    SetWindowTransparency(id, [ON/OFF])Tekee ikkunan taustasta läpinäkyvän tai jos valinnaiseksi parametriksi laitetaan OFF, niin poistaa läpinäkyvyyden. Läpinäkyväksi jää siis ikkunassa se osa, johon ei piirretä mitään. Ikkunoista ei saa läpikuultavia.SetWindowTransparency(ViestiIkkuna)
    # UpdateWindows()Päivittää ja piirtää kaikki ikkunat. Ei ota mitään prametreja. Tärkeä!UpdateWindows()
    WindowXOnScreen(id, x)Funktiolle annetaan parametrina x-koordinaatti jossakin tietyssä ikkunassa, jonka jälkeen funktio palauttaa vastaavan x-koordinaatin ruudulla.muuttuja = WindowXOnScreen(ViestiIkkuna, 75)
    WindowYOnScreen(id, y)Funktiolle annetaan parametrina y-koordinaatti jossakin tietyssä ikkunassa, jonka jälkeen funktio palauttaa vastaavan y-koordinaatin ruudulla.muuttuja = WindowYOnScreen(ViestiIkkuna, 75)




    3. Muuttujien ja vakioiden käyttöopas

    Tämä kappale sisältää taulukon Janelas:n muuttujista ja vakioista. Muuttujien arvoa ei kannata muuttaa suoraan - tätä varten on olemassa liuta funktioita, jonka näet ylemmästä kappaleesta. Muuttujia kannattaakin käyttää ikkunoiden erilaisten arvojen selvittämiseksi. Voit esimerkiksi katsoa, pitääkö käyttäjä jotakin ikkunaa pienennettynä. Taulukosta on jätetty pois ikkunoiden värit sisältävät taulukot niiden suuren määrän vuoksi. Näitä taulukoita tuskin edes tarvitaan Janelas-moottorin ulkopuolella. Tähdellä merkittyjä muuttujia ei yleensä tarvitse käyttää.

    Luethan edellisen kappaleen funktio-taulukon läpi ennen kuin alat opetella näitä muuttujia. Näin saat muuttujista kaiken irti ja osaat käyttää niitä oikein.


    Muuttuja (ulottuvuuksineen)TyyppiKuvaus
    ActiveWindowIntegerKertoo sen ikkunan id:n, mikä on aktiivinen. Ikkuna on aktiivinen kun hiiri on sen päällä ja ikkuna ei ole hiiren kohdalta muiden ikkunoiden peitossa. Ikkunaa ei tarvitse klikata aktiiviseksi. Jos mikään ikkuna ei ole aktiivinen, tämän arvo on nolla.
    ALL_WINDOWSVakioTätä voidaan käyttää parametrinä joissakin funktioissa, jolloin funktio vaikuttaa kaikkiin olemassa oleviin ikkunoihin. Tälläisten funktioiden kohdalla on erikseen mainittu tämän muuttujan käytöstä. Funktiot eivät koskaan käytä tätä muuttujaa palauttaessaan arvoja.
    HEADBAR_BOTTOMVakioKs. funktio NewWindow(), parametri otsikkopalkin sijoitus.
    HEADBAR_OFFVakioKs. funktio NewWindow(), parametri otsikkopalkin paksuus.
    HEADBAR_TOPVakioKs. funktio NewWindow(), parametri otsikkopalkin sijoitus.
    TOO_MUCH_WINDOWSByteFunktio NewWindow() asettaa tämän muuttujan arvoksi True, mikäli ikkunoiden maksimimäärä (ks. muuttuja WindowsNoMax) on jo aikaisemmin saavutettu ja ohjelmassa yritetään luoda uutta ikkunaa. Tämän muuttujan arvo palautetaan automaattisesti takaisin Falseksi kun ikkunat päivitetään seuraavan kerran.
    * WindowContents(id)IntegerLinkki ikkunan sisällön sisältävään kuvaan.
    WINDOW_DOES_NOT_EXISTVakioJos tämän muuttujan arvo on True, on yritetty käyttää jossakin funktiossa sellaista ikkunaa, jota ei ole. Ikkuna on saatettu esimerkiksi poistaa joskus aiemmin. Tämän muuttujan saattaa asettaa Trueksi mikätahansa funktio, jolle annetaan parametriksi jonkin ikkunan id. Tämän muuttujan arvo muutetaan takaisin Falseksi kun ikkunat päivitetään seuraavan kerran.
    WindowExists(id)ByteKertoo, onko ikkuna olemassa. True, jos on, muuten False.
    WindowH(id)ShortKertoo ikkunan korkeuden (otsikkopalkkia ei lasketa).
    * WindowHeadbar(id, kuva)IntegerLinkit ikkunan otsikkopalkin kuviin palkin eri muodoissa (kuvat 0-7).
    WindowHeadbarPlace(id)ByteKertoo ikkunan otsikkopalkin sijainnin ikkunaan nähden. Joko HEADBAR_TOP tai HEADBAR_BOTTOM.
    WindowHeadbarThickness(id)ShortKertoo ikkunan otsikkopalkin paksuuden.
    WindowOpen(id)ByteKertoo onko ikkuna auki (True) vai pienennettynä otsikkopalkiksi (False).
    WINDOW_OFFVakioKs. funktio NewWindow(), parametri auki/kiinni.
    WINDOW_OPENVakioKs. funktio NewWindow(), parametri auki/kiinni. Huom! Älä sekoita tätä yllä olevaan melkein saman nimiseen taulukkoon!
    * WindowsDrawOrder(piirtosija)IntegerSisältää ikkunoiden id:t lajiteltuina piirtojärjestykseen. Ensimmäisenä oleva ikkuna piirretään alimmaksi.
    WindowsNoIntegerKertoo, kuinka monta ikkunaa on olemassa. Poistettaessa ikkunoita tämä arvo siis vähenee.
    WindowsNoCreatedIntegerKertoo, kuinka monta ikkunaa on luotu kaiken kaikkiaan. Poistettaessa ikkunoita tätä arvoa ei siis vähennetä!
    WindowsNoMaxVakioIkkunoiden maksimimäärä. Oletuksena 20. Arvoa voi muuttaa Janelas:n koodista (sijaitsee aivan koodin alussa).
    WindowTitle(id)StringIkkunan otsikkopalkin teksti.
    * WindowTitleFont(id)IntegerLinkki ikkunan otsikon fonttiin.
    * WindowTransparency(id)ByteKertoo, onko ikkunan tausta läpinäkyvä (True) vai ei (False).
    WindowW(id)ShortKertoo ikkunan leveyden (kehystä ei lasketa).
    WindowX(id)IntegerKertoo ikkunan x-koordinaatin (koordinaatit lasketaan ikkunan sisällön vasemmasta yläkulmasta).
    WindowY(id)IntegerKertoo ikkunan y-koordinaatin (koordinaatit lasketaan ikkunan sisällön vasemmasta yläkulmasta).
    YCoordinateFactorVakioTämä korjaa CoolBasic:ssa esiintyvän bugin! Text-komennossa menee joillakin koneilla Y-koordinaatti negatiiviseksi kun tekstiä tulostetaan kuvaan. Tämän vakion muuttamalla -1:ksi saat Janelas:n moottorin korjaamaan ikkunoiden otsikkopalkkeihin kirjoitetettavan tekstin Y-koordinaatin niin, että Y-koordinaatti toimii oikein. Jos sinulla ei tätä bugia esiinny (tai se on lähtenyt pois esim. CB:n päivityksen myötä), tarkista, että arvo on 1. Tämä vakio löytyy Janelas:n koodin alusta, kohdasta Muuttujat -> Yleiset. Tämän vakion käytöstä luovutaan (jossakin Janelas:n päivityksessä) CB:n päivityksen korjatessa tämän bugin.




    4. Tehovaatimukset

    Janelas on kehitetty mahdollisimman kevyeksi ikkunamoottoriksi. Suurin osa raskaasta laskennasta on toteutettu niin, että kaikki täysin samalla tavalla toistuvat toimet on tehty vain kerran uutta ikkunaa luodessa ja säilötty sitten muistiin, jolloin laskentatehoa säästetään huimasti. Janelas-moottoria on testattu koneella, jossa on 2.6 Ghz Intel P4, 1.5 Gt muistia sekä Windows Xp-käyttöjärjestelmä. Janelas kykeni pyörittämään noin kolmea kymmentä ikkunaa FPS:n pyöriessä noin 60:n maissa. Kahdella kymmenellä ikkunalla FPS pysyi 75:ssä. FPS laskee uusia ikkunoita luotaessa, mutta ikkunan luomisen jälkeen se palaa ennalleen, jos ikkunoita ei ole liikaa. Testissä kuhunkin ikkunaan oli kirjoitettu tekstiä juuri ikkunan luomisen jälkeen, mutta ikkunoiden sisältöä ei kuitenkaan muutettu testin aikana. Janelas kykeni pyörittämään myös jopa 50:tä ikkunaa 75 FPS:llä, kun suurin osa ikkunoista pidettiin pinennettynä otsikkopalkin kokoiseksi! 50 oli korkein määrä ikkunoita, millä Janelas:a testattiin.

    Tehovaatimukset siis eivät ole kovin suuret, jos ajatellaan, että todellisessa käytössä (jossakin pelissä tai ohjelmassa) ikkunoita olisi kerralla käytössä korkeintaan kymmenen. Janelas:n tarkasta muistin käytöstä minulla ei ole tarkkaa tietoa, mutta suuntaa antaa se, että käytössä on kirjoitushetkellä 26 eri taulukkoa, joista jokainen sisältää vähintään niin monta solua kuin ikkunoiden maksimimääräksi on annettu (oletus 20). Monet taulukot sisältävät vielä tätäkin enemmän soluja. Eli muistia käytetään kohtalaisen paljon, mutta en usko sen olevan nykykoneilla mikään ongelma. Taulukoiden sijasta olisin voinut käyttää tyyppejä, mutta tämä olisi ollut hankalampaa ja kenties raskaampaa. Taulukoissahan voidaan suoraan viitata tiettyyn soluun, kun taas tyypeissä sama olisi vähän mutkikkaampaa.

    Enivei. Moottorin tehonkäytössä on siis otettu huomioon se, että suurimmat tehot tarvitaan itse peliin/ohjelmaan niin hyvin kuin suinkin.




    5. Tekijä & palaute

    Koodaus, suunnittelu, ohjeet: Jarkko 'Jare' Linnanvirta, K-pelit (www.kpelit.se8.org, kpelit2003@hotmail.com)

    Palautetta saa lähettää. Uusia päivityksiä kannattaa vilkuilla osoitteesta www.janelas.se8.org (tai sitten koti.mbnet.fi/jare1/janelas/).

    Mikäli sinulla on ideoita moottorin kehittämiseksi, ota yhteyttä ja voit saada nimesi tähän Tekijät & palaute -kappaleeseen (tulevaan) kohtaan Ideat.

    Janelas on myös osa CoolBasic Software Development Kit:ä - sen lisäksi, että on saatavilla myös tästä SDK:sta irrallisena. CB SDK on ilmainen funktiokirjasto CoolBasic:lle, joka sisältää muun muassa käyttöliittymien tekemistä helpottavia funktioita sekä paljon muuta hyödyllistä ja mieleenkiintoista. Kannattaa käydä katsomassa, koti.mbnet.fi/cbsdk/.

    Janelas:a saa käyttää ja levittää vapaasti. Toivomus olisi kuitenkin, että lisäisit peliisi tai ohjeelmasi Janelas:n tekijän nimen ja web-osoitteen, sekä tietysti Janelas-moottorin nimen. Kiitos!