Tämä on vapaaehtoinen haastava lisätehtävä. Tehtävässä tehdään yksinkertainen sokkelopeli, johon voit lopuksi keksiä haluamasi piirteitä. Käyttöliittymäohjelmointia ei vielä tarvitse tehdä itse, vaan sitä varten ladataan projektipohja.
Lataa NetBeans-projektipohja ohpesokkelo.zip.
Pura zip-tiedosto ohpesokkelo
-hakemistoksi
ja avaa se NetBeansissa valinnalla File->Open Project
.
Tehtävä tehdään kokonaisuudessaan tähän projektiin.
Projektissa pitäisi olla kolme pakkausta:
kayttoliittyma
, kuvat
ja
peli
.
Pakkaus on hakemisto, jonka alle luokkia ryhmitellään.
Pakkauksessa sijaitsevan lähdekooditiedoston tulee alkaa
package
-määreellä, ja toisen pakkauksen luokan
käyttäminen vaatii import
-määreen.
Tässä tehtävässä tarvittavat määreet annetaan tehtävänannoissa.
Käyttöliittymäpakkauksen koodia ei ole tarvetta
muuttaa näissä tehtävissä, vaan kaikki uusi koodi tulee
peli
-pakkaukseen.
Tutustu pikaisesti peli
-pakkauksen luokkiin
Paikka
ja Kartta
.
Paikka
-oliot esittävät paikkaa
ruudukossa, eli rivi-sarake -paria.
Kartta
-olio pitää sisällään merkeistä koostuvan
olion, joka luetaan tiedostosta kuten kartta.txt
.
Pääohjelma löytyy pakkauksesta peli
luokasta Paaohjelma
. Suorita se.
Jos kaikki on kunnossa, ohjelma tulostaa
Aloita tästä!
Paikka
ja Kartta
-luokkia
ei ole tarpeen muuttaa tehtävän aikana,
mutta ei se kiellettyäkään ole.
Muuta pääohjelmaa siten, että se lukee
kartta.txt
-tiedoston Kartta
-olioksi.
Tee pääohjelma, joka tulostaa luetun kartan käyttäen
kartta-olion metodeja.
package peli; public class Paaohjelma { public static void main(String[] args) { Kartta kartta = Kartta.lueTiedostosta("peli/kartta.txt"); // Kirjoita koodia tähän. // Käytä kartta-olion metodeja leveys, korkeus ja merkkiKohdassa. } }
Ohjelman pitäisi tulostaa kartta.txt
:n sisältö.
Käyttöliittymä tarvitsee pelilogiikan toteuttavan olion.
Tee pakkaukseen peli
luokka Pelilogiikka
,
ja toteuta sinne seuraavat metodit
public Pelilogiika(Kartta kartta)
public int sokkelonLeveys()
public int sokkelonKorkeus()
public String kuvaPaikassa(Paikka paikka)
sokkelonLeveys
- ja
sokkelonKorkeus
-metodien
tulee palauttaa kartan leveys ja korkeus.
kuvaPaikassa
-metodin tulee
palauttaa jonkin kuvat-kansiossa olevan kuvan nimi –
esimerkiksi "seina"
tai "lattia"
.
Tee niin, että kuvaPaikassa
palauttaa
kunkin '#'
-merkin kohdalla "seina"
,
kunkin '.'
-merkin kohdalla "lattia"
ja aloituskohtamerkin '@'
kohdalla "ukkeli"
.
Lisää pääohjelman loppuun käyttöliittymän alustus pelilogiikka-oliollasi seuraavasti
package peli; import kayttoliittyma.Kayttoliittyma; public class Paaohjelma { public static void main(String[] args) { Kartta kartta = Kartta.lueTiedostosta("peli/kartta.txt"); Pelilogiikka pelilogiikka = new Pelilogiikka(kartta); new Kayttoliittyma(pelilogiikka); } }
Jos kaikki toimii, ohjelma näyttää sokkelon graafisesti.
Kun ohjelmassa painetaan nuolinäppäimiä, käyttöliittymä yrittää kutsua seuraavia liikkumismetodeja
public boolean yritaYlos()
public boolean yritaAlas()
public boolean yritaVasemmalle()
public boolean yritaOikealle()
Toteuta nämä metodit pelilogiikkaolioosi siten,
että pelaaja voi liikkua sokkelossa.
Tarkista, ettei pelaaja voi liikkua seinän sisään
eikä ulos kartalta.
Metodien tulisi palauttaa true
,
jos siirtyminen onnistui, ja false
,
jos ei.
Vihje: nuo neljä metodia tulevat luultavasti olemaan aika samanlaisia.
On mahdollista tehdä yksi metodi yritaSiirtya
,
jota muut metodit käyttävät.
Peruspeli on nyt valmis. Nyt voi olla hyvä hetki siistiä koodia.
Kun olet luomukseesi tyytyväinen, keksi peliin haluamasi ominaisuus
ja toteuta se. Huomaa kuvat
-kansiossa olevat
valmiit kuvat. Voit lisätä peliin myös omia kuviasi.
Tässä joitakin ideoita:
n
ruutua ympärillensä. (helppo)