Projektisuunnitelma Juho Kokkola Kuvaus Ohjelmani tulee olemaan peli, jossa tarkoitus on löytää kahden kuvan väliset eroavaisuudet. Käytännössä kuvat muistuttavat ensisilmäyksellä toisiaan. Valmiissa ohjelmassa käyttäjä klikkaa hiirellä sitä kohtaa kuvasta, missä havaitsee eroavaisuuden naapurikuvaan nähden ja saa tiedon, osuiko oikeaan vai ei. Jos pelaaja vastaa väärin seuraa rangaistus, eli peliajan ja/tai pisteiden väheneminen. Kun kaikki virheet on löydetty (4-5 kpl), siirrytään seuraavalle ’levelille’, ja kuvat vaihtuvat, muutoin peli päättyy. Toiminnallisuudet prioriteettijärjestyksessä: • virheiden löytämisen toteutus ja toiminta, sekä tason vaihto • aikavastus, jonka sisällä virheet tulee löytää – etsimisaika vähenee aina seuraavalle tasolle siirryttäessä • pisteytys; pisteet kasvavat sen mukaan kuinka monta virhettä löytää sekä kuinka paljon aikaa kierroksella jää käyttämättä Lisäksi pelissä on valikko, josta voi aloittaa pelin alusta tai vaihtoehtoisesti lopettaa pelaamisen. Tavoitteena on myös toteuttaa jonkinlainen high-score-lista. Pyrin sisällyttämään peliin mahdollisimman paljon eri kuvapareja / samoja kuvapareja eri virheillä. Tekninen toteutus Toteutan ohjelmani Javan valmiilla Swing-luokkakirjastolla. Peli aukeaa ikkunaan, joka sisältää ylhäällä valikkorivin, keskellä kaksi vierekkäistä paneelia kuvia varten sekä alhaalla paneelin, johon tulee tieto senhetkisestä ajasta, tasosta, pisteistä jne. Luulen, että suurimmaksi haasteeksi projektissani muodostuu virheen löytämisen toteuttaminen, eli se, että jokaisella kuvaparilla on virheet omissa tietyissä koordinaateissaan. Annetut kuvat on jaettu ruudukoiksi (a x b JButtonia), joiden muutamassa tietyssä ruudussa (koordinaateissa x, y) on löydettävä virhe. Muiden klikkaamisesta seuraa siis rangaistus. Jos eroavaisuus on niin iso, ettei se mahdu yhden JButtonin sisälle, hyväksytään mikä tahansa ruutu, joka on kosketuksessa ’virhealueen’ kanssa. Ohjelma sisältää ainakin luokat: • Peli: pääohjelmaluokka, joka käynnistää ohjelman ja pyörittää graafista käyttöliittymää • Paneeli: kuvat ovat tämän luokan instansseja, ne sisältävät saman ruudukko-olion • Ruudukko: jakaa kuvat ruudukoksi Työskentely ja ajankäyttö Ohjeelliseksi ajankäytöksi on annettu 80 tuntia, mutta todennäköisesti se tulee venymään reiluun sataan tuntiin. Teoriassa ohjelmaa on aikaa tehdä viisi viikkoa. Käytännössä kuitenkin puhutaan neljästä viikosta, koska jouluna tai uutena vuotena ei kukaan (ainakaan toivottavasti) harrasta Javaa. Karkeasti voisin jakaa käytössä olevat neljäviikkoa seuraavasti: • 1. viikko: suunnitelman täydentäminen ja tarkennus, luokkarakenteen täsmennys sekä koodaamisen aloittaminen • 2. viikko: tiukkaa koodausta ja testaamista • 3. viikko: tiukkaa koodausta ja testaamista • 4. viikko: koodin viimeistely, testaus, bugien korjaus, testaus, dokumentaation ja kommenttien viimeistely, (testaus,) loppuraportin kirjoitus Käytettävät tietolähteet: google.com, java API, irc, kalakirja (jos on ihan pakko). Pyrin kommentoimaan ja javadoccamaan mahdollisimman paljon sitä mukaa, kun koodia kirjoitan. Tavoitteen on, että loppuun jäisi lähinnä javadocien ja kommenttien pintapuolista parantelua. Tämä tulee varmasti säästämään aikaa ja vaivaa. Lisäksi jokaisen koodausrupeaman jälkeen pyrin kirjaamaan ylös, mitä opin ja missä oli hankaluuksia. Näin saan helposti kerättyä mielekästä materiaalia loppuraportin kirjoitusta varten.