Swisseducs Kara(ドイツ語のページ)の港であるパッケージ。カラは、プログラミングの世界に簡単にアクセスできるための概念です。カラは、キノコ、木、葉のある森に住んでいる小さなてんとう虫です。 Karaは1つのキノコを移動し、葉を置いて除去し、木を動かすことができず、Juliaコードを使用して完全に制御されます。元のKaraと比較して、相互作用ManlyはReplの使用に焦点を当てています。
PKG Repl-Modeを使用してJulia内にインストールします
add JuliaKaraまたはJulia 0.6では、Repl-Modeを使用しています
Pkg . add ( " JuliaKara " )Juliaを開き、Juliakaraを使用してReplに入力して、 using JuliaKaraを開始します。次に@World (10,10)を入力することにより、グローバルスコープで関数バインディングを使用して、サイズ10x10の新しい世界を作成します。
これで使用できます
move(kara) 、カラが向いている方向に一歩進んでください、turnLeft(kara)はカラを左に曲げる、turnRight(kara) 、putLeaf(kara)カラの下に置きますremoveLeaf(kara) 、カラの下から葉を取り除きますそして
treeFront(kara)カラが木の前に立っているかどうかを確認する、treeLeft(kara)カラの木が残っているかどうかを確認するために、treeRight(kara)カラの右の木があるかどうかを確認する、onLeaf(kara)カラの下に葉があるかどうかを確認しますmushroomFront(kara)カラがキノコの前に立っているかどうかを確認します。Juliakaraは、ファイルにWorldsを保存するために元のKaraが使用するXML構文を認識しています。 GUIを介して、またはコマンド@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.worldGUIを通じて世界をロードし、上記の動作を望んでいる場合、KARAへの参照は次のように復元する必要があります。
kara = get_kara (world)ジュリアカラは複数の世界と複数のカラスをサポートしています。 Juliakara 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) : X 、 Y方向のorientationにworldのカラを配置します。有効なオリエンテーションは次のとおりです:NORTH 、 :EAST 、 :SOUTHおよび:WEST 。 orientationはオプションであり、デフォルトは:NORTHです。place_mushroom(world,X,Y) : X 、 Yのworldにマッシュルームを置きます。place_tree(world,X,Y) : X 、 Yのworldに木を置きます。place_leaf(world,X,Y) : X 、 Yに葉をworldに置きます。上記は、相互作用に使用されていました。たとえば、 @w1基本的に@w1 f(args...) f(w1,args...)に翻訳します。したがって、上記のすべての方法は、最初の議論としてworldを持っているため、世界マクロを使用して呼び出すこともできます。これは、カスタムメソッドでも機能します。
function turnAround (wo,ka)
turnLeft (wo,ka)
turnLeft (wo,ka)
end
@w1 turnAround (lara)Juliakaraの例ページには、Juliakaraの使用を示すさらなる資料が含まれています。