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

Luku 12.2: 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.)

x
Oheismoduulit: RobotTribes.
../_images/robot_fight.png

Ohjelmointitehtävä: oma robottiheimo

Tämä luku muodostuu yhdestä ohjelmointitehtävästä. Se on suoraa jatkoa luvun 11.2 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, ja
  • 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 11.2.
  • 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, ja
  • 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.

Jos toinen heimo onnistuu kokonaan tuhoamaan vastustajansa, se voittaa erän. Usein käy niin, että kumpikaan heimo ei kokonaan pyyhi toista kartalta. Tällöin se heimo, jossa on enemmän robotteja, voittaa erän, 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.

Harjoitteluareena RoboSpeak.fi

Kun pupuista ei enää ole vastusta, ja tiikereillekin melkein pärjää, on aika siirtyä uusille areenoille.

Voit lähettää robottisi mukaan taisteluharjoitukseen luomalla osoitteessa https://robospeak.fi itsellesi tunnuksen. (Sivusto tarvitsee sitä varten sähköpostiosoitteen mutta käyttää tuota osoitetta vain tunnuksen aktivointiin eikä tallenna sitä minnekään. Valitsemasi käyttäjätunnus ei näy muille opiskelijoille, ja sama pätee bottiesi koodiin.)

Huomaa, että RoboSpeak.fi on vain harjoittelua varten. Virallinen turnaus käydään määräajan umpeuduttua; siitä on vastuussa sisarkurssimme Ohjelmointistudio 1. Ollaksesi mukana turnauksessa sinun on palautettava osallistuva heimosi alla olevalla lomakkeella.

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.

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, Jaakko Kantojärvi, Niklas Kröger, Teemu Lehtinen, Strasdosky Otewa, Timi Seppälä, Teemu Sirkiä 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 tällä hetkellä 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 ovat luoneet Nikolai Denissov, Olli Kiljunen, Nikolas Drosdek, Styliani Tsovou, Jaakko Närhi ja Paweł Stróżański yhteistyössä Juha Sorvan, Otto Seppälän, Arto Hellaksen ja muiden 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...