|
Ohjelmointitehtäviä on Studio1:llä kotisivujen ja projektin lisäksi kuusi,
joista neljä ensimmäistä on yksi kokonaisuus - tekstipohjainen peli. Kaksi
viimeistä käsittelee graafista käyttöliittymää miinaharavan koodaamisen
muodossa.
Tämä tarina kulkee kronologisesti tehtävä tehtävältä ja sisältää kunkin
tehtävän aikasta suhtautumistani studio 1:seen sekä muita kokemuksia
tehtävästä. Sensuroituna tosin.
KotisivutKotisivujen vaatimustaso oli hyvin alhainen eikä niitä arvosteltu mitenkään tehtävän palautuksen yhteydessä. Kunhan ne sai läpi. Itse kuitenkin innostuin hieman laajentamaan tehtävää, mutta en mitenkään koodin rakenteen tai vaativuuden kautta, vaan nimenomaan lisäämällä sisältöä. Aikaisempana kokemuksena html:stä oli yksi vaatimaton kotisivu yläasteella, jonka aikana opituista asioista ei todellakaan ollut mitään iloa tässä tehtävässä. Eli tasoltani olin yhtä ummikko kuin niin moni muukin infophuksi. Nyt kun ajattelen niin olisi kyllä voinut paneutua paremmin html:ään, niin saisi näistä tehtyä näyttävämmät sivut. Ehkä korjailen näitä jälkeenpäin.Työn tuloksen näet Täältä.
Tehtävä 1: Olipa kerran olioTehtävänantoQuote: "Tarvittavat taidot: Lista voi näyttää pitkältä, mutta älä masennu! Suurin osa listatuista taidoista on hyvin yksinkertaisia ja helposti omaksuttavia." ...riiight... Kun tämä tehtävä lätkäistiin naamalle se oli - lievästi sanottuna - aika shokki. En ollu ennen kurssin alkua edes tiennyt mitä java-koodi tarkoittaa, ja nyt tulisi koodata toimiva pieni peli. Aikaa kaksi viikkoa. Mars. Ilman juuri minkäänlaista pohjaa java 1 oli ensimäisistä riveistä lähtien tuskaisaa tehtävää, ja kavereiden kanssa tuli pidettyä aivoriihiä useampaan kertaan. Peruskäsitteet kuten palauttaminen olivat vielä tehtävän loppupuolellakin hallussa hyvin hatarasti. Sinänsä simppelit asiat kuten enumeraatio tai instanceof olivat äärimmäisen vaikeita ilman varsinaista mallia, ohjekirjojen käyttöähän on boikotoitava. Lähinnä tämä tehtävä oli siis edellisten asioiden kopiointia uudessa ulkoasussa sekä sen jälkeistä testausta koodin kääntämiseksi. Palauttaminen tapahtui 15 minuuttia ennen määräaikaa. Aikaa ensimmäiseen javatehtävään meni arviolta 30 tuntia, josta suurin osa tapahtui viimeisen viikon viimeisinä päivinä. Toisaalta, vaikka tämä harjoitus olikin todella tuskaisa, edisti se sosiaalisia suhteita kanssakitujien kesken. Perjantaina puoliltaöin tietokonetalolla koodatessa oppii tutustumaan ihmisiin hieman paremmin kuin luennoilla. Välissä mieleen hiipi epäilys että Studio 1 kurssi kuuluukin sosiologian opintoihin. Arvosana: 3 Assarin kommentit (lyhennettynä): - "pelottele" pelottelee pelottelijaa - apumuuttujien käytön puute - toString metodissa häikkää - Pelotteluesineen "pelottavuus" attribuutin näkyvyysmääre on unohtunut. - Banaanin paino voi saada arvoja 3:n ja 5:n väliltä, tehtävänannossa sanotaan 2-5. - appelsiiniä ei tule koskaan, koska edellinen hedelmä todennäköisyydellä: random.nextDouble() < 80, mikä totetutuu aina. + liukulukumuuttujat laskettu oikein liukuluvuilla, joten vääriä pyöristyksiä ei tapahdu. + perusteelliset testiohjelmametodit. + satunnaislukugeneraattori luotu luokkakohtaiseksi (static). - hedelmiä syötäessä "syo" metodissa ei kutsuta Olennon "muutaElinvoimaa" - Tyyliseikat useissa paikoin hullusti Ohjelmoinnin perusasiat tuntuvat olevan jo suurimmalta osin hallussa, mutta huolellisuuteen ja tyyliseikkoihin voisi siis vielä panostaa.
Tehtävä 2: SeikkailupelimaailmaTehtävänantoTämän tehtävän pohjana käytettiin ensimmäistä javatehtävää, ja käsittelyalue oli olennon liikkuminen maailmassa. Edellisessä tehtävässä koodatuille oliolle tehtiin nyt maailma jossa olennot sijaitsivat. Jossain vaiheessa tämän tehtävän alkupuolta jossain korvien välissä napsahti ja huomasin koodin rakentamisen käyvän yhä helpommaksi ja helpommaksi. Ei enää samaa tuloksetonta puurtamista mitä ensimmäisessä tehtävässä, vaan näkymä siitä mitä piti saada aikaiseksi oli paljon helpompi hahmottaa. Yhä syntaksivirheitä tuli, ja asioiden ilmaiseminen piti etsiä jostain. Silti tähän tehtävään meni aikaa vain vajaa 20 tuntia, mikä oli edelliseen tehtävään verrattuna miellyttävä parannus. Java alkoi näyttää ihan kivalta. Palautin tehtävän päivää etuajassa. Todennäköisesti ensimmäinen ja viimeinen kerta. arvosana: 5 assarin palaute: Toiminta +toimii lähes oikein +etsiKohde yksinkertainen ja toimiva -yksi virhe liittyen taulukoiden indeksointiin -Maailman ilmansuuntia ei määritelty vakioiksi +kommentointi riittävä -annaNaapuri toteutettu hankalasti -seikkaileKohteeseen voi arpoa kauan -paljon ylimääräisiä null- ja boolean-tarkistuksia
Tehtävä 3: Hirviöitä pelimaailmassaTehtävänanto3. Javatehtävä toi mukaan rajapintoja sekä monimutkaisia teeSiirto - metodeja, joissa tekemänsä koodin ymmärtäminen ja jäsentely oli todella tarpeen. Rajapintojen käsittäminen oli aika monimutkaista, eikä kaikki ollut tehtävän palauttamisenkaan jälkeen välttämättä vieläkään täysin selvää. Selvisin tästä ykkösjavaan verrattuna suhteellisen vaivatta - käyttäen kavereiden apua hyväkseni tietysti. Alkaa näyttää siltä että sisäistän jotain javan logiikasta kakkostehtävän aikana, pääsin jopa viemään oppimaani eteenpäin ja piiloassaroimaan muita tehtäväntekijöitä - joka oli omatunnon kannalta hyvä asia vastakohtana kokoajan avunsaamiselle. Tehtävään meni jälleen arviolta 20 tuntia. Arvosana: 5 Assarin palaute: "Toiminnallisuus: + toimii melko virheettömästi - poimiParasPelotteluesine() asettaa löydetyn suoraan olennon pelotteluesineeksi, ilman tsekkauksia. Saattaa löytää väärän esineen, jos kahdella esineellä pelottavuus suurempi kuin 7. (Ehto väärässä kohtaa) - manaaja ei tulosta mitään rekrytoidessaan - etsii viimeisen vastaantulevan runsaudensarven, eikä ekan (pikkuvirhe) (-) Manaajassa "lisätehtävä" tehty väärin: yrittää vaihtaa uhria entisen kuollessa, mutta tämä ei toimi. Tyyli: + hyvät kommentit, rivit ok + siistä ja jopa todella kompaktia koodia paikoitellen, tyylikkäitä ratkaisuja - joissakin paikoin ilmaisua olisi vielä saanut tiivistettyä rakennetta selkeyttämällä huom. joissakin kohdissa olisin luonut apumuuttujan useiden samojen metodikutsujen sijaan Oli hienoa huomata, miten paljon olit oppinut ensimmäisen Java-tehtävän jälkeen! Hyvää työtä!"
Tehtävä 4 - Pelaajan ohjaaminen, vuorotteleva peliTehtävänanto4. Javatehtävä oli ehkä kaikkein mukavin näistä, mikä näkyikin lopputuloksessa. Tässä tehtävässä viimeisteltiin kolmessa edellisessä tehtävässä aloitettu pelimaailma. Sisäistin uudet hommat melko nopsaan, ja vuoropohjaisuus, pelin tarkoituksen sekä maailman ideointi oli hauskaa puuhaa. Sain jälleen apua kavereilta ja autoin vuorostaan muita - näin se homma toimii. Aikaa kului noin 15 tuntia. arvosana: 5 Assarin palaute: Toiminta: * + Peli toimii * + Siisti parseri, ei kaadu * + ohjattuPelaaja tehty hyvin Tyyli: * + Javadoc kaikista luokista o Javadoccia voisi joiltain osin hieman täydentää (returns, throws, Vuorollinen) * + siisti, selkeä * - Apumetodit julkisia * - Tulostukset voisivat olla astetta selkeämmät * o Peli ilmoittaa tavoitteeksi Tuonen Joutsenen lahtaamisen, tämä ei kuitenkaan aiheuta pelin loppumista. Tehtävä 5: Graafinen käyttöliittymäTehtävänantoViides javatehtävä keskittyikin sitten swingin komponenttien käsittelyyn koodaamalla miinaharava. Jotenkin käytetty aika sekä vaiva vähentyivät huomattavasti kun siirryin eclipsen käyttöön (Kiitokset Petterille ja Panulle käytön opetuksesta :). Tällä kertaa aloittaminen jäi huomattavan myöhään ja tehtävän palauttaminen myöhästyi päivällä, alentaen arvosanaa yhdellä. Silti lopputulokseen olen hyvin tyytyväinen, koodina lähellä 6:sta kuulema, mut no-can-do. Perusswingin komponentit onnistuin loppujenlopuksi Petterin ystävällisellä avustuksella oppimaan, ja tulipa tästä otettua melko paljon ideoita Go-projektiinkin. Arvosana: 4 (syy: 1vrk myöhässä) Assarin palaute: Toiminta: +Toimii täysin oikein +vaikeustasobonari tehtynä ja vielä tyylikkäästi! Tyyli: +selkeää koodia +kommentteja melko niukasti, mikäli koodi olisi sekavampaa niitä kaipaisi lisää -tähti-import on huonoa tyyliä! (import javax.swing.*)
Tehtävä 6 Tulosten tallentaminenTehtävänantoKuudennessa tehtävässä koodasimme miinaharavaan Hall of Fame -tauluko ja sen tallennusmahdollisuuden. Tämä tehtävä oli jälleen tuskaisa, samaa luokkaa ykkösen kanssa, johtuen muutamien käytännön ongelmien takia - erään osatehtävän osapätkän ratkomiseen meni minulta arviolta 10 tuntia. Tämä rikkoi aikatauluni aika pahasti, ja loputkin tulokset olivat sen luokkaa. Myöhästyin lisäksi päivällä, mutta silti se meni jotenkin alle odotusten. eli: Tässä koodi, alkaa ajamalla ohjelma komennolla java Miinapeli :). Pelimekaniikka kuuluu viidenteen tehtävään, loput kuudenteen. Tulos Arvosana: 1 (syy: 1 vrk. myöhässä) Toiminta: * +kello toimii, tosin tyylikkäämpi ratkaisu löytyy kellon päivittämiselle * +pikanäppäimet toteutettu, tosin setMnemonicilla, setAccelerator olisi ollut parempi ratkaisu * -hallOfFame ei toimi, tietyt ehdot aiheuttavat ongelmia tiedostoon kirjoittamisessa * -hallOfFamen sulkeminen sammuttaa pelin * o pelin sulkeminen hyppäyttää hallOfFamen silmille * -miinaton aloitus ei toimi oikein, aloitetaan uusi peli miinan tapauksessa * -tulostaulukon tiedostosta lukeminen ei mene tehtävänannon mukaan * -myös osa tarkistuksista puuttuu * -compareTo() == 1 Tyyli: * +suht siistiä koodia * -kommentteja puuttuu ja olemassa olevat kommentoivat tyyliin: //pitäisköhän tarkistaa ... naah... Lisäksi hän suositteli lisätarkistusta ja -testausta projektia ajatellen, mitä sitten tulikin tehtyä. <------ Tästäpä takaisin etusivulle |