Ein Paket, das ein Hafen von Swiseducs Kara ist (Seite auf Deutsch). Kara ist ein Konzept für einen einfachen Zugang in die Welt der Programmierung. Kara ist ein winziger Marienkäfer, der in einem Wald mit Pilzen, Bäumen und Blättern lebt. Kara kann einen einzelnen Pilz bewegen, Blätter platzieren und entfernen, keine Bäume bewegen und wird mit Julia Code vollständig kontrolliert. Im Vergleich zum ursprünglichen Kara konzentriert sich die Interaktion männlich auf die Verwendung der Repl.
Installieren Sie in Julia im PKG Reply-Modus mithilfe
add JuliaKaraoder in Julia 0.6 im Reply-Modus verwendet
Pkg . add ( " JuliaKara " ) Verwenden Sie Juliakara, indem Sie Julia eröffnen und using JuliaKara in die Reply eingeben. Erstellen Sie als nächstes eine neue Welt der Größe 10x10 mit Funktionsbindungen im globalen Bereich, indem Sie @World (10,10) eingeben.
Sie können jetzt verwenden
move(kara) , um einen Schritt in die Richtung zu machen, in die Kara gegenübersteht,turnLeft(kara) , um Kara nach links zu drehen,turnRight(kara) , um Kara nach rechts zu drehen,putLeaf(kara) um ein Blatt unter Kara zu platzieren undremoveLeaf(kara) , um ein Blatt unter Kara aus zu entfernenUnd
treeFront(kara) um zu überprüfen, ob Kara vor einem Baum steht,treeLeft(kara) um zu überprüfen, ob es einen Baum von Kara gibt,treeRight(kara) um zu überprüfen, ob es ein Baum recht von Kara gibt,onLeaf(kara) um zu überprüfen, ob sich unter Kara ein Blatt befindet undmushroomFront(kara) um zu überprüfen, ob Kara vor einem Pilz steht. Juliakara ist sich der XML -Syntax bewusst, die die ursprüngliche Kara verwendet, um Welten in Dateien zu speichern. Es ist möglich, eine Welt durch die GUI oder mit dem Befehl @World [path] zu laden. Im Gegensatz zur GUI -Version @World [path] öffnet ein neues Fenster und Register world und kara in globaler Umfang als Referenzen.
@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.worldWenn man eine Welt durch die GUI lädt und das obige Verhalten will, muss der Hinweis auf Kara wiederhergestellt werden von:
kara = get_kara (world) Juliakara unterstützt mehrere Welten und mehrere Karas. Falls Sie das Beispiel reproduzieren möchten, führen Sie ihn innerhalb des Testverzeichnisses von Juliakara aus ~/.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) : Setzt world nach dem Laden oder dem letzten Anruf zum store!(world) .store!(world) : speichert den aktuellen Zustand der world .place_kara(world,X,Y,orientation) : Stellt Kara in world in X , Y orientation . Gültige Orientierungen sind :NORTH :EAST ,: :SOUTH und :WEST . orientation ist optional und standardmäßig :NORTH .place_mushroom(world,X,Y) : Legt einen Pilz in world in X , Y .place_tree(world,X,Y) : Legt einen Baum in world auf X , Y .place_leaf(world,X,Y) : Legt ein Blatt in world in X , Y . Das obige Makro für die Interaktion, z. @w1 übersetzt @w1 f(args...) auf f(w1,args...) . Da alle oben genannten Methoden als erstes world als erstes Argument haben, können sie auch mit dem Weltmakro bezeichnet werden. Dies funktioniert auch für benutzerdefinierte Methoden:
function turnAround (wo,ka)
turnLeft (wo,ka)
turnLeft (wo,ka)
end
@w1 turnAround (lara)Die Beispiele für Juliakara enthält weiteres Material, das die Verwendung von Juliakara zeigt.