Juho Ojala :: Portfolio :: Etusivu  | Esseet ja käsitekartat  | Ohjelmointitehtävät  | OLO-tapaukset

Portfolio

Ohjelmointitehtävät

Ohjelmointitehtävä 2: Tehdään maailmasta parempi

Toisessa ohjelmointitehtävssä luotiin ensimmäisestä ohjelmointitehtävästä poimitulle Ihminen-luokalle pelkkää kirjojen lukemista ja tentteihin osallistumista virikkeellisempi maailma, johon kuuluivat seuraavat rakennuspalikat: Karttaelementti, Ajettava, Auto ja Raketti. Ensimmäinen ohjelmointitehtävä jäi minulta väliin, koska olin tehtävän palautuspäivänä vielä osa Suomen uskottavaa maanpuolustusjärjestelmää. Ennen tehtävän aloittamista minulla ei ollut ollenkaan kokemusta java-ohjelmoinnista, ja tietopohjana oli ainoastaan se, mitä olin ehtinyt lukea Kala-kirjasta. Erittäin kankean alun ja monien tuntien jälkeen homma alkoi kuitenkin sujumaan, eikä palautuspäivän kanssa tehnyt yhtään tiukkaa. Tehtävän haastavimman palan, reitinetsintäalgoritmin, toteutin käyttäen (osaamiseen nähden) monimutkaista rekursiivista ratkaisua, joka etsi reitin näennäisesti nopeasti. Tietokoneen resurssien käytön kannalta se oli kuitenkin varsin heikko toteutus.

Ohjelmointitehtävä 3: Laajennetaan maailmaamme

Kolmannessa ohjelmointitehtävässä laajennettiin kahdessa ensimmäisessä kehitettyä pelimaailmaa. Nyt maailmaan eri tavoin käyttäytyviä ihmisiä ja peliin rakennettiin vuorottelujärjestelmä, joka pyöritti pelaajien "siirtoja". Tehtävän vaativuutta lisäsi toisen ja kolmannen osatehtävän testikoodin puuttuminen. Luokkia testaava testikoodi oli osattava kirjoittaa itse, tai muokata se aiemman tehtävän testikoodista. Sain tehtyä tehtävän kunnialla loppuun joutumatta turvautumaan mihinkään purkkaratkaisuihin eikä koodissa ilmennyt pahempia virheitä.

Ohjelmointitehtävä 4: Vihdoinkin pääsee pelaamaan

Kun vielä neljännessä ohjelmointitehtävässä jatkettiin samasta koodista, alkoi kokonaisuuden hahmottaminen jo hieman vaikeutua. Tällä kertaa ohjelmaan lisättiin pelaaja, jota voi itse ohjailla. Pelaajaa ohjattiin yksinkertaisilla komentorivillä annettavilla käskyillä. Ohjelmassa harjoiteltiin lähinnä tietovirtojen käyttöä, sillä niitä tarvittiin näppäimistöltä lukemiseen ja parhaiden tulosten tallennusominaisuuden toteuttamiseen. Osa luokista oli myös kommentoitava Javadoc-kommenteilla.

Ohjelmointitehtävä 5: Japanilaiset ristikot

Viimeisessä ohjelmointitehtävissä harjoiteltiin graafisen käyttöliittymän toteuttamista Swingillä. Tehtävä oli varsin mukava, ja vihdoinkin pääsi tekemään jotain konkreettisempaa. Onnistuin toteuttamaan mukavasti toimivan skaalautuvuuden GridbagLayoutin avulla, mutta Swingistä jäi vielä paljon avoimia kysymyksiä elementtien kokojen määrittelyn suhteen. Ne kun eivät tuntuneet noudattaman useinkaan nille annettuja setMaximumSize, setMinimumSize tai setPreferredSize metodeilla annettavia ohjeita.