No johan oli setti.

Se on siinä. Phuksisyksyn koettelemus on viimein ohi, Studio 1 -kurssin viimeisinkin deadline saapuu nyt keskiyöllä ja paniikkiperjantait ovat takanapäin. Rankkaa tämä on ollut mutta palkitsevaa. En olisi ikinä uskonut kaikista kurssin aloittaneista että lopussa itse kukin osaisi koodata oman pelin/projektin!

Itselläni on luultavasti ollut suhteellisesti helpompaa kuin monilla muilla kurssitovereillani, lähinnä siitä syystä että takanani on ohjelmoinnissa jo viisi vuotta harrastelijataustaa. En kuitenkaan voi sanoa päässeeni vähällä, tai yrittäneeni vain luikahtaa vähin äänin ohi aikarajoista. Otin tavoitteekseni saada ohjelmointikierroksien koodit omalta osaltani valmiiksi ennen viimeisen viikon paniikkikoodailuja, ja hyvästä syystä.

Halusin auttaa.

Halusin auttaa muita, kun assarit eivät kerenneetkään kaikkien luoksi. Halusin saada muutkin ymmärtämään että koodaaminen on pohjimmiltaan mukavaa. Halusin jakaa taitojani, olla reilu ja parantaa infophuksien yleistä mielenterveyttä. Halusin olla epäitsekäs.

Sainkin tavoitteeni pidettyä hyvin yllä ensimmäisten kolmen koodauskierroksen aikana. Vaikka hifistelinkin omaa eeppisteä taisteluani ykköskierroksella, säädin automaattisen täytön kakkoskierroksen karttagenerointiin ja tein kolmannen kierroksen seikkailupelistä interaktiivisen, jäi minulla aikaa muiden auttamiseen ja kysymyksiin vastailuihin. Neljännen kierroksen aikana en varautunut tulevaan Infoähkyyn tarpeeksi ajoissa, joten oikeasti tehtävänannossa määritelty interaktiivinen peli tuli raapaistua toimintaan kiireessä. Pelistä jäi puuttumaan muutama ominaisuus, jotka assari poimikin sieltä mukavasti TODO-kommenttien joukosta.

Viides kierros oli puolestaan sen verran jännä ja mielenkiintoinen, että uppouduin siihen tosissani. Kyseessä oli vanhan kunnon miinaharavan koodaaminen. Kunnon nörttinä olen aikaani saanut tuhlattua Windowsin mukana tulleen Miinaharavan hakkaamiseen ja saavuttanut mukavia tuloksiakin. Halusinkin todella saada aikaiseksi pelin, josta löytyisi normaalin toiminnallisuuden lisäksi muutakin hienoa settiä: Vaikeusasteet, ennätyslistat ja mahdollisesti jopa nettipistelistan.

Aikaa ei sitten lopulta ollutkaan tälle kierrokselle niin paljoa, että kaikkea olisin saanut tehtyä. Swingin epäloogisuus ja oudot, kovakoodatut ominaisuudet (kuten se, ettei JButtonin taustaväriä saa muutettua, kun hiiri on sen päällä!) tuottivat suurta päänvaivaa. Aikani taisteltuani sain kuitenkin aikaiseksi varsin pelattavan pelin, jota jaksoin vielä myöhemminkin jatkokehitellä. Mutta eihän projekti olisi mikään, jos siinä ei jotain jännää bugia olisi!

Miinapeli à la Vesa

Ohjelmointikierrosten lisäksi tähän kaikkeen kuului myös teoriatehtävien tekemistä. Opin niidenkin yhteydessä jälleen itsestäni jotain uutta – käsitekartat eivät vain suju. Tietorakenteista ja Swingistä tekemäni käsitekartat eivät loistaneet muuten täydet pisteet saaneiden kolmen esseen joukossa. Teoriatehtävistä paras oli ehdottomasti poikkeukset ja väkersinkin niistä mukavan esseen. Jaoin kirjoitelmani myös muille studio-ykkösläisille ja sain siitä kiitollista palautetta. Lämmitti todella paljon mieltäni kuulla, että siitä oli ollut apua tenttiin lukemisessa.

Kaikkien OngelmaLähtöinen Oppiminen -sessioiden ja teoria- sekä ohjelmointikierrosten jälkeen oli edessä vielä oman projektin vääntäminen. Vanhemmat infolaiset olivat pelotelleet meitä raukkoja phukseja sillä, että se syö koko joululoman. Ihan näin ei kuitenkaan käynyt, vaan elämäni lakkasi pyörimästä vasta uuden vuoden tienoilla. Jokaisen päivän sisältö oli projektin deadlineen mennessä sama: Herää, koodaa, syö, koodaa, hajoa, koodaa, nuku. Asetelmaa ei auttanut se, että olin asettanut projektilleni riman korkealle.

Projektini ajatuksena oli nimittäin tehdä peli, jossa pelaaja-palloa vedetään kuminauhalla ja paukautetaan liikkeelle. Pallon pitää pomppia seinien kautta paikasta A paikkaan B, mahdollisesti käyden siinä välillä turva-alueilla. Painovoimakin pelissä oli, ja viimeisessä kentässä sen suunta piti jopa vaihtaa osumalla erikoisalueisiin. Fysiikan mallinnuksen saaminen täydellisyyteen raastoi hermoja, mutta sain kuitenkin aikaiseksi jotain, mistä voin olla tyytyväinen ja ylpeä. Pikku bugi siihen lopulta vielä jäi, mutta mitäs moisista. Projektiani pääsee pelaamaan myös suoraan Java Web Startin avulla seuraavasta linkistä: Rubber Band Ball.

Olkoon pelini sympaattinen pallura henkisesti mukananne, kun kevät viimein koittaa.

Irkkibotin arkkitehtuurin suunnittelu

Seitsemännen tapauksen oppimistavoitteena minulla oli miettiä IRC-botin arkkitehtuuri ja esitellä saavutukseni muille. Ajatuksien hahmottaminen joksikin konreettiseksi toi asiaan mielenkiintoista haastetta – käsien heiluttelu kun ei oikein tietokoneruudulla näytä niin hyvältä. Tavoitteenani oli saada arkkitehtuuri mahdollisimman joustavaksi siinä mielessä, että jokainen ryhmän jäsen voisi toteuttaa oman moduulinsa/luokkansa bottiin välittämättä siitä että miten toisten robotit sopivat sen kanssa yhteen. Jokaisen moduulin pitäisi olla irrallinen kokonaisuus ja samalla helppo koodata. Lue loppuun

Tapaus 3: Tietorakenteet

Tapaus 3: Tietorakenteet

Edellisen tapauksen purun jälkeen ryhmämme sai eteensä uusia jänniä asioita. Käsiteltävä tapaus liittyy Javassa oleviin eri tietorakennetyyppeihin – taulukkoihin, joukkoihin, listoihin ja sanakirjarakenteisiin – joista yritimme parhaamme mukaan saada ideaa irti. Työotsakkeen ”Tietorakenteet” keksimisen jälkeen edessämme oli tutuksi tullut aivoriihi.

Aivoriihi, eli Post-It lappujen intohimoinen taululle läiskiminen, meinasi saada heikon alun kun kaikille ryhmän jäsenille ei ihan vielä auennut, mitä ihmettä tietorakenteet tarkoittavat. Ymmärrettävää, kun aiheesta järjestettävä luento on vasta seuraavana päivänä edessä niin melkein tyhjältä pöydältä on varmasti hankala aloittaa.

Allekirjoittanut kuitenkin pääsi viimeinkin hääräilemään lappujen kanssa ja mukavan ryhmittelyn jälkeen taululle muodostui seuraavan näköinen järjestys.

Hommat jakautuivat seuraavasti:

  • Annukka ottaa selvää taulukoista
  • Justus joukoista
  • Kaisa sanakirjarakenteista
  • Hanna listoista

OLOvirikkeisiin kuuluivat myös kuusi eri luokan suunnittelutehtävää. Ne jakautuivat seuraavasti:

  • Luokan Pala suunnittelu:
    1. Emmi: Maailman paloissa voi kussakin sijaita useita olentoja.
    2. Jaakko: Maailmassa on osiin jaettuja paloja. Kussakin palan osassa (esimerkiksi eteläosassa) voi sijaita yksi olento.
    3. Pauli: Maailmassa on osiin jaettuja paloja, ja kussakin osassa voi sijaita useita olentoja.
    4. Vesa: Maailmassa on yhdeksään osaan jaettuja paloja. Kussakin osassa voi sijaita useita olentoja ja esineitä. Kullakin osalla on myös oma nimi, maastotyyppi, sää ja tunnelma.
  • Luokan Maailma suunnittelu:
    1. Aarne: Maailma koostuu neliönmuotoisista paloista, ja maailmalle on määritelty suurin mahdollinen leveys ja korkeus. Maailmassa ei sijaitse olentoja – tarvitsee vain tietää, missä kohden maailmassa on laattoja ja missä ei.
    2. Miikka: Kuten kohdassa 1, mutta maailman kokoa ei rajoitettu

Päätimme kollektiivisesti että Miikka saa kärsiä hankalimman tehtävän kanssa nautittuaan Rooman lämmöstä. Tervetuloa takaisin Suomeen.