Un paquet qui est un port de Swisseducs Kara (page en allemand). Kara est un concept pour un accès facile au monde de la programmation. Kara est une petite coccinelle vivant dans une forêt avec des champignons, des arbres et des feuilles. Kara peut déplacer un seul champignon, placer et retirer les feuilles, ne peut pas déplacer les arbres et est entièrement contrôlé à l'aide du code Julia. En comparaison avec le KARA d'origine, l'interaction virile se concentre sur l'utilisation du REP.
Installez dans Julia dans le mode de remplacement PKG en utilisant
add JuliaKaraou en julia 0,6 en mode de remplacement en utilisant
Pkg . add ( " JuliaKara " ) Commencez à utiliser Juliakara en ouvrant Julia et en entrant using JuliaKara dans le REP. Créez ensuite un nouveau monde de taille 10x10 avec des liaisons de fonction dans la portée globale en entrant @World (10,10) .
Vous pouvez maintenant utiliser
move(kara) pour faire un pas dans la direction que Kara est confrontée,turnLeft(kara) pour tourner Kara à gauche,turnRight(kara) pour tourner Kara à droite,putLeaf(kara) pour placer une feuille sous Kara etremoveLeaf(kara) pour retirer une feuille de sous Karaet
treeFront(kara) pour vérifier si Kara se tient devant un arbre,treeLeft(kara) pour vérifier s'il reste un arbre de Kara,treeRight(kara) pour vérifier s'il y a un droit d'arbre de Kara,onLeaf(kara) pour vérifier s'il y a une feuille sous Kara etmushroomFront(kara) pour vérifier si Kara se tient devant un champignon. Juliakara est au courant de la syntaxe XML que Kara utilise pour stocker les mondes dans des fichiers. Il est possible de charger un monde via l'interface graphique ou avec la commande @World [path] . Contrairement à la version GUI @World [path] ouvre une nouvelle fenêtre et enregistre world et kara dans la portée mondiale en tant que références.
@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.worldDans le cas où on charge un monde à travers l'interface graphique et veut le comportement ci-dessus, la référence à Kara doit être restaurée par:
kara = get_kara (world) Juliakara prend en charge plusieurs mondes et plusieurs karas. Dans le cas où vous souhaitez reproduire l'exemple, exécutez-le à partir du répertoire de test de Juliakara, par exemple ~/.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) : réinitialise world avec l'État après le chargement ou le dernier appel à store!(world) .store!(world) : stocke l'état actuel du world .place_kara(world,X,Y,orientation) : place Kara dans world à orientation orientée vers X , Y . Les orientations valides sont :NORTH , :EAST , :SOUTH et :WEST . orientation est facultative et par défaut :NORTH .place_mushroom(world,X,Y) : place un champignon dans world à X , Y .place_tree(world,X,Y) : place un arbre dans world à X , Y .place_leaf(world,X,Y) : place une feuille dans world à X , Y . La macro utilisée ci-dessus pour l'interaction, par exemple, traduit essentiellement @ @w1 @w1 f(args...) à f(w1,args...) . Ainsi, comme toutes les méthodes ci-dessus ont world comme premier argument, ils peuvent également être appelés en utilisant la macro mondiale. Cela fonctionne également pour les méthodes personnalisées:
function turnAround (wo,ka)
turnLeft (wo,ka)
turnLeft (wo,ka)
end
@w1 turnAround (lara)La page Exemples de Juliakara contient un matériel supplémentaire montrant l'utilisation de Juliakara.