js-turtleで図形を描こう!

js-turtleとは

この模擬授業では,タートル・グラフィクスと呼ばれるコンピュータ・グラフィックスを記述するための方法を用いて図形を描くことに挑戦します. タートル・グラフィックスでは,ペンの代わりとなるカメを動かすことで,キャンバス上に直線や矩形などの図形を描く仕組みとなっており,プログラミング学習に最適とされています. タートル・グラフィックスの歴史は古く,1960年代にプログラミング言語LOGOに導入されたことから始まり,現在ではJavaScriptやPythonなど主要なプログラミング言語で利用可能になっています. JavaScriptでタートル・グラフィックスを利用するための追加機能(ライブラリ)がjs-turtleです. ここでは,Webページを記述するために用いられるJavaScriptで,タートル・グラフィックスに挑戦しましょう.

Image from Gyazo

プログラミング環境

CodePenというオンラインのプログラミング環境を利用します. 下図のように,CodePenの画面に表示されている JS というボタンをクリックしてみましょう. コード(プログラム)を記述するためのエディタが表示されます. このエディタに記述したコードに合わせて,右側のキャンバスにプレビュー(プログラムの結果)が表示されます. もう一度 JS をクリックすると,エディタが非表示になり,キャンバスが大きく表示されるので,適宜切り替えて確認しましょう.

Image from Gyazo

See the Pen js-turtleで図形を描こう! by Naoto Mukai (@nmukai) on CodePen.

座標系の確認

タートル・グラフィックスの座標系を確認しましょう. キャンバスの中央にある緑色の矢印がカメです. このカメの座標は$(x,y) = (0, 0)$です. カメには向きがあり,最初は上方向 $\theta=0$ を向いています. キャンバスの右方向にXは増加し,上方向にYは増加します.

Image from Gyazo

具体例を考えてみましょう. 下記の4種類の座標はどこにあるでしょうか.

Image from Gyazo

タートル・グラフィックスの基本

直進

カメを進行方向に直進させるにはforward(進む距離)と記述します. 括弧の中には 進む距離 を指定します.

forward(200) // 200だけ直進

Image from Gyazo

回転

カメの進行方向を変えるにはright(回転する角度),または,left(回転する角度)と記述します. 括弧の中には 回転する角度 を度数法($0〜360$)で指定します.

forward(200)
right(90) // 右に90度回転
forward(200)

Image from Gyazo

ペンの色

カメが描く色を変えるにはcolor(ペンの色)と記述します. 括弧の中に,赤色なら"red",青色なら"blue",緑色なら"green"と指定します. 利用可能な色はjs-turtleのサイトを確認しましょう.

forward(200)
right(90)
forward(200)
color("blue") // ペンの色を青色に変更
right(90)
forward(400)

Image from Gyazo

ペンの太さ

カメが描く直線の太さを変えるにはwidth(ペンの太さ)と記述します. 括弧の中には ペンの太さ を指定します.

forward(200)
right(90)
forward(200)
color("blue")
right(90)
forward(400)
width(10) // ペンの太さを10に変更
right(90)
forward(400)

Image from Gyazo

ペンの上げ下げ

直線を描かずにカメを動かすには,ペンを上げ下げします. penup()でペンを上げれば,カメを移動させても直線は描かれません. pendown()でペンを下ろせば,元の様にカメの移動に合わせて直線が描かれます.

forward(200)
right(90)
forward(200)
color("blue")
right(90)
forward(400)
width(10)
right(90)
forward(400)
penup() // ペンを上げる
right(90)
forward(200)
pendown() // ペンを下ろす
forward(200)

Image from Gyazo

図形を描こう!

正方形

正方形を描いてみましょう. 最初にペンを上げた状態で,スタート地点の座標$(0, 200)$に移動します. 正方形の一辺の長さは$400$,内角は$90$度です.

// 座標(0, 200)に移動
penup()
forward(200)
pendown()

// 正方形を描く
right(90)
forward(200)
right(90)
forward(400)
right(90)
forward(400)
right(90)
forward(400)
right(90)
forward(200)

Image from Gyazo

正五角形

正五角形を描いてみましょう. 最初にペンを上げた状態で,スタート地点の座標$(0, 200)$に移動します. 正五角形の一辺の長さは$250$,内角は$108$度です.

// 座標(0, 200)に移動
penup()
forward(200)
pendown()

// 正五角形を描く
right(126)
forward(250)
right(72)
forward(250)
right(72)
forward(250)
right(72)
forward(250)
right(72)
forward(250)

Image from Gyazo

星形

星形を描いてみましょう. 最初にペンを上げた状態で,スタート地点の座標$(0, 200)$に移動します. 星形の一辺の長さは$400$,内角は$36$度です.

// 座標(0, 200)に移動
penup()
forward(200)
pendown()

// 星形を描く
right(162)
forward(400)
right(144)
forward(400)
right(144)
forward(400)
right(144)
forward(400)
right(144)
forward(400)

Image from Gyazo

最後に

プログラミングは現代の魔法のツールです. ウェブアプリやゲームなど,パソコンさえあれば様々なソフトウェアを開発することができます. この模擬授業で利用したCodePenなど,高価な開発用ソフトウェアをインストールすることなく,ブラウザだけで開発可能な環境も充実してきました. 大学の授業では,ScratchGoogle Colabなども活用しています. 自分で開発したソフトウェアに対して,「楽しい」「便利」などの声を掛けてもらえるのは,最高の喜びです! 本学部でプログラミングを一緒に楽しく学びましょう!

愛知県名古屋市にある椙山女学園大学 文化情報学部 向研究室の公式サイトです. 専門は情報科学であり,人工知能やデータベースなどの技術要素を指導しています. この公式サイトでは,授業で使用している教材を公開すると共に, ベールに包まれた女子大教員のミステリアスな日常を4コマ漫画でお伝えしていきます. サイトに関するご意見やご質問はFacebookまたはTwitterでお問い合わせください.