Projektisuunnitelma

| Kohdeohjelman kuvaus | | Tekninen toteutus | | Luokkarakenne | | Projektityön kuvaus |


Kohdeohjelman kuvaus

Koska kaikki juuri ohjelmoimaan oppineet haluavat yleensä tehdä räiskintäpelin, kannan minäkin korteni kekoon. Tarkoituksenani on toteuttaa yksinkertainen peli, jossa ohjataan ruudun alareunassa olevaa tykkiä. Ruudun yläosasta tippuu pommeja, jotka pelaajan on määrä tuhota, ennen kuin ne ehtivät alhaalla olevaan kaupunkiin. Peli päättyy, kun viisi pommia on ehtinyt kaupunkiin asti.

Tykkiä ohjataan hiirellä. Kun pelaaja klikkaa jotain kohtaa ruudulla, tykki ampuu räjähtävän ilmatorjuntaohjuksen, joka räjähtää kyseisessä pisteessä hetken kuluttua tuhoten kaikki pommit ympäriltään tietyllä säteellä. Jokaisen laukauksen jälkeen kuluu tietty (hyvin lyhyt) aika, ennen kuin tykin voi laukaista uudelleen.

Kunkin pommin lähtöpaikka ja -suunta määräytyy satunnaisesti. Mahdollisia lähtöpaikkoja ja suuntia on ennalta rajattu määrä. Pommien määrä ja putoamisnopeus kasvaa jatkuvasti, kunnes lopulta kaikkien tuhoaminen on mahdotonta.

Pelin loputtua lasketaan pelaajan pisteet. Pisteisiin vaikuttavat kulunut aika ja tuhottujen pommien määrä. Lisäksi on mahdollista saada lisäbonusta jos esimerkiksi tuhoaa useampia pommeja yhdellä laukauksella. Kymmenen parasta tulosta näkyvät pelin high score -listassa.

Toteuttamisjärjestys on, että ensin toteutan varsinaisen pelirungon. Seuraavaksi on vuorossa high score -lista, ja jos sen jälkeen on vielä aikaa, voin lisätä peliin hienouksia, kuten esimerkiksi piirretyt grafiikat, taustakertomuksen, hiiren liikkeiden mukaan kääntyvän tykinputken, mahdollisuuden räjäyttää kaikki ruudulla näkyvät pommit superpommilla, joita on rajoitettu määrä, ääniefektit jne…

Toteutan pelini applettina, joka on ajettavissa web-sivultani. Pelin käyttöliittymä on varsin yksinkertainen. Kun appletti ajetaan, ilmestyy peli-ikkuna, jossa on yksi valikko sekä "etusivu", jolla kerrotaan perustietoja pelistä. Valikossa on seuraavat kohdat: aloita uusi peli(aloittaa uuden pelin), high score(näyttää high score -listan), Ohjeet(näyttää peliohjeet) sekä lopeta(sulkee ikkunan). Peli alkaa, kun valikosta valitaan aloita uusi peli. Pelin loputtua näytetään erillinen game over -kuva.


Tekninen toteutus

Toteutan pelini siis applettina. Olen ymmärtänyt, että jos tekee appletin, kannattaa käyttää AWT-komponentteja, koska Swing-komponentit pitää aina erikseen ladata ennen pelin aloittamista, joten pitäydyn siis AWT:ssä. Koska pelin aikana ruudulla pitää olla mahdollista näyttää useita pommeja yhtä aikaa, pitää minun tutustua säikeiden käyttöön. Näiden uusien tekniikoiden opettelussa menee oma aikansa.

Suurin tekninen tulee uskoakseni olemaan juuri monen asian saaminen toimimaan yhtä aikaa ja vielä tunnistamaan toisensa, eli tykinlaukausten tulee pystyä tuhoamaan pommeja, vieläpä useita kerralla. Tämän asian käytännön toteutuksesta minulla ei vielä ole tarkempaa käsitystä. Ampumisen toteuttamisessa mielessäni on kaksi vaihtoehtoista ratkaisua. Toinen on esitelty edellä, toisessa tykkiä ohjattaisiin nuolinäppäimillä ja ammuksen lentorata olisi näkyvissä. Päätynen siihen ratkaisuun, jonka havaitsen helpommaksi toteuttaa ja toisaalta pelattavuuden kannalta järkevämmäksi.

Kun pelin runko on saatu toimivaksi, on toinen haaste pelillinen. Peli pitää saada sellaiseksi, että joku viitsii sitä myös pelata, eli vaikeusaste pitää viilata kohdalleen. Idea on, että pelitaitoa pystyy parantamaan harjoittelemalla, eikä peli pääty aina samaan kohtaan vaikeusasteen äkillisen hyppäyksen myötä. Myös pistelasku vaatii viilaamista, jotta taitava pelaaja pääsee erottumaan edukseen.


Luokkarakenne

Luokka Peli perii luokan Applet. Peliin laitetaan kaksi paneelia, joista alempi on kaupunki, johon ei tule mitään muuta kuin graafinen kuva kaupungista. Ylemmässä paneelissa tapahtuvat kaikki animaatiot. Pelillä on ainakin konstruktori, joka asettelee paneelit paikoilleen ja main-metodi, joka aloittaa pelin. Peli päättyy, kun Pommitus-luokan tarkastaTilanne() palauttaa false.

Luokka Pommitus perii luoka Panel ja on siis ylempi Pelin paneeleista.

Luokalla on attribuutit:

Luokalla on metodit:

Luokka Pommi

Luokalla on attribuutit:

Luokalla on metodit:


Projektityöskentelyn kuvaus

En pidä itseäni erityisen nopeana koodaajana tai tehokkaana, päinvastoin. Koska kuitenkin haluan tehdä perusteellista työtä, ja toisaalta olen kiinnostunut siitä mitä teen ja itse asiassa pidän koodaamisesta ja haluan myös oppia uutta, on alustava ajankäyttöarvioni sata tuntia. Minulle ajankäyttö ei ole mikään ongelma, vaan aion käyttää projektiini juuri niin paljon aikaa kuin sen saattaminen halutunlaiseksi vaatii. Joululoman pituudesta voi tarvittaessa tinkiä.

Viikottainen ajankäyttöarvio:

Koska projekti on kuitenkin suhteellisen pieni, aion kommentoinnin osalta noudattaa hyväksi havaitsemaani käytäntöä: jätän kommentoinnin viimeiseksi. Näin pystyn vielä viime hetkellä luomaan yleissilmäyksen koodiini ja myös korjaamaan mahdolliset epätarkkuudet. Kommentoinnin toteutan luonnollisesti JavaDoc -tyyliin. Aion myös pitää vähintään viikoittaista projektipäiväkirjaa, koska uskon siitä olevan hyötyä tulevaisuutta ajatellen.

| Sivun alkuun || Loppuraportin pääsivulle || Portfolioni pääsivulle |


Copyright © Juho Makkonen
jomakko2 (@) cc.hut.fi
http://www.hut.fi/~jomakko2/