Turtle Graphics

目的

  1. タートルグラフィックスを通してプログラミングの基本となる制御構造(順次実行、分岐実行、繰り返し実行)を学ぶ
  2. Java言語にタートルグラフィックスを取り入れることで、学習初期段階のJava言語プログラミング課題を分かりやすくする。

準備

  1. まずWindowsへログオン。パスワードの入力間違いに注意
  2. Webブラウザ(Internet Explorer)を立ち上げよう
  3. この講義のページを開く( http://www.edu.tuis.ac.jp/~mackin/basic/turtle.html )
  4. USBメモリを使用する場合、USBメモリをPCに挿入しよう
  5. コマンドプロンプトを起動 (スタート -> cmd [Enter])

作業フォルダ準備

  1. (コマンドプロンプトで)作業フォルダの移動
    USBメモリ利用の場合は「g:」、USBメモリを利用しない場合は「z:」(z:が存在しない場合はd:)

    g:

コンパイルと実行

まず、説明の前に本日の題材を実際動かしてみよう。
  1. BasicGraphicsライブラリを保存

    以下のリンクを右クリックして、「対象をファイルに保存」を選択
    (保存場所は、USBメモリを利用の場合は「g:\」、利用しない場合は「z:\」)
    グラフィックライブラリ basic.jar (ファイルの拡張子が「.jar」であることを確認すること)

  2. (コマンドプロンプトから) メモ帳を起動してソースコード(プログラムの元)作成準備

    notepad Turtle.java

  3. ソースコード(プログラムの元となるファイル)をメモ帳にコピー
    import jp.ac.tuis.basic.*;
    public class Turtle{
        public static void main(String[] args){
            BasicGraphics g = new BasicGraphics();
            g.turtle();
            g.pendown();
            g.forward(100);
            g.right(90);
            g.forward(100);
        }
    }

  4. メモ帳のソースコード(Turtle.java)を保存 (Ctrl+S)
  5. (コマンドプロンプトで)ファイルが正しく保存されているか確認しよう。

    dir
    Turtle.java basic.jar の二つのファイルが表示されたでしょうか。


  6. さあ、(コマンドプロンプトで) コンパイル。コンパイルとは、「作り上げる」という意味です。長いけど打ち間違えないように。

    javac -cp basic.jar;. Turtle.java

  7. ここでついに (コマンドプロンプトで) プログラムの実行

    java -cp basic.jar;. Turtle
    黒いウィンドウ (窓) が表示されたでしょうか。

  8. プログラムの終了は、表示された黒いウィンドウ (窓) の右上の×ボタンをクリック。
何が起きているの?

タートルグラフィックス

タートルグラフィックス(Turtle Graphics)とは、Seymour Papertにより発明された、Logo(1967)言語のベクターグラフィックス機能。現在もプログラミング教育に広く利用されている。
画面上のタートル(亀)を操作して線描画を行うことで、プログラミングを直観的に理解することを促す。
タートルグラフィックスは、タートルの現在の位置と進行方向に対して、向きを変える角度と進む距離を指定して亀を移動する。この時に、亀に括り付けられたペンが亀の通った跡に線を描くことで線描画を実現する。

今回のBasicGraphicsライブラリでは、次のタートルグラフィックス命令が利用できる。
public void turtle()
public void forward(double units)
public void back(double units)
public void right(double degrees)
public void left(double degrees)
public void setxy(int x, int y)
public int x()
public int y()
public void setheading(double heading)
public double heading()
public void pendown()
public void penup()
public void showturtle()
public void hideturtle()
public void color(byte foreground)
※色は8色(BLACK, BLUE, RED, MAGENTA, GREEN, CYAN, YELLOW, WHITE)
例) g.color(g.BLUE);

課題

先ほどのサンプルプログラムTurtle.javaを参考に、次の図形を描いてみよう。
  1. 正方形
  2. 正三角形
  3. 二等辺三角形 (長辺の長さを計算できるかな)
  4. 五芒星
  5. 五角形
  6. 十角形
  7. 六芒星
  8. 雷紋(四角い渦巻)
  9. 自由に描いてみよう

課題に挑戦

  1. メモ帳のソースコードを修正。
  2. ソースコードの保存。

    メモ帳のメニューバーから「ファイル(F)」→「上書き保存(S)」

  3. (コマンドプロンプトで) コンパイル。

    javac -cp basic.jar;. Turtle.java

  4. (コマンドプロンプトで) 実行。

    java -cp basic.jar;. Turtle

  5. うまくいったかな?何度でも挑戦しよう。
    (ソースコード修正 -> ソースコード保存 -> コンパイル -> 実行 を繰り返す)

まとめ

タートルグラフィックスの基本原理
  1. タートルの現在位置から角度と距離を指定した相対座標による描画
  2. ペンを用いた線描画
プログラミング言語(Java言語)の基本原理
  1. 人間の読めるソースコードを作成
  2. ソースコードをコンピュータが理解できるように翻訳(コンパイル)
  3. 翻訳(コンパイル)した結果をコンピュータで実行
  4. 順次実行、分岐実行、繰り返し実行を用いたプログラムの制御構造
最後に、USBメモリの停止と取出し、ログオフ/シャットダウンを忘れずに。

参考資料

Basic Graphicsについて
東京情報大学総合情報学科
マッキン ケネス(Ken Mackin)