T-106.213 Ohjelmoinnin peruskurssi L1 / OLO

Tapaus 3

Robotti labyrintissä

Pelimaailmassa yksi olennainen elementti on maailmassa liikkuminen. Lähestytään asiaa seuraavasti: Kuvitellaan, että meillä on erilaisia suorakulmaisia labyrinttejä (ks. kuvia alla) ja lisäksi robotti, jonka tulee liikkua annetun labyrintin läpi etsien kohdetta X. X voi olla labyrintin uloskäynti, jokin paikka sen sisällä tai vaikkapa jonkin esineen sijaintipaikka.

Tehtävään liittyy kolme erillistä ongelmaa.

  1. Miten robotti esitetään ko. maailmassa ja mitä toimintoja se osaa?
  2. Miten maailma voidaan esittää olioiden avulla?
  3. Minkälaisia algoritmeja tarvitaan ohjaamaan robottia labyrintissä.

Robotin esittäminen

Ensimmäiseen osaongelmaan voidaan ajatella seuraava ratkaisu: Robotti esitetään yksinkertaisena oliona, joka osaa seuraavat asiat:

Maailman esittäminen

Esittäkää ratkaisu, miten labyrinttimaailma voidaan esittää olioiden avulla. Voitte olettaa, että kaikki maailman huoneet / ruudut ovat samanlaisia. Kustakin paikasta voidaan periaatteessa edetä johonkin neljään pääilmansuuntaan. Jotkut etenemissuunnat voivat kuitenkin olla tukossa.

Etenemisalgoritmit

Ongelmana on kehittää algoritmeja, joiden avulla robotti voidaan ohjelmoida liikkumaan labyrintissä. Algoritmi tutkii maailmaa robotin avulla ja antaa sille toimintaohjeita tavoitteena edetä lähtöpisteestä haluttuun lopetuspisteeseen. Labyrintteja on erilaisia. Esittäkää kullekin tapaukselle ratkaisualgoritmi.
  1. Yksinkertaisessa tapauksessa (kuva 1) labyrintissä on vain mutkitteleva käytävä, mutta käytävät eivät haaraudu.
  2. Toisessa tapauksessa (kuva 2) labyrintin käytävät voivat haarautua kahteen tai useampaan haaraan, mutta labyrintissä ei ole silmukoita.
  3. Kolmannessa tapauksessa (kuva 3) labyrintissä käytävät voivat haarautua ja ne voivat muodostaa silmukoita. Etsittävä kohde voi olla silmukan sisällä ja lähtöpiste ulkopuolella.
  4. Neljännessä tapauksessa (kuva 4) robotti liikkuu pimeässä suorakaiteen muotoisessa salissa, jossa se voi ottaa monta askelta samassa tilassa eteenpäin. Robotti näkee vain vierusruudut.
  5. Viimeisessä tapauksessa (kuva 5) pimeä huone voi sisältää seinämiä ja se voi olla mielivaltaisen muotoinen.

Voidaanko samaa algoritmia käyttää useamman tapauksen ratkaisemiseen?

Ratkaisut esitetään Java-metodeina tai ns. pseudokoodina, jossa käytetään Java-kielen kontrollirakenteita ja muuttujia, mutta jossa ei tarvitse määritellä muuttujia tarkasti ja noudattaa muutenkaan tiukasti Javan kielioppisääntöjä. Ratkaisualgoritmeja ei tarvitse kääntää Java-kääntäjällä ja testata koneellisesti.



 

Suunnitelman otsake:

 

 
 
 
 

Oppimistavoitteet: