CoolBasic

CoolBasic on Jukka Lavosen kehittämä ohjelmointikieli. Kieli on tarkoitettu lähinnä peliohjelmointiin ja siitä on pyritty tekemään aloittelijaystävällinen. CoolBasicin syntaksi on osittain lainattu BlitzBasic-ohjelmointikielestä. CoolBasic on vielä kehitysvaiheessa (beta) ja sen kehittäjä onkin lupaillut lähes koko kielen uusimista ensimmäiseen stabiiliin versioon mennessä. Tämänhetkinen CoolBasicin versio on beta 10.43.

CoolBasicin mukana tulevaan ohjelmointiympäristöön sisältyy upotettu käyttöohje, joka sisältää luettelon ohjelmointikielen eri ominaisuuksista. Tällä hetkellä käyttöohje on saatavilla vain suomeksi. Osia käyttöohjeesta ja esimerkkikoodeista on käännetty CoolBasic-yhteisön voimin englannin kielelle, mutta nämä käännökset eivät ole virallisesti jaossa. CoolBasic ei ole saavuttanut suurta suosiota, mutta on silti kohtuullisen tunnettu ohjelmoijien piirissä. CoolBasicin sivuston keskustelupalstalla on yli 1700 rekisteröitynyttä käyttäjää (v. 2021).

Tekniikasta 
CoolBasiciin on sisäänrakennettu 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, maksullinen lisenssi. Ilmaiseksi jaettavat ohjelmat eivät tarvitse lisenssiä. CoolBasicistä 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ä tehdä 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. CoolBasicista löytyy suora tuki tälle tiedostomuodolle.

Vaihtoehtoisia Tilesterin karttaformaatteja 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 kieleen lisätään uusia ominaisuuksia ja ohjelmointikielen toteutustapa tulee vaihtumaan.

Uuteen CoolBasiciin kaavailtuja ominaisuuksia on 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äänrakennettuja käyttöohjeita on tarkoitus parantaa.

Classicin ensimmäisen version mahdollisesta julkaisupäivästä ei ole tietoa.

Esimerkkiohjelmia

Esimerkkiohjelma 
Seuraava esimerkkikoodi luo 400 pikseliä korkean ja 300 pikseliä leveän ohjelmaikkunan (oletus), johon tulostuu teksti Hello world!, ja joka sulkeutuu mitä tahansa näppäintä painamalla.

 Print "Hello world!"    'Tulostaa näytölle tekstiä
 WaitKey                 'Odottaa näppäimenpainallusta

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           'Asettaa ikkunan leveyden, korkeuden, värisyvyyden, ja näyttötilan
 Repeat  'Aloitetaan silmukka
     nimi$=Input("Nimesi: ")  'Kysyy käyttäjän nimeä     DrawScreen               'Päivittää näytön Until KeyHit(cbkeyReturn)    'Silmukka loppuu painamalla Enteriä CloseInput
 
 Cls  'Tyhjennetään ruutu
 AddText "Moi "+nimi$+"!"     'Tulostaa nimen näytölle
 DrawScreen
 
 WaitKey                      'Odottaa näppäimenpainallusta
 End                          'Lopettaa ohjelman

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           'Asettaa ikkunan leveyden, korkeuden, värisyvyyden, ja näyttötilan
 sotilas=LoadObject("media\soldier.bmp", 72)  'Lataa sotilaan grafiikan levyltä, ja asettaa sotilaan pyöritysarvon
 Repeat                       'Aloittaa silmukan
     TurnObject sotilas, 5    'Kääntää sotilasta 5 astetta
     DrawScreen               'Päivittää näytön
 Until KeyHit(cbkeyreturn)    'Silmukka painamalla enteriä

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") 'Asettaa sijainniksi näytön alareunan
AddText "Tämä teksti katoaa ENTERistä" 'Tulostaa näytölle tekstiä

xadd = 1 

Repeat

    If KeyHit(cbkeyreturn) Then 'cb=CoolBasic key=näppäin return=Enter
        ClearText 'Pyyhkii tulostetun tekstin
    EndIf

    Color 0,255,0 'Määrittää värin
    Text x,100,"LIIKKUU" 'Asettaa näytölle tekstiä määriteltyyn sijaintiin

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

    x = x + xadd 'Lisää muuttujaan x muuttujan xadd
    If x<0 Or x>ScreenWidth ()-TextWidth ("LIIKKUU") Then xadd= -xadd 
		'Jos x on pienempi kuin nolla tai x on suurempi kuin näytön leveys pikseleinä, muuta xadd:in arvo käänteiseksi, jolloin tekstin liikkuma suunta muuttuu

	DrawScreen
Forever

Lähteet 
 Foorumiaihe koskien Coolbasic Classic - muutoksia
 Coolbasicin kehittäjän artikkeli Classic - versiosta
 CoolBasicin kotisivut

Aiheesta muualla 
 CoolBasic wiki
 CoolBasicin kotisivu
 CoolBasicin kehittäjän blogi
 CoolBasicin keskustelualue
 Suomenkielinen manuaali
 Kuva näppäimistöstä johon on merkitty CoolBasicin scan-koodit

BASIC