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.

ladataan.png

Kun tiedostot on ladattu, näytetään kolmen sekunnin (180/60) ajan lua.png-kuvaa ja soitetaan aani.wav-tiedosto voimakkuudella 128.

lua.png

Kun ohjelma on latautunut, se näyttää seuraavalta:

skripti2.png

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").

Henkilökohtaiset työkalut