CoolBasic

Tekniikasta

CoolBasicissa on sisäänrakennettuna peliohjelmointia helpottavia ominaisuuksia, kuten objektisysteemi ja automaattinen törmäyksentunnistus. CoolBasicissa objektit eroavat normaaleista sprite-grafiikoista ominaisuuksiltaan ja sisäänrakennetuilta toiminnoiltaan. Objektien liikuttaminen, törmäyksien käsittely ja objektien väliset sijainnit on pyritty tekemään ohjelmoinnin kannalta yksinkertaisiksi.
CoolBasic käyttää äänien ja musiikin toistamiseen kaupallista FMOD -äänikirjastoa. FMOD-lisenssin mukaisesti kaupallisille sovelluksille tulee hankkia oma lisenssi. Shareware-lisenssi maksaa 100 dollaria. Ilmaiseksi jaettavat ohjelmat eivät tarvitse lisenssiä. CoolBasicista pystyy kutsumaan myös DLL-kirjastoissa olevia funktioita, joten FMOD:ia ei ole pakko käyttää. Tulevassa CoolBasic V3:ssa FMOD-kirjastosta luovutaan, jolloin pelien jakaminen on täysin rajoituksetonta.
CoolBasic sisältää myös sisäänrakennetun tilekarttamoottorin, joka helpottaa paljon peliohjelmoijan työtä saada peliinsä kartat.

Näppäimistökoodit

CoolBasic käyttää näppäimistön lukemiseen Scan-koodeja, sillä ASCII-merkistö ei sisällä vastineita kaikille näppäimille. Jokaiselle näppäimistön näppäimelle on annettu numero, jota kutsutaan scan-koodiksi.

Karttaformaatit

Työympäristön mukana tulee myös Tilester-ohjelma pelikenttien luomista varten. Tilester käyttää omaa karttaformaattiaan pelikenttien tallennuksessa. Tilesterin tiedostomuoto on suoraan tuettuna CoolBasicissa.
Vaihtoehtoisia Tilesterin karttaformaattia tukevia ohjelmia ovat Jukka Mähösen CoolBasic-ohjelmointikielellä itsellään kehittämä A Stigmator ja Marko Hiltusen kehittämä TileGen.

CoolBasicin tulevaisuus

CoolBasicin kehittäjä on kertonut aloittaneensa ohjelmointikielen uudelleenkehittämisen. Samalla ohjelmointikieleen lisätään uusia ominaisuuksia ja ohjelmointikielen toteutustapa tulee vaihtumaan.
Uuteen CoolBasiciin kaavailtuja ominaisuuksia ovat mm. 3D-kiihdytetty grafiikka. Kielestä tulee myös täysin oliopohjainen. Aikaisemmin tulevasta CoolBasic-versiosta käytettiin nimeä CoolBasic Advanced, mutta tällä hetkellä kehitetään Coolbasic Classicia. Kehittäjän mukaan CoolBasic Advancediin kaavaillut ominaisuudet ja CoolBasicin www-sivuston keskustelupalstalla kerrotut ominaisuudet tulevat Coolbasic V3:seen.
Ennen CoolBasic V3:n julkaisua julkaistaan myös CoolBasic Classic, joka on syntaksiltaan lähempänä tämänhetkistä CoolBasicin versiota ja jolle vanhojen projektien kääntäminen tulisi olemaan helppoa. Kehittäjän mukaan CoolBasic Classicissa tulee kuitenkin olemaan vähemmän bugeja, kuin nykyisessä versiossa ja se tulee olemaan nopeampi. Myös sisäänrakennettua manuaalia on tarkoitus parantaa.
Classicin ensimmäisen version julkaisupäivästä ei ole mitään tietoa. Todennäköisesti sitä ei julkaista ikinä.

Esimerkkiohjelma

Seuraava esimerkkikoodi luo 400 pikseliä korkean ja 300 pikseliä leveän ohjelmaikkunan (oletus), johon tulostuu teksti Hello world!, ja joka sulkeutuu, kun mitä tahansa näppäintä painetaan.
Print "Hello world!"    'Tulostetaan tekstiä näytölleWaitKey                 'Odotetaan että jotain näppäintä painetaan

Esimerkkiohjelma 2

Tämä koodi luo ohjelman jossa kysytään käyttäjän nimeä. Tämän jälkeen näytölle tulostuu teksti Moi "sinun nimesi"!.
SCREEN 320,240,0,0           'Asetetaan ikkunan leveys, korkeus, värisyvyys ja näyttötilaRepeat  'Aloitetaan silmukka
    nimi$=Input("Nimesi: ")  'Kysytään nimeä
    DrawScreen               'Piirretään tekstit näkyviinUntil KeyHit(cbkeyReturn)    'Silmukka loppuu kun painetaan EntteriäCloseInputCls  'Tyhjennetään ruutuAddText "Moi "+nimi$+"!"     'Tulostetaan nimi näytölleDrawScreen                   'Piirretään nimi näkyviinWaitKey                      'Odotetaan että painetaan jotain näppäintäEnd                          'Lopetetaan ohjelma

Esimerkkiohjelma 3

Tämä ohjelma lataa kuvan luoden siitä objektin ja sitten pyörittää sitä. Ohjelmassa hyödynnetään CoolBasicin mukana tulevaa kuvaa. Ohjelmakoodi voidaan ajaa suoraan koodieditorissa ilman tallennusta, jolloin kuvatiedosto latautuu oikeasta hakemistosta.
SCREEN 640,480,0,0           'Asetetaan ikkunan leveys, korkeus, värisyvyys ja näyttötila
sotilas=LoadObject("media\soldier.bmp", 72)  'Ladataan sotilas ja asetetaan sen pyöritysarvo 72 eri suuntaanRepeat  'Aloitetaan silmukka
    TurnObject sotilas, 5    'Käännetään sotilasta 5 astetta per kierros
    DrawScreen               'Päivitetään näyttöUntil KeyHit(cbkeyreturn)    'Silmukka loppuu kun painetaan Entteriä
Kaikki esimerkit toimivat CoolBasicin Beta 10.x versioissa.

Esimerkkiohjelma 4

Tässä esimerkissä esitellään teksti-komentoja.

Locate ScreenWidth ()-TextWidth ("Tämä teksti katoaa ENTERistä"),screenheight ()-textheight ("E") 'laitetaan sijainniksi näytön oikea alareuna.
AddText "Tämä teksti katoaa ENTERistä" 'lisätään teksti

xadd = 1 

Repeat

    If KeyHit(cbkeyreturn) Then 'cb=CoolBasic key=näppäin return=Enter
        ClearText 'Pyyhkii AddText-komennolla tehdyt
    EndIf

    Color 0,255,0 'määrittää värin.
    Text x,100,"LIIKKUU" 'text-komento näyttää tekstin jos sitä komentoa luetaan. x sijainti on muuttuja

    Color 255,0,0
    Text 0,0,"Punaista tekstiä"

    x = x + xadd 'x-muuttujaan lisätään xadd-muuttujan arvo
    If x<0 Or x>ScreenWidth ()-TextWidth ("LIIKKUU") Then xadd= -xadd 
                'eli jos x ON pienempi kuin 0 tai isompi kuin näytön leveys miinus tekstin leveys
                'niin xaddista miinustetaan xadd eli x pienenee

        DrawScreen
Forever