Пакет, который является портом швейцарских кара (страница на немецком языке). Кара - это концепция для легкого доступа к миру программирования. Кара - крошечная божья коровки, живущая в лесу с грибами, деревьями и листьями. Кара может перемещать один гриб, поместить и удалять листья, не может перемещать деревья и полностью контролируется с помощью кода Юлии. По сравнению с оригинальной кара, взаимодействие мужественно фокусируется на использовании Repl.
Установить в Джулии в режиме PKG, используя
add JuliaKaraили в Юлии 0,6 в режиме с использованием
Pkg . add ( " JuliaKara " ) Начните использовать Джулиакару, открыв Джулию и вступив в действие, using JuliaKara в реплику. Затем создайте новый мир размера 10x10 с функциональными привязками в глобальном объеме, введя @World (10,10) .
Теперь вы можете использовать
move(kara) , чтобы сделать шаг в направлении, с которой сталкивается Кара,turnLeft(kara) , чтобы повернуть кара влево,turnRight(kara) , чтобы повернуть кара справа,putLeaf(kara) , чтобы поместить лист под кара иremoveLeaf(kara) , чтобы удалить лист из -под карыи
treeFront(kara) , чтобы проверить, стоит ли Кара перед деревом,treeLeft(kara) , чтобы проверить, осталось ли осталось дерево Кара,treeRight(kara) , чтобы проверить, есть ли право дерево Кара,onLeaf(kara) , чтобы проверить, есть ли лист под кара иmushroomFront(kara) , чтобы проверить, стоит ли Кара перед грибами. Юлякара знает о синтаксисе XML, который оригинал Кара использует для хранения миров в файлах. Можно загрузить мир через графический интерфейс или с командой @World [path] . В отличие от версии GUI @World [path] открывает новое окно и регистрирует world и kara в глобальном объеме в качестве ссылок.
@World " file1.world "
move (kara) # moves Kara in world from file1.world
@World " file2.world "
# kara and world referencing elements from file1.world
# are now overwritten with references to elements from file2.world
move (kara) # moves Kara in world from file2.world
# Create additional references to world and kara
world_save = world
kara_save = kara
@World " file3.world "
# kara and world referencing elements from file2.world
# are now overwritten with references to elements from file3.world
move (kara) # moves Kara in world from file3.world
# Access stored references
move (world_save,kara_save) # moves Kara in world from file2.worldВ случае, если кто -то загружает мир через графический интерфейс и хочет приведенное выше поведение, ссылка на Кара должна быть восстановлена:
kara = get_kara (world) Юлякара поддерживает несколько миров и множественных кара. Если вы хотите воспроизвести пример, запустите его из -за тестового каталога Юлякары, EG ~/.Julia/v0.6/JuliaKara/test .
# Load the world contained in example.world.
# This also creates a macro @w1 in global scope to interact with
# the world
@World w1 " example.world "
# Create an empty world w2
@World w2 ( 10 , 2 )
# Place kara in the empty world.
# place_kara() returns a reference to the placed kara.
# @w2 place_kara(1,1) is just syntactic sugar for place_kara(w2,1,1)
kara = @w2 place_kara ( 1 , 1 )
# Kara is already placed in world w1, therefore we fetch it with get_kara()
# Since we can't create two kara references we use lara instead.
lara = @w1 get_kara ()
# Move lara a step in world w1
@w1 move (lara)
# Alternatively:
move (w1,lara)
# Move kara a step in world w2
@w2 move (kara)
# It's even possible to allow kara from world w2 to
# place something in world w1
@w1 putLeaf (kara)
reset!(world) : сбрасывает world в штат после загрузки или последнего звонка в store!(world) .store!(world) : хранит текущее состояние world .place_kara(world,X,Y,orientation) : помещает Кара в world в X , Y -ориентированную orientation . Действительные ориентации :NORTH , :EAST ,: :SOUTH и :WEST . orientation не является обязательной и по умолчанию :NORTH .place_mushroom(world,X,Y) : помещает гриб в world X , Y .place_tree(world,X,Y) : помещает дерево в world в X , Y .place_leaf(world,X,Y) : помещает лист в world в X , Y . Вышеуказанный использовал макрос для взаимодействия, например, @w1 в основном переводит @w1 f(args...) на f(w1,args...) . Таким образом, поскольку все вышеупомянутые методы имеют world как свой первый аргумент, их также можно назвать с использованием мирового макроса. Это также работает для пользовательских методов:
function turnAround (wo,ka)
turnLeft (wo,ka)
turnLeft (wo,ka)
end
@w1 turnAround (lara)На странице примеров для Юлякары содержится дальнейший материал, показывающий использование Юлякары.