Примерни скриптове
В следващите програми ще видиш как основните инструкции и програмни структури могат да доведат до интересно поведение на робота. Опитайте се да разбереш скрипта и как работи. Още по добре ще бъде ако го опиташ сам като копираш кода и го поставиш в скрипт панела на РобоМайнд. Провери дали си на правилната карта преди да ги изпълняваш.
Пример 1 : Напиши си името
Тъй като роботът може да оцветява, ти можеш да създадеш прости програми които да рисуват. Използвайки оцветиБяло и сприОцветяване можеш да командваш робота дали да сложи четката на земята или не. Когато позволиш на робота да се движи, робота ще оставя линия на земята след себи си. По този начин можеш да напишеш букви като 'А'.
В карата openArea.map ти ще имаш достатъчно място за да си създадеш произведение на изкуството. Опитай се да използваш дистанционното управление (Пусни > Дистанционно управление) за да позволиш на робота да оцветява.
Виж също: основни инструкции: оцвети, движи |
|
#буква 'A'
оцветиБяло
напред(2)
надясно
напред(1)
надясно
напред(2)
назад(1)
надясно
напред(1)
сприОцветяване
Пример 2 : Намери бялото петно
В картата findSpot1.map която можеш да намериш в папката с картите на РобоМайнд, ще намериш някъде в левия ъгъл едно бяло петно. Нека да предположим че не знаеш на какво разстояние се намира този ъгъл. Как може робота да го намери ако започне някъде покрай стената? Разбира се можеш да преброиш всички стъпки на робота, но има и по-добри начини.
Нека робота да прави по една крачка напред, и го накарай да проверява дали вече вижда петното от лявата си страна. Ако го вижда от лявата си страна, трябва да се премести върхо петното и да приключи. Или трябва да направи още една крачка напред и да провери пак. Това може да се повторя в цикъл.
Виж също: основни инструкции:движи, виж, програмни структури: цикли, ако-структури, край |
|
повторение{
ако(влявоБяло){
# Няма бяло петно в ляво
наляво
напред(1)
край
}
иначе{
# Няма бяло петно до сега
напред(1)
}
}
Друг подход който показва същите резултати е следният скрипт. Тук роботът продължава да въви напред, докато спре да вижда стената (така знаем че това е ъгъла който търсим). Тогава роботът се обръща и се движи напред за да кацне на мястото.
докато(влявоПрепяствие){
напред(1)
}
наляво
напред(1)
Пример 3 : Следвай линията
В default.map ще намериш бяла линия на изток. Тази линия представлява писта чрез околната среда. Как може да накараш робота да следва тази писта?
Решението е донякъде подобно на предишния пример. След като робота е до началото на пистата, той трябва да определя какво да се прави стъпка по стъпка.
Виж също: основни инструкции:движи, виж, програмни структури: цикли, процедури, ако-структури, край |
|
# Отиди в началото на линията
надясно
напред(8)
# Върви по пътя стъпка по стъпка
повторение
{
ако(напредБяло){
напред(1)
}
иначе ако(вдясноБяло){
надясно
}
иначе ако(влявоБяло){
наляво
}
иначе ако(напредПрепяствие){
край
}
}
Друг подход е използването на така наречените рекурсивни процедури. В следващия скрипт ще видите процедурата следи която е дефинирана. При тази процедура, след като правилната стъпка се извършва, ще видиш че следи се използва в своята дефиниция. Това което се получава е поредица от следи(...следи(...следи(...)...)...)които изпълняват всеки път правилното действие към изпълнението на задачата. Това циклично определение се нарича рекурсия, и е вероятно че ще го намериш малко странно първия път когато го видиш. Не се тревожи, играй си с него и ще ти става все по-ясно.
# Отиди в началото на линията
надясно
напред(8)
# Стартиране на проследването
следи
# Рекурсивно орпеделяне за проследването
процедура следи{
ако(напредБяло){
напред(1)
следи
}
иначе ако(вдясноБяло){
надясно
следи
}
иначе ако(влявоБяло){
наляво
следи
}
иначе ако(напредПрепяствие){
# Завърши процедурата за тази команда
# (защото няма нищо след това завръщане,
# всички команди ще бъдат завършени
# и програмата ще спре)
връщане
}
}
Пример 4 : Лабиринт бегач
Как да се излиза от лабиринт? Оказва се че този труден въпрос има едно просто решение. Ако винаги следваш стената от дясната страна (или винаги следваш стената от лявата страна) ще намериш изход със сигорност.
Следващия скрипт прави робота да намери фара в maze1.map.
Виж също: основни инструкции:движи, виж,
програмни скруктури: чикли, ако-структури, край |
|
повторение{
ако(вдясноПрепяствие){
ако(напредСвободно){
напред(1)
}
иначе{
наляво
}
}
иначе{
надясно
напред(1)
}
ако(напредФар){
вдигни
край
}
}
|