クリエイター手抜きプロジェクト[623]IoT Orange pico編 タートルグラフィックスに挑戦(1)
── 古籏一浩 ──

投稿:  著者:



●タートル=亀を動かしてグラフィックを描画

今回は、Orange pico(Orangino)のタートルグラフィックスを使ってみます。タートルグラフィックスは、プログラミング言語のひとつであるLOGO言語の機能です。

・LOGO
https://ja.wikipedia.org/wiki/LOGO

LOGO言語・タートルグラフィックスを、1980年代にさわったことがある人がいるかもしれません。タートル=亀を動かしてグラフィックを描画していくという、ちょっと変わった感じのツールです。

でも、このタートルグラフィックスと同じようなことは、Adobe IllustratorやPDFで使われているPostScriptやHTML5 Canvasでも行われています。亀かペンか、という違いです。

変わっているのは、BASICでタートルグラフィックスを扱う命令が標準搭載されていることの方です。でも、せっかくあるのですから、タートルグラフィックスで何か描いてみましょう。





Orange BASICには、以下のタートルグラフィックスの命令が用意されています。

turtle:タートルを初期化します。最大8匹までのタートルを扱えます。
turn:タートルの進行方向を変更します。正数だけでなく負数も指定できます。
move:タートルを移動します。正数の場合は前方に移動し、負数の場合は後方に移動します。
pen:ペンの上げ下げを行います。ペンを上げると軌跡は描画されません。ペンを下げると軌跡が描画されます。初期値は下げた状態になっています。
sel:操作するタートルを指定します。

タートルグラフィックスはダイレクトモードで簡単にできるので、まずはそれでやってみます。最初に以下のように入力しタートルを初期化します。

turtle

すると、画面左上にタートルが表示されます。テキスト画面に文字があって重なっていると見づらいので、以下のように入力しテキスト画面を消します。

cls 1

まず、タートルを前方に移動させてみましょう。以下のように入力します。するとタートルが右に100ドット移動し、軌跡(線)が描かれます。

move 100

今度はタートルの向きを変えてみましょう。右側に45度向きを変えます。

turn 45

見た目にタートルの向きが変わります。この状態で前方に100ドット移動させてみます。

move 100

すると、斜めに線が描画されます。今度はペンを上げて、軌跡を描かないようにした後で、タートルを前方に30ドット動かします。

pen 0
move 30

タートルが移動したらペンを下げてから30ドット前方に移動します。

pen 1
move 30

短い軌跡が描画されたはずです。今度は左に回転させた後、100ドット移動させてみましょう。

turn -135
move 100

タートルグラフィックは、こんな感じで描いていきます。移動と回転と、ペンの上げ下げだけしかありませんが、これだけでもいろいろ図形を描画させることができます。

Orange BASICのタートルグラフィックスでは、グラフィックの座標値を指定して移動させることはできません。初期化する時以外は相対的な指定になります。基本的にタートルグラフィックスは相対的な位置・方向を指定します。

以下のプログラムを実行すると、タートルが画面内をぐるぐると回転移動します。いずれも初期化している20行目以外は相対的な移動になっています。

10 cls
20 turtle 1,160,120,1,0
30 pen 0
40 turn 10
50 move 2+rnd(2)
60 pause 30
70 goto 40

次回は、プログラムとタートルグラフィックスを組み合わせて、図形を描いてみます。

【古籏一浩】openspc@alpha.ocn.ne.jp
http://www.openspc2.org/

家に新たな猫たちがうろつきはじめました。前々からいる白黒件猫(くだんねこ)、タワシのような顔をした黒猫、そして前々からいる白茶猫。そこに、どこかで見たような顔をした、大きなトラ猫がやってきました。という事で、名前は「マイケル」になりました。

・ホワッツマイケル
http://www.moae.jp/comic/whatsmichael/1

・創って学ぼうプログラミング
https://news.mynavi.jp/series/makeprogram

・8K/4K/ハイビジョン映像素材集
http://www.openspc2.org/HDTV/

・クリエイター手抜きプロジェクト
http://www.openspc2.org/projectX/