Materjalid koostas ja kursuse viib läbi
Tartu Ülikooli arvutiteaduse instituudi programmeerimise õpetamise töörühm
Lisamaterjal. Pykkar
Silmaringi materjalis “Labürint” tutvustati erinevaid labürindi lahendamise algoritme ja labürinte. Selles lisamaterjalis õpitakse looma keerdkäigustikku, millesse on eksinud tegelane nimega Pykkar. Pykkar on virtuaalne robot, kes tegutseb virtuaalses maailmas. Robot suudab liikuda otse, pöörata paremale, värvida põrandat, asju kanda ja tal on sensorid, mis suudavad ümbrust tajuda. Näiteks oskab ta öelda, kas tema ees on kast või mitte. Selleks, et Pykkarit kasutada ja talle maailm luua, tuleb esmalt laadida arvutisse moodul nimega pykkar.
Õpetus, kuidas Pykkar arvutisse saada:
- Tee paremklikk pykkar.py failil ning salvestada fail kausta, kuhu hakatakse looma pykkari faile. Jälgi, et failisalvestustüüp oleks Kõik failid või Python File ning faililaiendiks märkida .py.
PYKKARILE MAAILMA LOOMINE
Maailma saab luua Pykkarile käsuga create_world, mille argumendiks on mitmerealine sõne, kus iga sümbol tähistab ühte ruutu kaardil. Mitmerealise sõne kirjutamiseks kasutatakse kolmekordseid jutumärke nii sõne alguses kui ka lõpus. Järgnevalt toome ühe Pykkari maailma näide.
Näiteprogramm 1
from pykkar import * # imporditakse moodul pykkar # create_world võtab argumendiks mitmerealise sõne, mis esitab roboti maailma. # Trellid tähistavad seinu, nooleke tähistab robotit, tühik tähistab heledat põrandat. # Noole suund (>, <, v või ^) tähistab roboti suunda. create_world(""" ######## # > # # # # # # # # # ######## """)
Maailm näeb välja selline.
Järgnevas tabelis on Pykkari maailma ruudud, mida on võimalik kasutada.
Allikas: https://progeopik.cs.ut.ee/03_liitlaused.html#pykkar
NB! Maailmas saab olla vaid üks Pykkar.
PYKKARI LIIGUTAMINE
Robotit saab tema maailmas otse liikuma panna, pöörata paremale, lükata torbikut või kasti jpm. Siin on näide, kuidas liigutada robotit näiteprogrammis loodud maailmas.
from pykkar import * create_world(""" ######## # > # # # # # # # # # ######## """) step() step() step() right()
Võrreldes kaardiga, kus Pykkarit veel ei pandud liikuma, on robot astunud kolm sammu edasi ning seejärel pööranud paremale.
Järgmisena toome käsud, mida Pykkar mõistab.
Allikas: https://progeopik.cs.ut.ee/03_liitlaused.html#pykkar
NB! Pykkar ei saa vasakule keerata, kuidas seda lahendada?
Vastus: 3x right() või kasutada ise muudetud pykkar.py faili, kus on defineeritud ka vasakule pööramine.
Proovime teha programmi, mis liigutaks Pykkarit nii kaua otse kuni tuleb vastu sein ning seejärel pöörab paremale. Kuidas seda teha? Varasemalt olete õppinud kasutama while-tsüklit. Siingi saab selle abil Pykkari liikuma panna.
from pykkar import * create_world(""" ######## # > # # # # # # # # # ######## """) while not is_wall(): # is_wall() annab True, kui Pykkar on ninaga vastu seina step() right()
Allikas: https://progeopik.cs.ut.ee/03_liitlaused.html#pykkar
Ülesanne
Proovi luua järgmine labürint (näiteprogramm 2) Pykkarile ning aita robot õnnelikult labürindist välja. Selleks kasuta käske step(), right() ja teisi vajalikke meetodeid. Vihje, kuidas väljapääseda, on programmi koodis.
Näiteprogramm 2
from pykkar import * create_world(""" ############################### #> # # ############# ### ### ### ### # # # # ## ### # # ########## # # ### # ### # # B### # ####### ## ##################### ## ## # # #### ## ########### # ## ### # ## # . ############################### """) step() step() step() step() step() step() step() step() step() step() step() step() right() ...