Tämä kurssi on jo päättynyt.

Luku 12.3: Robottiturnaus

Tästä sivusta:

Pääkysymyksiä: Millainen robottiheimo pärjäisi parhaiten?

Mitä käsitellään? Oman algoritmin suunnittelua. Etäisesti symbolista konekieltä muistuttavalla kielellä ohjelmoiminen.

Mitä tehdään? Ohjelmoidaan. Kilpaillaankin, jos haluat.

Suuntaa antava vaativuusarvio: Riippuu siitä, paljonko haluat tehtävään panostaa.

Pistearvo: Ei virallisia O1-pisteitä. (Useimmille O1-opiskelijoille tämä luku on vapaaehtoinen. Jos suoritat O1:n lisäksi kurssia Ohjelmointistudio 1, huomaa, että tämä luku kuuluu sen kurssin sisältöön. Luvun roboturnauksessa parhaiten menestyneille on luvassa pieniä palkintoja, olivatpa millä kurssilla hyvänsä.)

Oheismoduulit: RobotTribes.

../_images/robot_fight.png

Ohjelmointitehtävä: oma robottiheimo

Tämä luku muodostuu yhdestä ohjelmointitehtävästä. Se on suoraa jatkoa luvun 10.3 tehtävälle.

Tehtävänanto

Laadi oma robottiheimo RoboSpeak-kielellä. Koeta tehdä siitä sellainen, että se pärjää mahdollisimman hyvin taistelussa muita heimoja vastaan.

Ohjeita ja vinkkejä

Tehtävän palautukseen kuuluu kaksi tiedostoa:

  • mytribe.tribe, jossa on heimosi RoboSpeak-ohjelma

  • mytribe.png, jossa on kuva, jota haluat käyttää heimon jäsenten kuvana.

Tässä tehtävässä et siis palauta Scala-koodia.

  • Yleisohje omien koodi- ja kuvatiedostojen sijoittamisesta moduuliin löytyy luvusta 10.3.

  • Voit käyttää jotakin annetuista kuvatiedostoista heimon kuvana tai käyttää jotain itse valitsemaasi tai tekemääsi kuvatiedostoa.

  • Kirjoita mielellään tiedoston alkuun lyhyt juonto siitä, millainen heimo on kysessä. Voit kirjoittaa ohjelmaasi myös muita selventäviä kommentteja, mutta tämä ei ole ehdoton vaatimus.

  • RoboSpeak-kieltä on käytettävä annetussa muodossa. Omia lisäyksiä kieleen ei saa tässä käyttää.

  • Oman heimo ei tule olla muutamaa kymmentä kilotavua suurempi. Turnauksessa (ks. alta) yhden vuoron aikana suoritetaan enintään 1000 käskyä.

  • Palauttaessasi A+ testaa, toimiiko RoboSpeak-ohjelmasi yhteen RobotTribes-moduulin kanssa. Tämä alustava testi on läpäistävä, jotta pääset mukaan turnaukseen. Jos ohjelmasi ei ole ajettavissa tai kaatuu tai päätyy ikuiseen silmukkaan tämän alkutestin aikana, A+ kertoo.

  • RoboSpeak-koodaus voi olla karvasta. Sori! ;-)

Heimoturnaus

Ottelut ja erät

Kunkin parin/opiskelijan palauttama heimo taistelee yhden "ottelun" jokaisen muun palauttajan heimoa vastaan. Kukin ottelu on sarja eriä. Erän ainesosat ovat

  • 20 kertaa 20 -ruutuinen robottimaailma, jossa on kymmenen seinäruutua sattumanvaraisissa paikoissa.

  • kaksi robottiheimoa, joissa kummassakin on aluksi kuusi robottia, jotka aloittavat sattumanvaraisista paikoista katsoen sattumanvaraisiin suuntiin

  • taistelevien heimojen lisäksi 30 rauhanomaista pupuheimon robottia (ks. tiedosto bunny.tribe) sattumanvaraisissa paikoissa, kuitenkin niin, että ne eivät ole taistelevien robottien kanssa suoraan viereisessä ruudussa.

Asetukset siis ovat juuri ne, joita käytetään, kun valitset ohjelman valikosta Tribal → Basic Duel.

Heimo, joka onnistuu kokonaan tuhoamaan vastustajansa, voittaa erän. Usein käy niin, ettei kumpikaan heimo kokonaan pyyhi toista kartalta. Tällöin erän voittaa se heimo, jossa on enemmän robotteja, kun suuri määrä kierroksia on pelattu.

Enemmän eriä voittanut heimo voittaa ottelun. Mitä isompi määrä voitettuja otteluita, sitä parempi. Eniten otteluita (eli eniten muiden opiskelijoiden heimoja) voittanut heimo voittaa koko turnauksen.

Virallinen palautus ja turnaukseen osallistuminen

A+ esittää tässä kohdassa tehtävän palautuslomakkeen.

Tulokset

Turnauksen tulokset julkaistaan pian kahdennentoista kierroksen määräajan jälkeen. Sen tekee Ohjelmointistudio 1 -kurssi. Linkki tuloksiin tulee myös O1:n päättävään viikkokoosteeseen lukuun 13.0. Parhaiden robottiheimojen laatijoille on luvassa pieniä palkintoja, olivatpa he studiokurssilaisia tai eivät.

Finaalit ja palkinnot

Ellei yllätyksiä ilmene, esitellään heimoturnauksen tuloksia jo kurssin päätösluennon yhteydessä: ke 9.12.2022 klo 13, sali T1, Tietotekniikan talo. Samaan syssyyn järjestetään myös pudotuspelimuotoinen finaalivaihe muutaman turnauksessa parhaiten pärjänneen´heimon kesken. (Pudotuspelit järjestetään puhtaasti viihdemielessä. Ne eivät vaikuta tehtävän pisteytykseen.)

Kehittelemme pieniä palkintoja pudotuspeleihin selvinneiden robottiheimojen laatijoille.

Päätösluento on pian kierroksen määräajan jälkeen. Jos tulokset jostain syystä viivästyvät eivätkä ehdi luennolle, finaalivaihe julkaistaan videona A+:ssa.

Palaute

Huomaathan, että tämä on henkilökohtainen osio! Vaikka olisit tehnyt lukuun liittyvät tehtävät parin kanssa, täytä palautelomake itse.

Tekijät

Tämän oppimateriaalin kehitystyössä on käytetty apuna tuhansilta opiskelijoilta kerättyä palautetta. Kiitos!

Materiaalin luvut tehtävineen ja viikkokoosteineen on laatinut Juha Sorva.

Liitesivut (sanasto, Scala-kooste, usein kysytyt kysymykset jne.) on kirjoittanut Juha Sorva sikäli kuin sivulla ei ole toisin mainittu.

Tehtävien automaattisen arvioinnin ovat toteuttaneet: (aakkosjärjestyksessä) Riku Autio, Nikolas Drosdek, Joonatan Honkamaa, Antti Immonen, Jaakko Kantojärvi, Niklas Kröger, Kalle Laitinen, Teemu Lehtinen, Jaakko Nakaza, Strasdosky Otewa, Timi Seppälä, Teemu Sirkiä, Anna Valldeoriola Cardó ja Aleksi Vartiainen.

Lukujen alkuja koristavat kuvat ja muut vastaavat kuvituskuvat on piirtänyt Christina Lassheikki.

Yksityiskohtaiset animaatiot Scala-ohjelmien suorituksen vaiheista suunnittelivat Juha Sorva ja Teemu Sirkiä. Teemu Sirkiä ja Riku Autio toteuttivat ne apunaan Teemun aiemmin rakentamat työkalut Jsvee ja Kelmu.

Muut diagrammit ja materiaaliin upotetut vuorovaikutteiset esitykset laati Juha Sorva.

O1Library-ohjelmakirjaston ovat kehittäneet Aleksi Lukkarinen ja Juha Sorva. Useat sen keskeisistä osista tukeutuvat Aleksin SMCL-kirjastoon.

Tapa, jolla käytämme O1Libraryn työkaluja (kuten Pic) yksinkertaiseen graafiseen ohjelmointiin, on saanut vaikutteita tekijöiden Flatt, Felleisen, Findler ja Krishnamurthi oppikirjasta How to Design Programs sekä Stephen Blochin oppikirjasta Picturing Programs.

Oppimisalusta A+ luotiin alun perin Aallon LeTech-tutkimusryhmässä pitkälti opiskelijavoimin. Nykyään tätä avoimen lähdekoodin projektia kehittää Tietotekniikan laitoksen opetusteknologiatiimi ja tarjoaa palveluna laitoksen IT-tuki. Pääkehittäjänä on nyt Markku Riekkinen, jonka lisäksi A+:aa ovat kehittäneet kymmenet Aallon opiskelijat ja muut.

A+ Courses -lisäosa, joka tukee A+:aa ja O1-kurssia IntelliJ-ohjelmointiympäristössä, on toinen avoin projekti. Sen suunnitteluun ja toteutukseen on osallistunut useita opiskelijoita yhteistyössä O1-kurssin opettajien kanssa.

Kurssin tämänhetkinen henkilökunta löytyy luvusta 1.1.

Lisäkiitokset tähän lukuun

Luvussa käytetty ajatus ruudukolla keskenään taistelevista ohjelmoitavista "lajeista" on pummittu Nick Parlanten suunnittelemasta evoluutioharjoitustehtävästä.

Viljami Nurminen ja Rune Pönni kehittivät RoboSpeakiin lisäkäskyjä opiskelijapalautteen perusteella.

Teemu Sirkiä laati robottiturnauksen ajamiseen käytetyn koodin. Joonatan Honkamaa ja Otto Seppälä ehdottivat turnausta tehostavan parannuksen heimobottien koodiin.

a drop of ink
Palautusta lähetetään...