こちらの紹介記事から知りました。
Scala言語を学ぶやさしいツール「Kojo」が無償公開 - Publickey
ダウンロードは Kojo Download から。実行には JRE 6 以上が必要(推奨は JRE 6 Update 17)。
インストールして起動したところ。NetBeansのような、オーソドックスなIDEといった趣き。
Turtle Canvas には本当に亀がいるw
スクリプトエディタに描画スクリプト(Kojo Command)を書くと、亀が命令されたとおり動いて絵を書く。まあ亀は必要ない(非表示も可)のだけどかわいいので重要ファクターw
とりあえず、Script Editor で Hello World したところ。Output Pane に出力される。
Script Editor はコード補完機能あり。
サンプルスクリプトがたくさん用意されていて、メニューからロードすることができる。これは便利。サンプルを実行したり修正していくうちにDSLの書き方がわかってくる。
一番ベーシックな Square スクリプト。正方形を描く。
clear
repeat(4) {
forward(100)
right
}
実行すると、亀が走る(歩く?)。
描画完了。
円を描く Circle スクリプト。
clear
setAnimationDelay(10)
setPenThickness(2)
setPenColor(green)
setFillColor(orange)
repeat(360) {
forward(1)
turn(1)
}
実行中。。。
描画完了。
Scalaのサブセットということで、Scalaの構文やライブラリが使える(対応構文・ライブラリの一覧はちょっと探せなかったが)。
for文を使ったスクリプト。
clear
invisible
for(i <- 0 until 5) {
val t = newTurtle(i * 100 - 300 ,0)
repeat(4) {
t.forward(50)
t.right
}
}
実行。
サンプルが充実しているので一部紹介。
亀がひたすら絵を描く。シュールw
完成図。
こんな綺麗なフラクタル画像も描ける。
私は詳しくないのだけれど、グラフィック系の知識がある人なら色々楽しめるのだと思う。
開発中の Canvas API("Early Preview"となっている)を使ったアニメーション。サインカーブのとてもわかりやすい説明(アニメーションなので、スクリーンショットだと伝わらないけれど・・・)。
チュートリアル(PDF)がこちらからダウンロードできる。
APIリファレンスがどうにも探せなかったのだけれど、サンプルやチュートリアルから拾えた範囲のAPI( Kojo Commands )を以下にリストアップ。
- forward(numberOfSteps) // 進行方向に進む。
- back(numberOfSteps) // 進行方向と逆に進む。
- right() // 90°右回転
- right(degree) // 指定された角度だけ右回転
- left() // 90°左回転
- left(degree) // 指定された角度だけ左回転
- turn(degree) // 指定された角度だけ回転。反時計回り、負の値を与えると時計回り。
- clear() // キャンバスをクリア
- jumpTo(x, y) // 指定された座標にジャンプ
- home() // ホーム位置(座標 (0,0) に戻る)
- newTurtle(x, y) // 指定された座標に新しいタートルを生成
- invisible() // タートル画像を非表示
- penUp() // 進みながらラインを引かない
- penDown() // 進みながらラインを引く
- setPenColor(color) // ペンの色を指定。red, blueなどの定数があらかじめ用意されている。
- setFillColor(color) // 塗りつぶしの色を指定
- setPenThickness(number) // ラインの太さを指定
Kojo Command は基本的にタートルグラフィックスなので、「進む」「向きを変える」のみで描画する。もっと高度な Canvas API (?) を開発中(サインカーブサンプルは Canvas を使用している)とのこと。
サンプルを動かすばかりでは面白くないので自分で描いてみた。。。
clear
def circle(l: Double) {
repeat(360) {
forward(l)
turn(-1)
}
}
def arc(l: Double, d: Double) {
repeat(180) {
forward(l)
turn(d)
}
}
setPenColor(black)
setFillColor(blue)
repeat(3) {
arc(0.5, -1)
turn(180)
}
arc(1.5, 1)
jumpTo(85,95)
setFillColor(red)
circle(0.1)
penUp
forward(70)
penDown
setFillColor(white)
forward(95)
arc(0.3,-1)
実行。へたっぴw
直観的なコマンドがあり、REPLですぐ確認できるので、算数・数学が好きな子だと熱中するのかもしれない。周囲に子供がいなくて反応を試せないのが残念。
と、現実逃避な半日。。。楽しいけど。><
0 件のコメント:
コメントを投稿