Artisoc/Pnuts連携機能の紹介
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
[[FrontPage]]
#contents
2014/03/21からのアクセス回数 &counter;
* Pnuts連携機能の紹介 [#ud6b6681]
Artisocとjavaで作られたクラスの橋渡しをするために、javaで...
Pnuts連携機能を使うことで、Artisocのモデルの変数の値を読...
ArtisocのモデルにjavaのGUIを利用した画面を追加することも...
Artisocでpnutsスクリプト機能を利用するには、Artisocプロフ...
** ArtisocのPnuts連携用組み込み関数 [#m3643beb]
pnutsと連携するためにArtisocに以下の2つの組み込み関数が用...
- ExecPnuts: puntsで記述されたスクリプトを実行します。
- EvalPnuts: pnutsの式を評価し、その値を返します。
これらの使い分けとしては、pnutsで関数を定義し、Artisocで...
ExcecPnutsを利用し、pnutsの関数呼び出しにEvalPnutsを利用...
** ExecPnutsの最も簡単な例 [#j718fa5e]
ExecPnutsの動きを確認するために、最も簡単なモデル(&ref(p...
どの動作をみてみます。
Artisocのモデルは、Universeの直下に変数vがあるだけで、Uni...
Universeのステップの終わりUniv_Step_Endで変数vの値をプリ...
p01.pnutsのスクリプトは、Universe.vの値を取得し、その値に...
簡単なものです。printlnの出力は、Artisocの画面にはでませ...
pnutsからArtisocの変数の値を取得する場合には、PnutsUtil::...
値をセットする場合には、PnutsUtil::setValue関数を使用しま...
#pre{{
v = PnutsUtil::getValue(engine, "Universe.v")
println(v)
PnutsUtil::setValue(engine, "Universe.v", v + 1)
}}
実行するとUniverse.vの値が1ずつ増えていることが確認でき...
&ref(th_p01.jpg);
** JavaのGUIを追加する例 [#u4ec8fce]
先の例では、変数vの値を1ずつ増やす簡単なものでしたが、Ja...
値を設定する例を次に示します。((Artisocのコントロールパネ...
モデルには、&ref(p02.model);を使用し、pnutsスクリプトには...
モデルの変更点は、Univ_Initでp02.pnutsのスクリプトを実行...
これを実行すると、以下のようなJava Swingのフレームが表示...
Artisocのコンソール画面に表示される値が変更されます。
&ref(p02.png);
p02.pnutsのスクリプトをみてみましょう。説明のために行番号...
- 1-2行:import文で必要なjavaのパッケージをインポートし、...
- 4-9行:SwingのJFrame, JLabel, JTextFieldを使ってGUIを作...
- 10-18行:pnutsの便利な機能で、PnutsLayoutを使って画面の...
- 19-20行:作成したフレームを表示します
- 23-28行:変更ボタンを押されたときのコールバック関数を定...
- 30行:Pnutsの便利な機能でGUI部品のイベントとコールバッ...
- 32行:フレームをルートフレームにセットします。
#pre{{
1 import("pnuts.awt.*")
2 import("javax.swing.*")
3
4 f = JFrame("pnuts test")
5 l = JLabel("Univser.v")
6 tf = JTextField(10)
7 tf.setText("")
8 b = JButton("変更")
9 b.setToolTipText("This is a JButton");
10 layout(f,
11 [PnutsLayout, "cols=1,padx=10,pady=5",
12 [PnutsLayout, "cols=2,padx=2",
13 l, tf
14 ],
15 b
16 ]
17 )
18 //f.setSize(200, 200)
19 f.pack()
20 f.show()
21
22 /**** 変更ボタンを押されたときのコールバック関...
23 function do_b_update()
24 {
25 v = tf.getText()
26 println(v)
27 PnutsUtil::setValue(engine, "Universe.v", v)
28 }
29
30 bind(b, "actionPerformed", function(e) do_b_upd...
31
32 JOptionPane::setRootFrame(f)
}}
このようにpnuts連携機能を使うとArtisocでjavaのGUI機能を使...
** シミュレーションの終了時の処理 [#nf4b1750]
先の例で、ArtisocにPnutsを使って別の処理を追加する場合、...
やシミュレーションの終了(PLAY_STOPPED)のタイミングが必...
このような場合、pnutsのbind関数を使ってArtisocのengineか...
それに対するコールバック関数で処理することができます。
p02.pnutsにシミュレーションの終了時にGUIを閉じる処理を追...
#pre{{
function do_close(e)
{
id = e.getID()
if (id == MASActionEvent::PLAY_ERRORMSG ||
id == MASActionEvent::PLAY_STOPPED) {
f.dispose()
}
}
bind(engine, "actionPerformed", do_close)
}}
シミュレーションの終了ボタンを押すとjavaで作ったGUIが連動...
*** Pnuts連携時の注意点 [#r228a912]
pnutsで記述したスクリプトは、Artisocの外部で別のスレッド...
Artisocの実行環境設定で、実行ウェイトとして、1ミリ以上の...
&ref(Simulation_Setting.png);
** 配列を扱う [#q979ae78]
pnutsからArtisocの配列を参照する時には、PnutsUtil::getArr...
例としては、&ref(p04.model);と&ref(p04.pnuts);を使用しま...
この例題では、sia, sba, sda, ssaの配列の値をdia, dba, dda...
配列変数の値を取得するには、getValueと同様にengineとモデ...
#pre{{
sia = PnutsUtil::getArray(engine, "Universe.sia")
}}
配列の値をセットする場合には、pnutsで[]内に値をカンマ区切...
以下のようにsa変数にHello, Mr., Takemotoとセットすると、U...
#pre{{
sa = ["Hello", "Mr.", "Takemoto"]
PnutsUtil::setArray(engine, "Universe.dsa", sa)
}}
** エージェントの生成 [#va04ab9c]
pnutsからArtisocのエージェントを生成することができます。
エージェント生成の例として、アリの例題を作成してみます。
初期設定でランダムな方向に直進するアリエージェントをJava...
生成してみます。
モデルには、&ref(p_ant.model);を使用し、スクリプトには、&...
&ref(p_ant.png);
p_ant.pnutsのSpawn Antボタンのコールバック関数を以下の様...
PnutsUtil::CreateAgt関数の引数は、engineと生成するエージ...
#pre{{
function do_b_update()
{
PnutsUtil::CreateAgt(engine, "Universe.ground.ant")
}
}}
** Pnutsスクリプトのデバッグ [#sd3a5fbe]
pnutsには、デバッガが組み込まれており、Pnutsスクリプト内...
p_ant.pnutsの代わりにdebug.pnutsを起動します。(&ref(p_de...
#pre{{
Univ_Init{
ExecPnuts("debug.pnuts")
}
}}
&ref(debug.pnuts); の内容は、以下の様にします。loadFileの...
#pre{{
import("pnuts.tools.VisualDebugger")
function debug()
{
loadFile(modelDir + "/p_ant.pnuts", VisualDebugger()...
}
fork(debug)
}}
これを実行すると、以下の様なデバッガ画面が現れます。マウ...
することができますが、以下の様にコールバックにブレークポ...
(要検討)
しかし、Pnutsスクリプトの処理の流れや、変数の設定値をチェ...
&ref(debug_win.png);
** コメント [#p46ea21d]
#vote(おもしろかった[1],そうでもない[0],わかりずらい[0])
皆様のご意見、ご希望をお待ちしております。
#comment_kcaptcha
終了行:
[[FrontPage]]
#contents
2014/03/21からのアクセス回数 &counter;
* Pnuts連携機能の紹介 [#ud6b6681]
Artisocとjavaで作られたクラスの橋渡しをするために、javaで...
Pnuts連携機能を使うことで、Artisocのモデルの変数の値を読...
ArtisocのモデルにjavaのGUIを利用した画面を追加することも...
Artisocでpnutsスクリプト機能を利用するには、Artisocプロフ...
** ArtisocのPnuts連携用組み込み関数 [#m3643beb]
pnutsと連携するためにArtisocに以下の2つの組み込み関数が用...
- ExecPnuts: puntsで記述されたスクリプトを実行します。
- EvalPnuts: pnutsの式を評価し、その値を返します。
これらの使い分けとしては、pnutsで関数を定義し、Artisocで...
ExcecPnutsを利用し、pnutsの関数呼び出しにEvalPnutsを利用...
** ExecPnutsの最も簡単な例 [#j718fa5e]
ExecPnutsの動きを確認するために、最も簡単なモデル(&ref(p...
どの動作をみてみます。
Artisocのモデルは、Universeの直下に変数vがあるだけで、Uni...
Universeのステップの終わりUniv_Step_Endで変数vの値をプリ...
p01.pnutsのスクリプトは、Universe.vの値を取得し、その値に...
簡単なものです。printlnの出力は、Artisocの画面にはでませ...
pnutsからArtisocの変数の値を取得する場合には、PnutsUtil::...
値をセットする場合には、PnutsUtil::setValue関数を使用しま...
#pre{{
v = PnutsUtil::getValue(engine, "Universe.v")
println(v)
PnutsUtil::setValue(engine, "Universe.v", v + 1)
}}
実行するとUniverse.vの値が1ずつ増えていることが確認でき...
&ref(th_p01.jpg);
** JavaのGUIを追加する例 [#u4ec8fce]
先の例では、変数vの値を1ずつ増やす簡単なものでしたが、Ja...
値を設定する例を次に示します。((Artisocのコントロールパネ...
モデルには、&ref(p02.model);を使用し、pnutsスクリプトには...
モデルの変更点は、Univ_Initでp02.pnutsのスクリプトを実行...
これを実行すると、以下のようなJava Swingのフレームが表示...
Artisocのコンソール画面に表示される値が変更されます。
&ref(p02.png);
p02.pnutsのスクリプトをみてみましょう。説明のために行番号...
- 1-2行:import文で必要なjavaのパッケージをインポートし、...
- 4-9行:SwingのJFrame, JLabel, JTextFieldを使ってGUIを作...
- 10-18行:pnutsの便利な機能で、PnutsLayoutを使って画面の...
- 19-20行:作成したフレームを表示します
- 23-28行:変更ボタンを押されたときのコールバック関数を定...
- 30行:Pnutsの便利な機能でGUI部品のイベントとコールバッ...
- 32行:フレームをルートフレームにセットします。
#pre{{
1 import("pnuts.awt.*")
2 import("javax.swing.*")
3
4 f = JFrame("pnuts test")
5 l = JLabel("Univser.v")
6 tf = JTextField(10)
7 tf.setText("")
8 b = JButton("変更")
9 b.setToolTipText("This is a JButton");
10 layout(f,
11 [PnutsLayout, "cols=1,padx=10,pady=5",
12 [PnutsLayout, "cols=2,padx=2",
13 l, tf
14 ],
15 b
16 ]
17 )
18 //f.setSize(200, 200)
19 f.pack()
20 f.show()
21
22 /**** 変更ボタンを押されたときのコールバック関...
23 function do_b_update()
24 {
25 v = tf.getText()
26 println(v)
27 PnutsUtil::setValue(engine, "Universe.v", v)
28 }
29
30 bind(b, "actionPerformed", function(e) do_b_upd...
31
32 JOptionPane::setRootFrame(f)
}}
このようにpnuts連携機能を使うとArtisocでjavaのGUI機能を使...
** シミュレーションの終了時の処理 [#nf4b1750]
先の例で、ArtisocにPnutsを使って別の処理を追加する場合、...
やシミュレーションの終了(PLAY_STOPPED)のタイミングが必...
このような場合、pnutsのbind関数を使ってArtisocのengineか...
それに対するコールバック関数で処理することができます。
p02.pnutsにシミュレーションの終了時にGUIを閉じる処理を追...
#pre{{
function do_close(e)
{
id = e.getID()
if (id == MASActionEvent::PLAY_ERRORMSG ||
id == MASActionEvent::PLAY_STOPPED) {
f.dispose()
}
}
bind(engine, "actionPerformed", do_close)
}}
シミュレーションの終了ボタンを押すとjavaで作ったGUIが連動...
*** Pnuts連携時の注意点 [#r228a912]
pnutsで記述したスクリプトは、Artisocの外部で別のスレッド...
Artisocの実行環境設定で、実行ウェイトとして、1ミリ以上の...
&ref(Simulation_Setting.png);
** 配列を扱う [#q979ae78]
pnutsからArtisocの配列を参照する時には、PnutsUtil::getArr...
例としては、&ref(p04.model);と&ref(p04.pnuts);を使用しま...
この例題では、sia, sba, sda, ssaの配列の値をdia, dba, dda...
配列変数の値を取得するには、getValueと同様にengineとモデ...
#pre{{
sia = PnutsUtil::getArray(engine, "Universe.sia")
}}
配列の値をセットする場合には、pnutsで[]内に値をカンマ区切...
以下のようにsa変数にHello, Mr., Takemotoとセットすると、U...
#pre{{
sa = ["Hello", "Mr.", "Takemoto"]
PnutsUtil::setArray(engine, "Universe.dsa", sa)
}}
** エージェントの生成 [#va04ab9c]
pnutsからArtisocのエージェントを生成することができます。
エージェント生成の例として、アリの例題を作成してみます。
初期設定でランダムな方向に直進するアリエージェントをJava...
生成してみます。
モデルには、&ref(p_ant.model);を使用し、スクリプトには、&...
&ref(p_ant.png);
p_ant.pnutsのSpawn Antボタンのコールバック関数を以下の様...
PnutsUtil::CreateAgt関数の引数は、engineと生成するエージ...
#pre{{
function do_b_update()
{
PnutsUtil::CreateAgt(engine, "Universe.ground.ant")
}
}}
** Pnutsスクリプトのデバッグ [#sd3a5fbe]
pnutsには、デバッガが組み込まれており、Pnutsスクリプト内...
p_ant.pnutsの代わりにdebug.pnutsを起動します。(&ref(p_de...
#pre{{
Univ_Init{
ExecPnuts("debug.pnuts")
}
}}
&ref(debug.pnuts); の内容は、以下の様にします。loadFileの...
#pre{{
import("pnuts.tools.VisualDebugger")
function debug()
{
loadFile(modelDir + "/p_ant.pnuts", VisualDebugger()...
}
fork(debug)
}}
これを実行すると、以下の様なデバッガ画面が現れます。マウ...
することができますが、以下の様にコールバックにブレークポ...
(要検討)
しかし、Pnutsスクリプトの処理の流れや、変数の設定値をチェ...
&ref(debug_win.png);
** コメント [#p46ea21d]
#vote(おもしろかった[1],そうでもない[0],わかりずらい[0])
皆様のご意見、ご希望をお待ちしております。
#comment_kcaptcha
ページ名:
SmartDoc