Toisen Lua-ohjelman tekeminen
PSPWiki
Kirjoittanut Tdubel.
Toisen PSP-ohjelman tekeminen Lua-kielellä (katso myös ensimmäinen ohjelma). Esimerkkiohjelma on yksinkertainen näppäintunnistusohjelma.
Sisällysluettelo |
Yleistä
Ohjeessa käsitellään
Ohjeessa käsitellään muun muassa: USB-portin aktivoiminen, latausruudun tekeminen, kuvien lataaminen ja näyttäminen, äänen lataaminen ja soittaminen, if-lause, näppäinpainallusten lukeminen ja kuvakaappausten ottaminen.
Lua-ohjelmien käyttäminen PSP:ssä
Katso tietoja Lua-sivulta kohdasta Lua Player.
Koodi
skripti2.lua-tiedoston koodi
Kopioi seuraavat rivit tekstieditoriin ja tallenna tiedosto skripti2.lua-nimiseksi.
System.usbDiskModeActivate()
oranssi = Color.new(223, 88, 6)
harmaa = Color.new(94, 97, 111)
keltainen = Color.new(255, 255, 0)
musta = Color.new(0, 0, 0)
valkoinen = Color.new(255, 255, 255)
screen:print(194, 136, "Ladataan: 0%", keltainen)
screen:print(159, 152, "[ ]", keltainen)
screen.flip()
taustakuva = Image.load("tausta.png")
screen:clear()
screen:print(194, 136, "Ladataan: 20%", keltainen)
screen:print(159, 152, "[|||| ]", keltainen)
screen.flip()
ympyra = Image.load("ympyra.png")
alas = Image.load("alas.png")
screen:clear()
screen:print(194, 136, "Ladataan: 40%", keltainen)
screen:print(159, 152, "[|||||||| ]", keltainen)
screen.flip()
l = Image.load("l.png")
vasen = Image.load("vasen.png")
screen:clear()
screen:print(194, 136, "Ladataan: 60%", keltainen)
screen:print(159, 152, "[|||||||||||| ]", keltainen)
screen.flip()
r = Image.load("r.png")
oikea = Image.load("oikea.png")
aani = Sound.load("aani.wav")
screen:clear()
screen:print(194, 136, "Ladataan: 80%", keltainen)
screen:print(159, 152, "[|||||||||||||||| ]", keltainen)
screen.flip()
nelio = Image.load("nelio.png")
kolmio = Image.load("kolmio.png")
screen:clear()
screen:print(194, 136, "Ladataan: 90%", keltainen)
screen:print(159, 152, "[|||||||||||||||||| ]", keltainen)
screen.flip()
ylos = Image.load("ylos.png")
risti = Image.load("risti.png")
lua = Image.load("lua.png")
screen:clear()
screen:print(194, 136, "Ladataan: 100%", keltainen)
screen:print(159, 152, "[||||||||||||||||||||]", keltainen)
screen.flip()
screen.waitVblankStart(60)
screen:blit(0, 0, lua, false)
screen.waitVblankStart()
screen.flip()
aani:play()
screen.waitVblankStart(180)
screen.flip()
Music.volume(128)
while true do
screen:blit(0, 0, taustakuva, false)
pad = Controls.read()
screen:print(90, 245, "Valitse 'Start' kaynnistaaksesi uudelleen", musta)
screen:print(65, 255, "Valitse 'Select' ottaaksesi kuvakaappauksen", musta)
screen:print(87, 18, "tdubel.com | ", oranssi)
screen:print(192, 18, "luaplayer.org ", harmaa)
screen:print(309, 18, "| lua.org", oranssi)
screen.flip()
if pad:cross() then
screen:blit(402, 138, risti)
screen.flip()
end
if pad:circle() then
screen:blit(428, 110, ympyra)
screen.flip()
end
if pad:triangle() then
screen:blit(403, 84, kolmio)
screen.flip()
end
if pad:square() then
screen:blit(377, 111, nelio)
screen.flip()
end
if pad:up() then
screen:blit(52, 89, ylos)
screen.flip()
end
if pad:right() then
screen:blit(71, 111, oikea)
screen.flip()
end
if pad:down() then
screen:blit(53, 132, alas)
screen.flip()
end
if pad:left() then
screen:blit(29, 112, vasen)
screen.flip()
end
if pad:l() then
screen:blit(40, 34, l)
screen.flip()
end
if pad:r() then
screen:blit(383, 34, r)
screen.flip()
end
if pad:select() then screen:save("kuvakaappaus.tga") end
if pad:start() then
break
end
end
Siirrä skripti2.lua-tiedosto PSP:hen Lua Playerin hakemistoon. Laita samaan hakemistoon ohjelmassa käytetyt kuvat ja äänitiedosto (skripti2kuvat.rar).
Ohjelma
Käynnistäminen
Kun ohjelma käynnistetään, ensimmäiseksi aktivoidaan USB-portti. Latausruudun taustalla ladataan ohjelmassa käytettävät kuvat ja äänitiedosto. Edistyminen näkyy prosentteina.
Kun tiedostot on ladattu, näytetään kolmen sekunnin (180/60) ajan lua.png-kuvaa ja soitetaan aani.wav-tiedosto voimakkuudella 128.
Kun ohjelma on latautunut, se näyttää seuraavalta:
Näppäimet
Ohjelma tunnistaa painetut näppäimet (katso edellinen kuva, jossa on valittuna ristinäppäin, kun ollaan painettu ristinäppäintä).
| Näppäin | Toiminto | Käytännössä |
| Start | Käynnistää uudelleen | Lopettaa ohjelman. |
| Select | Ottaa kuvakaappauksen | Otetaan kuvakaappaus ja tallennetaan (save) se kuvakaappaus.tga-nimiseksi. |
| Ylös | Valitsee Ylös-näppäimen | Näytetään ylos-kuva (ylos.png-tiedosto) kohdassa 52, 89. |
| Vasen | Valitsee vasemman suuntanäppäimen | Näytetään vasen-kuva (vasen.png-tiedosto) kohdassa 29, 112. |
| Oikea | Valitsee oikean suuntanäppäimen | Näytetään oikea-kuva (oikea.png-tiedosto) kohdassa 71, 111. |
| Alas | Valitsee Alas-näppäimen | Näytetään alas-kuva (alas.png-tiedosto) kohdassa 53, 132. |
| Kolmio | Valitsee kolmionäppäimen | Näytetään kolmio-kuva (kolmio.png-tiedosto) kohdassa 403, 84. |
| Neliö | Valitsee neliönäppäimen | Näytetään nelio-kuva (nelio.png-tiedosto) kohdassa 377, 111. |
| Ympyrä | Valitsee ympyränäppäimen | Näytetään ympyra-kuva (ympyra.png-tiedosto) kohdassa 428, 110. |
| Risti | Valitsee ristinäppäimen | Näytetään risti-kuva (risti.png-tiedosto) kohdassa 402, 138. |
| Vasen olkanappäin | Valitsee vasemman olkanäppäimen | Näytetään l-kuva (l.png-tiedosto) kohdassa 40, 34. |
| Oikea olkanäppäin | Valitsee oikean olkanäppäimen | Näytetään r-kuva (r.png-tiedosto) kohdassa 383, 34. |
Selitykset
Yleistä
Seuraavaksi käydään ohjelman tärkeimmät kohdat läpi.
Katso myös ensimmäisessä ohjelmassa käsiteltyt: uuden värin tekeminen (Color.new), tekstin tulostaminen näytölle (screen:print), puskurin vaihtaminen (screen.flip), odotus (screen.waitVblankStart) ja lopetus (end).
System.usbDiskModeActivate()
System.usbDiskModeActivate()
Aktivoi USB-portin, jolloin PSP:hen voidaan tarvittaessa ottaa yhteys PC:ltä käyttämällä USB-kaapelia.
kuva = Image.load()
taustakuva = Image.load("tausta.png")
Kuvan lataaminen tapahtuu "Image.load"-käskyllä. Tässä ladataan "tausta.png"-niminen kuvatiedosto. Sitä voidaan käyttää myöhemmin nimellä "taustakuva".
aani = Sound.load()
aani = Sound.load("aani.wav")
Äänitiedosto voidaan ladata "Sound.load"-käskyllä. Tässä ladataan "aani.wav"-niminen äänitiedosto. Sitä voidaan käyttää myöhemmin nimellä "aani".
Lua Player tukee muotoja: WAV, UNI, IT, XM, S3M, MOD, MTM, STM, DSM, MED, FAR, ULT ja 669.
screen:blit()
screen:blit(0, 0, lua, false)
Taustakuvana on "lua".
screen:blit(402, 138, risti)
Tässä käytetään "risti"-kuvaa. Se on asetettu paikkaan 402, 138.
aani:play()
aani:play()
Tässä soitetaan "aani"; tiedoston nimi on "aani.wav" ja se ladattiin aiemmin.
Musiikin toistaminen onnistuu tyyliin "Music.playFile(”tiedosto.xm”, true)". Toistamisen voi lopettaa “Music.stop()” -rivillä. Katso tuetut muodot.
Music.volume()
Music.volume(128)
Äänenvoimakkuus. Tässä tapauksessa se on 128.
Controls.read()
pad = Controls.read()
Luetaan näppäinpainallukset.
if-lause
if pad:cross() then screen:blit(402, 138, risti) screen.flip() end
Tarkoittaa käytännössä: jos "pad:cross" sitten "screen:blit(402, 138, risti) / screen.flip() / end".
"pad" eli "Controls.read()" lukee näppäinpainallukset. "cross" on "risti".
Eli toisin sanoen: "jos (if) luetaan (pad) ristinäppäimen (cross) painallus sitten näytetään "risti"-kuva (risti.png-tiedosto) kohdassa 402, 138".
screen:save()
screen:save("kuvakaappaus.tga")
Näytön ("screen") kuvan voi tallentaa "save"-komennolla tiedostoksi. Haluttu tiedostonimi kirjoitetaan sulkujen sisään (esim. "kuvakaappaus.tga").
