このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

タートルグラフィックス

参考サイト:

作るときの注意:

  • 距離(長さ)の単位はピクセル。斜めの距離が難しい。
  • 角度の単位は度。右が時計回り、左が反時計回り。
  • 色colorはCSSカラー文字列を使う。
  • 位置データposは [x, y] という数値の配列。

コマンド:

名前と引数 省略形
forwarcd(dist) fd
back(dist) bk
left(ang) lt
right(ang) rt
pendown() pd
penup() pu
setpencolor(color) spc(ここだけ)
showturtle() st
hideturtle() ht
clearscreen cs
home()
clean()
setpos(pos)
setxy(x, y)
setx(x)
sety(y)

クエリー:

名前と引数 戻り値 省略形
pos() pos
xcor() number
ycor() number
shownp() boolean sp(ここだけ)
pendownp() boolean pdp(ここだけ)
pencolor() color pc(ここだけ)
  • シングルタートル
  • コマンドとクエリーはすべて大域関数で、単一のタートルに作用する。
  • 初期化(再初期化)コマンドは必要で、initTG() とでもする。
  • タートルグラフィックスのコマンド/クエリー以外は、通常のJavaScriptを使ってプログラミングする。
  • マルチタートルをどうするか? 考えるのも面白い。
  • 3Dワールドも面白い。30年前に既に3D-LOGOはあったけど。

タートルプログラミングは、省略形があるコマンドだけでやるのが面白い。pos, x, y は余り使わない。
再帰と繰り返しが楽しい。配列のforEachなども使える。


それと、



[追記]

fd, bk, rt, lt, pd, pu, spc(setpencolor)だけでも十分。とりあえず、これだけ実装でもお絵描きに不足はない。

もともとLOGOは対話的なので、テキストエディタを使ってプログラミングするのではなくて、コンソールを使ってトライ&エラー方式で絵を描き、手続きがわかったらプログラムにしてみるようなやり方。コーディングよりは、その場で経験を重ねる。

  1. 長さや距離はピクセル単位なので、整数値のみ。ただし、負数は逆方向を示すので使ってよい。
  2. 角度も整数値を使う。最小単位は1度。任意の整数値を mod 360 (余りが0から359)で考える。
  3. 1度は 2π/360 ラジアン。小数部を適当に端折って計算する。
  4. 使いやすくした cos, sin を仮に util.c(dist, ang), util.s(dist, ang) とでもすると、長さdistで角度(適当に基準を決める)angの射線(矢印)に対する、x方向の射影の長さが util.c(dist, ang)、y方向の射影の長さが util.s(dist, ang)。
  5. 座標は学校で習った方式がよい(y軸上向き)。

他に、repeat(n, func) という高階関数を準備しておくと便利。実際のLOGOにもrepeatはある。[0, 1, ..., n-1].forEach(func) でもだいたい同じだが、簡潔に書ける。

LOGOは、子供に経験を与えるツール環境。プログラミング学習でもなんでも、もっとも重要なのは手を動かして具体的な経験をすることで、「作って使う」ことによって自分が亀にのり移った具体的な経験をして欲しい。

[/追記]