[ プログラミング演習(Ruby) >  プログラミング演習(Ruby) 課題(2025) >  [課題01] タートルグラフィクスによる自由制作 ]

[課題01] タートルグラフィクスによる自由制作

事前準備

課題に取り組む前に「仮想型端末(VDI)」で次の手続きを行ってください(仮想型端末の上で実行することを想定しています). 今後の課題のために環境を更新します.

  1. PandAから次のファイルを「Home」にダウンロードしてください.
    リソース > 01_設定ファイル > update_20251015.sh
    

  2. 端末(Terminal)で次のコマンドを実行してください.
      $ bash  update_20251015.sh ⏎
    
    なお「$」は端末画面に最初から出ている「プロンプト」を表しています.これは入力しません.
    このコマンドを実行すると,次のように表示されます(表示されるメッセージの一部のみ掲載しています).
    
    + cd /home/xxxxxxxx/lib/ruby/gtr
    :
    :
    turtle.rb           100%[===================>]  22.82K  --.-KB/s    in 0.02s
    2025-10-14 19:34:15 (950 KB/s) - ‘turtle.rb’ saved [23363/23363]
    :
    :
    + /bin/rm -f update_20251015.sh
    
    
    最後に上のように表示されていれば設定の更新は完了です. 更新が完了した時点でダウンロードしたファイル(update_20251015.sh)は削除されます.

[オプション] ページのスーパーリロード(強制的な再読込)

授業ポータルサイトのスタイルに(若干)手を加えたため, (これまで授業ポータルサイトを利用していた場合は)このページをスーパーリロード(強制的に再読込)してみてください. 期待通りであれば,見え方が(若干)変わるはずです.

Chrome(Linux版)では次の操作でスーパーリロードできます([Ctrl]を押しておいてから,[F5]を一瞬押す.[F5]を離すときに[Ctrl]も同時に離す).

  [Ctrl] + [F5] 

課題

次に示すプログラムのテンプレート(雛型)を使って, タートルグラフィクスで絵を描くプログラムを作成して,そのプログラムを提出してください. 描く絵は自由に決めてください.

課題に取りかかる前に「タートルグラフィクス」のページをよく読んでください.

目次

  1. プログラムテンプレート
  2. 関連資料
  3. プログラミングに関する注意
  4. Tips(hint)

プログラムテンプレート

次に示すテンプレート(雛型)をダウンロードして利用してください.

このテンプレートには亀の動作以外は全て書いてあります. 亀の動作の記述を追加してプログラムを完成させてください. 亀の動作は次に示すように「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にしてください.

関連資料

サンプルプログラム

プログラミングに関する注意

演習では次のことに注意してください.

プログラムにコメントを書こう

すでに説明したとおり,提出するプログラムには適宜コメントを入れるようにしてください. コメントとはプログラムの理解を助けるための注釈です. 詳しくは次の資料を見てください.

Tips(hint)

以下,課題に取り組むにあたって,知っておくとよさそうなtips(hint)を示します.

コマンドの「履歴」を利用する

Terminal(端末)でカーソルキーの[↑]を押すと前に入力したコマンドがでてきます. コマンドが表示されたら,[Enter]で実行できます. 一度入力したコマンドを何度も入力する必要はありません.

$   [↑]
なお[↑]を押し過ぎたら[↓]で戻せます. またコマンドは編集(変更)してから実行することもできます.

プログラムを切り貼りする(Emacs)

プログラムで似たような処理をいくつも書く場合に,すべて手で入力する必要はありません. コピーしてから必要に応じて書き換えた方が楽です. 以下にEmacsでコピーと貼り付けを行う方法を示します.

まずマウス(3ボタン)を使えば,次のようにコピーと貼り付けができます.

  1. コピーしたい部分の最初から最後までをマウスの左ボタンを押しながらドラッグしてなぞる.
  2. 貼りつけたい場所で,マウスの中ボタンを押す.

次のようにメニューを使う方法もあります.
  1. コピーしたい範囲をドラッグして選択しておく
  2. メニューの「Edit」から「Copy」でデータをコピーする
  3. メニューの「Edit」から「Paste」で貼り付ける

また次のようにキーボード操作を使う方法もあります.
[Ctrl]+[k] カーソルの位置から行末までを切り取る
[Ctrl]+[y] 切り取ったテキストを貼り付ける

連続して[Ctrl]+[k]を入力すれば,一連の行を切り取ることができます. 連続して切り取った行は[Ctrl]+[y]で一度に貼り付けできます.
キーの組み合わせが独特ですが,このような「コマンド入力」を習得すると, キーボードから手を離す必要がなくなります.

数学関数,定数

数学で使われる関数や定数はRubyでは「Math.関数名(パラメタ)」,「Math::定数名」のように記述して使います.

関数・定数Rubyでの記法
sin xMath.sin(x)
cos xMath.cos(x)
tan xMath.tan(x)
xの平方根Math.sqrt(x)
πMath::PI

三角関数のパラメタはラジアンで与えます. 円周率の定義「Math::PI」の「PI」は大文字のアルファベットです.

タートルグラフィクスでの数学関数など

利便性のため,「タートルグラフィクス」の動作の記述においては,次のようにして,「度」(degree)をパラメタに指定する三角関数(sin,cos,tan)が利用できるようになっています.

class Turtle
  def draw
    # キャンバスのx軸正の方向から左回りで45度の方向へ100進む
    move(100*cos(45),100*sin(45)) 
  end
end

平方根は「Math」を省略して利用できます.

class Turtle
  def draw
    # 100√2進む(Rubyでの標準的な書き方)
    forward(100*Math.sqrt(2)) 
    turn(90)

    # 100√2進む(こう書いてもOK)
    forward(100*sqrt(2)) 
  end
end

また次も用意しています.

これはRubyで標準で使える「Math.hypot(x,y)」と同じ関数です.

四則演算に関する注意

日本語の入力

仮想型端末のLinuxで日本語を入力するには次のようにします.

  1. 予め「入力ソース」を「日本語 (Mozc)」に設定します
    入力ソース設定 画面右上の『ja▼』からメニューを開いて選択


  2. 英数字/日本語入力を切り替えるには次のようにします.
    「英数字/日本語」の入力切替
    [半角/全角]を押す(※)
    画面右上の『A▼』からメニューの「入力モード」で選択
    →「ひらがな」(日本語)/「直接入力」(英数字)
    ※ Windowsの場合(Macの場合は[かな]/[英数]を試してみてください)

上の方法で日本語入力ができない場合,Emacsで次のようにしてみてください.

「英数字/日本語」の入力切替(Emacs)
[Ctrl]+[\]

Ctrlキーを押した状態で,バックスラッシュ(あるいは¥)を(一瞬)押します. なおこの「英数字/日本語」切替方法が使えるのはEmacsのみです.

さらにVDIのメニューボックスからクリップボードを開いて利用する方法もあります.

[ プログラミング演習(Ruby) >  プログラミング演習(Ruby) 課題(2025) >  [課題01] タートルグラフィクスによる自由制作 ]