OPL-ohjelmointiopasTervetuloa ensimmäisen ja ainoan suomalaisen OPL-ohjelmointioppaan pariin oppimaan perusasioita tästä EPOC:ssa ja Symbian OS:ssa toimivasta ohjelmointikielestä. OhjelmointiympäristöJotta voisit aloittaa OPL:llä ohjelmoimisen, sinulla tulee olla ympäristö, jossa voit ajaa koodiasi. Sinulla on kaksi vaihtoehtoa, joista valita: laite itse (esim. Nokia 9300) tai Windowsissa toimiva laitteen emulaattori (SDK:ssa mukana). Windows-emulaattori ei toimi samalla nopeudella kuin puhelin, joten varsinkin pelejä tehdessä voivat tulokset vaihdella emulaattorin ja puhelimen välillä valtavasti. 1. Puhelimeen asentaminen 2. Tietokoneen emulaattorille asentaminen Nyt ohjelmointiympäristösi on valmiina, joten voit alkaa ohjelmoimaan. Muutamia ohjeitaAnnan pienen vinkin, jolla voit nopeuttaa emulaattorilla ohjelmoimista: älä kirjoita koodia emulaattorilla, vaan avaa Windowsissa tekstitiedosto ja tallenna se polkuun "C:\Symbian\7.0s\S80_DP2_0\epoc32\wins\c\" tai vastaavaan osoitteeseen omassa SDK:ssasi. Kirjoita tai copy-pasteta tähän tiedostoon koodisi ja avaa se joka kerta emulaattorin OPL-tekstieditorilla painamalla nappeja CTRL, SHIFT ja I yhtä aikaa. Tämä kikka osoittautuu ennen pitkää erittäin hyödylliseksi, sillä et voi copy-pastettaa Windows-ympäristöstä tekstiä puhelimen emulaattorille. Ensimmäinen ohjelma - tekstin tulostaminen näytölleOlkoon ensimmäinen ohjelmamme helppo ja yksinkertainen koodinpätkä, joka näyttää ruudulla tekstin "Hello, world!" (klassinen ohjelmointiesimerkkiohjelma): PROC HelloWorld: PRINT "Hello, world!" PAUSE 40 ENDP Kääntääksesi ohjelman sinun tulee avata TextEd- tai Program-niminen ohjelma emulaattorilla tai puhelimessa, kirjoittaa ylläoleva koodi tekstikenttään ja painaa "Translate"-nappia (tai näppäinyhdistelmää CTRL + L). Näyttökaappaus käännetystä ohjelmasta:
Käydään ohjelma läpi.
Nyt näit, miten OPL:n ohjelmointi toimii käytännössä. Tuo koodinpätkä on kuitenkin vasta alku sille, mitä kaikkea OPL:llä voi tehdä. Seuraa siis perässä. Toinen ohjelma - muuttujatVaikka sana muuttuja voi kuulostaa tylsältä, on se yksi ohjelmoinnin perusasioista. Muuttuja on osanen, johon voidaan tallentaa tietoa ja sen arvoa voidaan muuttaa. Jottei tämä kävisi turhan teoreettiseksi, liatkaamme kätemme: teemme yhteenlaskun muuttujien avulla ja tulostamme sen näytölle. PROC Muuttujat: LOCAL A%, B%, C% A% = 10 B% = 8 C% = A% + B% PRINT C% PAUSE 40 ENDP Näyttökaappaus:
Nyt tuli vastaan vähän monimutkaisempaa koodia, mutta ei se mitään, käymme taas tutulla tavalla sen läpi.
%-loppuiset muuttujat ovat siis lukuarvojen -32768 - 32767 tallentamista varten. Mutta mitä, jos halutaan tallentaa muuttujiin vaikkapa suurempia numeroita tai jopa kirjaimista muodostuvia nimiä? Siihen käytetään sitten erilaista loppumerkkiä kuin %. Alla on taulukko kaikista OPL:n muuttujatyypeistä.
Mutta jos liukuluku voi ajaa saman asian kuin pienikin luku, niin miksei voisi käyttää joka kerta liukulukuja? No sen vuoksi, kun liukuluku vie paljon enemmän muistia kuin pieni luku. Esimerkiksi jos haluat tallentaa muuttujaan ikäarvoja, käytä pieniä lukuja. Tutkikaamme tätä käytännössä, joten tehdään ohjelma, joka tulostaa erilaisia muuttuja-arvoja näytölle. Seuraa ohjelma numero 2½. PROC Muuttujat2: LOCAL TalonIka%, TalonHinta&, TalonKorkeus, TalonNimi$(8) TalonIka% = 38 TalonHinta& = 69900 TalonKorkeus = 5.5 TalonNimi$ = "Honkanen" PRINT "Talon ikä:",TalonIka%,"v" PRINT "Talon hinta:",TalonHinta&,"euroa" PRINT "Talon korkeus:",TalonKorkeus,"m" PRINT "Talon nimi:",TalonNimi$ PAUSE 40 ENDP Näyttökaappaus:
Tässäpä tulikin asiaa melko lailla.
Nyt olemme käyttäneet kaikkia OPL:n muuttujatyyppejä. Äkkiä voin tässä mainita, että jos haluat muuttaa muuttujan arvoa, niin senkun vain kirjoitat esimerkiksi uuden tuollaisen rivin, jolla määritellään muuttuja. Voit muuttaa muuttujan arvoa niin monta kertaa kuin haluat. Kolmas ohjelma - käyttäjän näppäinpainallusElintärkeä osa käyttövalmista ohjelmaa on interaktiivisuus eli vuorovaikutteisuus. Minkälainen olisi esimerkiksi peli, jossa käyttäjä ei voisi tehdä mitään painamalla näppäimiä tai liikuttelemalla hiirtä? Peli vain menisi eteenpäin omaa tahtiaan tai junnaisi paikoillaan, ja käyttäjä menettäisi mielenkiintonsa melko nopeasti. Aloitetaan siis tekemään ohjelmaa, jossa käyttäjä saa itse syöttää talonsa tiedot ohjelmaan. Lopuksi ohjelma tulostaa tiedot näytölle. PROC Interaktiivisuus: LOCAL TalonIka%, TalonHinta&, Talonkorkeus, TalonNimi$(50) PRINT "Talon ikä:", INPUT TalonIka% PRINT "Talon hinta:", INPUT TalonHinta& PRINT "Talon korkeus:", INPUT TalonKorkeus PRINT "Talon nimi:", INPUT TalonNimi$ CLS PRINT "Talon ikä:",TalonIka%,"v" PRINT "Talon hinta:",TalonHinta&,"euroa" PRINT "Talon korkeus:",TalonKorkeus,"m" PRINT "Talon nimi:",TalonNimi$ GET ENDP Näyttökaappaus omista arvoistani:
Taas uusia komentoja näkyy olevan koodissa.
Huomautan, että INPUT ei valitettavasti toimi S60-puhelimissa lainkaan. Olemme näin saaneet jo hyvät perusainekset interaktiivisten ohjelmien tekoon, mutta entä grafiikat? Mennään eteen päin. Neljäs ohjelma - kuvan lataaminenYksi nykyajan ohjelmien peruspilareista on grafiikka. En osaa nimetä mitään Windows-ohjelmaa, jossa ei olisi käytetty vähintään yhtä kuvaa. Kuvat ovat siis melko tärkeitä ohjelman palasia, vaikka ne eivät olekaan pakollisia. Lataan seuraavalla koodinpätkällä 640 x 200 pikselin kokoisen kuvan S80 v2.0 -emulaattorin näytölle. Kuva on MBM-formaatissa eli EPOC:n ja Symbianin omassa kuvatyypissä. Voit ladata sen tästä. Seuraavassa on nopea ohje, miten muunnetaan BMP:stä MBM-tiedostoja BMCONV-nimisellä komentoriviohjelmalla.
PROC KuvanLataus:
LOCAL Kuva%
Kuva% = gLOADBIT("C:\Kuva.mbm")
gUSE 1
gAT 0,0
gCOPY Kuva%,0,0,640,200,0
gCLOSE Kuva%
GET
ENDP
Näyttökaappaus:
Tällä kertaa menikin vaikeaksi - mukaan tuli jopa viisi uutta komentoa. Miten näistä saisi selvän?
Alla on avustuskuva gCOPY-komentoa varten. Haluamme seuraavasti kopioida kuvasta alueen, joka alkaa pikseleistä 120 x ja 20 y ja loppuu pikseleihin 463 x ja 153 y. Kuvassa on siis tuo alue laatikoituna. Tee tästä gCOPY-komento. Vastaus on kuvan alla.
Vastaus on: gCOPY Kuva%,120,20,463,153,0. Jos tiesit tämän, olet etevä. Näytölle kopioituna tuo alue näyttäisi tältä (kun gAT-komennon arvot olisivat 0,0):
Sinulla voi mennä kuvan lataamisen oppimiseen jonkin aikaa, niin kuin minullakin meni, mutta lopuksi se luonnistuu, kun on muutaman kymmentä kertaa kirjoittanut sen koodiin. Viides ohjelma - ehtolauseetViides ohjelmamme käy läpi ehtolauseet - tekoälyn perustan. Ehtolauseet tekevät mahdolliseksi sen, että käyttäjällä on ohjelmassa valintoja. Käyttäjä voi esimerkiksi haluta mennä joko pelaamaan tai ohjeisiin pelin päävalikossa. Tällöin ehtolauseet tulevat esiin. Tekoäly toimii siis tekokoodilla kirjoitettuna tällä tavalla: Tehdään tästä OPL:n kielinen ohjelma, joka kysyy mielipidettäsi Coca-Colasta ja Pepsistä. PROC Ehtolauseet:
LOCAL Painallus%
PRINT "Pidätkö enemmän Pepsistä vai Coca-Colasta?"
PRINT "Paina 1, jos pidät Pepsistä enemmän ja 2, jos Coca-Colasta."
PRINT ""
Painallus% = GET
IF Painallus% = 49
PRINT "Pepsi on siis mieleesi enemmän."
ELSEIF Painallus% = 50
PRINT "Coca-Cola. Hyvä valinta."
ELSE
PRINT "Ei valittavissa."
ENDIF
GET
ENDP
Näyttökaappaus omasta Coca-Cola-myötäisestä valinnastani:
Näin olemme tehneet yksinkertaisen ehtolauseohjelman. Se toimii kuin junan vessa. Käydään koodi läpi yksityiskohtaisesti.
Muuta OPL:een liittyvääTässä olivat ohjeeni tältä erää. Pääset varmasti alkuun näillä ohjeilla ja ehkä saat jonkinlaisia ideoita niistä. Mikäli tällä oppaalla on jonkinnäköistä suosiota, kirjoitan mielelläni lisää aiheesta. Alla on satunnaisia OPL:een liittyviä asioita.
S80-laitteiden näppäinkoodit
Lisää näppäinkoodeja voit itse löytää alla olevalla koodinpätkällä (painamalla Esciä pääset pois ohjelman suorituksesta). PROC NappainKoodit:
LOCAL Painallus%
DO
Painallus% = GET
PRINT Painallus%
UNTIL Painallus% = 27
ENDP
|