StudRobotti otti aamulla muiden ryhmien tekeleistä mittaa. Tekijänoikeuksiin ja tietoturvallisuuteen vedoten robotin synnystä ja sielunelämästä voikin kirjoittaa vasta nyt.

StudRobotti 7.0

Robottimme sai alkunsa 2.10. 4. OLO-tapaamisessa, jossa pohdittiin ryhmässä, millaiseilla algoritmeilla robotti saadaan selviytymään erilaisista labyrinteistä. Antti muisti lukeneensa Hampton Courtin palatsia ympäröivän puistolabyrintin ratkeavan oikeaa seinää seuraamalla. Itselleni ja muille tuli myös välittömästi mieleen kreikkalainen mytologia, jossa Ateenan Theseus pääsee takaisin ulos Kreetan kuninkaan Minoksen labyrintistä lankakerän avulla. Innostuttuamme oikeankädenmenetelmästä huomasimme, miten mainiosti sillä voidaan ensimmäiset labyrintit ratkaista. Viimeisessä tulikin vastaan ongelma. Maali ei sijainnut reunalla, eikä robotti osannut tutkailla ympärilleen. Pohdimme satunnaista suunnan valitsemista, mutta se onneksi hylättiin melko nopeasti tehottomana keinona löytää perille. Robotillemme tarvittiin siis lankakerän innoittamana muisti! Otimme oppimistavoitteeksemme suunnitella robotillemme jonkinlainen muistirakenne. Sovimme ekstratapaamisesta jo ennen seuraavaa OLO-sessiota.

Ekstratapaamisessa 8.10. olkkarilla puimme paikalle pääseiden Mariannen, Sannan, Moonan, Tiinan, Antin, Ollin, Sunin ja Oulan kanssa parin päivän aikana kehittyneet ideat muistin rakenteesta ja rakentamisesta. Fiksuimmaksi ratkaisuksi nousi avain-arvo-tyyppinen muisti. Senhetkisen Java-tehtävä 2:n innoittamana valitsimme Map:in toteuttavan HashMap:in StudRobottimme muistiksi. Pohdimme pitkään, millä avaimilla ja millä arvoilla muistia kannattaisi käyttää. Pläräilimme palaveria varten tulostettuja valmiita metodeita ja vinkkiluokkia ja löysimme mahtavan java.awt.Point-luokan. Päätimme, että robottimme tallentaa avaimella koordinaattipiste (x,y) kokonaisluvun, joka kertoo aikaisempien käyntikertojen lukumäärän kyseisissä ruuduissa. Sovimme seuraavaksi ensimmäisestä varsinaisesta ohjelmointitapaamisesta.

Paniikissa tietokoneiden tuulettimien hurinassa 12.10. ohjelmoimme koko joukolla valmiiksi 1. version robotistamme.1.0 version koodailua Siirtyessä uuteen ruutuun robotti tallensi muistiinsa joko uudelle pisteelle käyntikerroiksi 1 tai ennestään tutulle käyntikerrat + 1. Robotti tarkistaa kaikkien naapuriruutujen käyntikerrat ja tallentaa ne apumuuttujiin. Jos jossain suunnassa on seinä, tallennetaan kyseisen suunnan apumuuttujaksi megaiso luku. Robotti valitsee pienimmän apumuuttujan, ja etenee sen suuntaan. Tungimme StudRobotti ykkösen sekä Turnaus-ohjelman samaan zip-pakettiin, jonka siirsimme kaikkien ryhmäläisten saatavaksi IRC-kanavallamme julkaistuun internet-osoitteeseen. Sovimme, että kaikki miettii parannuksia ja vaihtoehtoja algoritmiin ja siirtää ne kaikkien saataville ennen versionvalinta deadlinea. Maanantaiaamusella

22.10. pidimme Sunin kanssa karsinnan parhaille kandidaateille. Ehdotuksista kokosimme lopullisen version 7.0, joka osallistui varsinaiseen turnaukseen. Parannuksina ensimmäiseen versioon nähden 7.0 etenee käyntikertojen tasapelin sattuessa aina oikealle. Lisäksi 7.0 merkkaa käytyjen umpikujaruutujen käyntikerroiksi 1000, eikä näin siis enää eksy niihin. Juttelimme muiden jäsenten kanssa IRC:n, SMS:n ja puhelimen välityksellä ja päätimme lähettää 7.0:n Villen pissatestiin.

P.S. Koitimme ottaa oppia tästä.