Un paquete que es un puerto de Swisseducs Kara (página en alemán). Kara es un concepto para un fácil acceso al mundo de la programación. Kara es una pequeña mariquita que vive en un bosque con champiñones, árboles y hojas. Kara puede mover un solo hongo, colocar y eliminar las hojas, no puede mover árboles y está completamente controlado utilizando el código Julia. En comparación con el kara original, la interacción varonil se centra en usar el repl.
Instalar dentro de Julia en el modo PKG replic
add JuliaKarao en Julia 0.6 en el modo replicamiento usando
Pkg . add ( " JuliaKara " ) Comience a usar Juliakara abriendo a Julia y entrando using JuliaKara en el repl. A continuación, cree un nuevo mundo de tamaño 10x10 con enlaces de funciones en el alcance global al ingresar @World (10,10) .
Ahora puedes usar
move(kara) para dar un paso en la dirección que se enfrenta Kara,turnLeft(kara) para girar a Kara a la izquierda,turnRight(kara) para convertir a Kara correctamente,putLeaf(kara) para colocar una hoja debajo de Kara yremoveLeaf(kara) para quitar una hoja de debajo de Karay
treeFront(kara) para verificar si Kara se para frente a un árbol,treeLeft(kara) para verificar si queda un árbol de Kara,treeRight(kara) para verificar si hay un árbol derecho de Kara,onLeaf(kara) para verificar si hay una hoja debajo de Kara ymushroomFront(kara) para verificar si Kara se para frente a un hongo. Juliakara es consciente de la sintaxis XML que Kara original usa para almacenar mundos en archivos. Es posible cargar un mundo a través de la GUI o con el comando @World [path] . En contraste con la versión GUI @World [path] abre una nueva ventana y registra world y kara en el alcance global como referencias.
@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.worldEn caso de que uno cargue un mundo a través de la GUI y quiere el comportamiento anterior, la referencia a Kara debe ser restaurada por:
kara = get_kara (world) Juliakara admite múltiples mundos y múltiples karas. En caso de que desee reproducir el ejemplo, ejecutarlo desde el directorio de prueba de Juliakara, por ejemplo ~/.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) : ¡Restablece world al estado después de cargar o la última llamada para store!(world) .store!(world) : almacena el estado actual del world .place_kara(world,X,Y,orientation) : Place Kara en world en X , Y orientation orientada. Las orientaciones válidas son :NORTH , :EAST , :SOUTH y :WEST . orientation es opcional y es predeterminada a :NORTH .place_mushroom(world,X,Y) : coloca un hongo en world en X , Y .place_tree(world,X,Y) : coloca un árbol en world en X , Y .place_leaf(world,X,Y) : coloca una hoja en world en X , Y . La macro utilizada anteriormente para la interacción, por ejemplo, @w1 básicamente traduce @w1 f(args...) a f(w1,args...) . Por lo tanto, como todos los métodos anteriores tienen world como su primer argumento, también se pueden llamar usando la macro mundial. Esto también funciona para métodos personalizados:
function turnAround (wo,ka)
turnLeft (wo,ka)
turnLeft (wo,ka)
end
@w1 turnAround (lara)La página de ejemplos para Juliakara contiene más material que muestra el uso de Juliakara.