課題
次に示すプログラムのテンプレート(雛型)を使って,
タートルグラフィクスで絵を描くプログラムを作成し,
そのプログラムを提出してください.
描く絵は自由です.いろいろ工夫してみてください.
課題に取りかかる前に「タートルグラフィクス」のページをよく読んでください.
目次
プログラムテンプレート
次に示すテンプレート(雛型)をダウンロードして利用してください.
このテンプレートには亀の動作以外は全て書いてあります. 亀の動作の記述を追加してプログラムを完成させてください. 亀の動作は次に示すように「def draw」の次の行から「end」の前の行までに順に記述します.
プログラムの他の部分は変更する必要はありません. キャンバスのサイズは変えてみてもよいでしょう.
class Turtle def draw ## ## ここに亀の動作を記述する ## (def draw...endの間に記述する) ## end end # キャンバスの幅と高さ WIDTH = 800 # 幅 = 800(変更可) HEIGHT = 600 # 高さ = 600(変更可)
ファイル名の決め方
テンプレート(gtr_template.rb)はダウンロードする際に名前を適宜変えて保存してください. ファイル名の文字は(いわゆる半角の)英数字のみとして,最後は「.rb」で終わるようにしてください(そうすればEmacsでファイルがRubyのプログラムであると自動判別されます). ファイル名を決めるにあたっては, ファイル名を見たときに何のプログラムなのかを思い出せるようにして, また今後同様にこの演習でプログラムを作っていくことも考慮するとよいでしょう.
ダウンロードの方法と保存先の指定
テンプレート(gtr_template.rb)をダウンロードするにはリンクを右クリックして「名前を付けてリンク先を保存...」を選びます. ダウンロード先はHomeにしてください.
関連資料
サンプルプログラム
- gtr_square.rb(正方形を描く)
- gtr_square_fill.rb(塗りつぶされた正方形を描く; fill,hoverの例)
- gtr_simple_star.rb(星形を描く)
- gtr_two_stars.rb(星形を二つ描く; hoverの例)
- gtr_sprout.rb(植物の芽を描く; circle,mark,backの例)
- gtr_simple_star_fill.rb(塗りつぶされた星形を描く)
- gtr_meta.rb(亀を描く)
プログラミングに関する注意
演習では次のことに注意してください.
- Emacs,Terminalの基本的な使い方については次のページを参照してください.
このページの「Tips(hint)」も参照してください.
- プログラムを変更したら必ず保存してください.
- タートルグラフィクスのプログラムは実行開始時にしか読み込まれません.
そこでプログラムを変更したときに,すでにプログラムを動かしていた(タートルグラフィクスの画面が出たままになっていた)のであれば,一旦終了してから再度実行してください.
- プログラムを実行してエラーがでたら「よくある質問」を参照してみてください.
もちろん分からないことがある場合には演習中に質問してください.
- プログラムには適宜「コメント」を入れてください(以下を参照のこと)
- プログラムを提出する際には「課題提出に関する注意」を必ず守るようにしてください.
プログラムにコメントを書こう
すでに説明したとおり,提出するプログラムには適宜コメントを入れるようにしてください. コメントとはプログラムの理解を助けるための注釈です. 詳しくは次の資料を見てください.
Tips(hint)
以下,課題に取り組むにあたって,知っておくとよさそうなtips(hint)を示します.
- コマンドの「履歴」を利用する
Terminal(端末)ででカーソルキーの[↑]を押すと前に入力したコマンドがでてきます. 一度入力したコマンドを何度も入力する必要はありません.
$ [↑]なお[↑]を押し過ぎたら[↓]で戻せます. - プログラムを切り貼りする(Emacs)
プログラムで似たような処理をいくつも書く場合に,すべて手で入力する必要はありません. コピーしてから必要に応じて書き換えた方が楽です. 次にEmacsでコピーと貼り付けを行う方法を示します.
まずマウス(3ボタン)を使えば,次のようにコピーと貼り付けができます.- コピーしたい部分の最初から最後までをマウスの左ボタンを押しながらドラッグしてなぞる.
- 貼りつけたい場所で,マウスの中ボタンを押す.
次のようにメニューを使う方法もあります.- コピーしたい範囲をドラッグして選択しておく
- メニューの「Edit」から「Copy」でデータをコピーする
- メニューの「Edit」から「Paste」で貼り付ける
また次のようにキーボード操作を使う方法もあります.
[Ctrl]+[k] カーソルの位置から行末までを切り取る [Ctrl]+[y] 切り取ったテキストを貼り付ける
キーの組み合わせが独特ですが,このような「コマンド入力」を習得すると, キーボードから手を離す必要がなくなります. - 数学関数,定数
数学で使われる関数や定数はRubyでは「Math.関数名(パラメタ)」,「Math::定数名」のように記述して使います.
関数・定数 Rubyでの記法 sin x Math.sin(x) cos x Math.cos(x) tan x Math.tan(x) xの平方根 Math.sqrt(x) ex Math.exp(x) log x Math.log(x) π Math::PI
三角関数のパラメタはラジアンで与えます. 円周率の定義「Math::PI」の「PI」は大文字のアルファベットです. - タートルグラフィクスでの三角関数
利便性のため,「タートルグラフィクス」の動作の記述においては,次のようにして,「度」(degree)をパラメタに指定する三角関数(sin,cos,tan)が利用できるようになっています.class Turtle def draw move(100*cos(45),100*sin(45)) # キャンバスのx軸正の方向から左回りで45度の方向へ100進む end end
Math.cos(x),Math.sin(x),Math.tan(x)のパラメタは弧度(radian)ですので注意して下さい. - 四則演算に関する注意
- 乗算: 演算子は「*」です.数学のように「*」を省略することはできません. 乗算では常に「*」を記述してください(括弧でくくっている場合も含みます).
- 除算: 演算子は「/」です.ただし「整数/整数」の値は「商」になりますので注意してください. たとえば,1/2=0となります.
- 演算の優先順位
数学と同じです.括弧で優先順位を明示できます. ただし計算式での括弧には常に( … )を使います. したがって,式によっては( … )で括られた内部に ( … )が現れることもあります. { … }や[ … ]は使いません. - 日本語の入力
仮想型端末のLinuxで日本語を入力するには次のようにします.- 予め「入力ソース」を「日本語 (Mozc)」に設定します
入力ソース設定 画面右上の『ja▼』からメニューを開いて選択
- 英数字/日本語入力を切り替えるには次のようにします.
「英数字/日本語」の入力切替
[半角/全角]を押す(※) 画面右上の『A▼』からメニューの「入力モード」で選択
→「ひらがな」(日本語)/「直接入力」(英数字)
上の方法で日本語入力ができない場合,Emacsで次のようにしてみてください.
「英数字/日本語」の入力切替(Emacs)
[Ctrl]+[\] - 予め「入力ソース」を「日本語 (Mozc)」に設定します