2010年度理工学部情報科学科オープンラボ

JavaによるCGプログラミング
http://ist.ksc.kwansei.ac.jp/~kitamura/lecture/OpenLab/index.htm

北村泰彦
ykitamura@kwansei.ac.jp

1. コンピュータ利用の手順

2. コンピュータとプログラミング

あなたはどの程度コンピュータを使えるか?

プログラミングはコンピュータを学ぶ上での基礎中の基礎

3. プログラミングの手順

  1. プログラムを書く.Terapadエディタでを使ってJavaプログラムファイルを作る.拡張子はjava.
  2. プログラムをコンパイル(コンピュータで実行可能な形式に変換)する.Javaファイルをコンパイルして,クラスファイルを作る.Cygwinで"javac ファイル名"
  3. プログラムを実行する.クラスファイルを実行する.Cygwinで"java クラス名"

例(クラス名はHello):

KITAMURA-CF-W4:kitamura:~/java$ cat Hello.java
class Hello
{
        public static void main( String [] args )
        {
                System.out.println("こんにちは.Java!");
        }
}
KITAMURA-CF-W4:kitamura:~/java$ javac Hello.java
KITAMURA-CF-W4:kitamura:~/java$ java Hello
こんにちは.Java!

3.1 プログラムを書く

プログラムを編集するためのエディタと呼ばれるソフトウェア(Terapad)を用いて,プログラムを作る.

  1. エディタを起動する.TeraPadのアイコンをダブルクリック.(あるいは「スタート」→「プログラム」→「4.Tools」→「TeraPad」)
  2. プログラムを入力する.インターネットエクスプローラからコピー&ペーストする場合は,コピーしたい部分をドラグして指定し,右クリックで「コピー」.TeraPad上で右クリックして,「貼り付け」.
  3. ファイルを保存する.「ファイル」→「名前を付けて保存」.ファイルの種類は「Javaファイル」.ファイル名はクラスの名前(例:Hello)にする.

3.2 プログラムをコンパイル・実行する

プログラム開発するためのソフトウェア(Cygwin)を用いて,プログラムをコンパイル・実行する.

  1. Cygwinを起動する.Cygwinのアイコンをダブルクリック.(あるいは「スタート」→「プログラム」→「4.Tools」→「Cygwin」)
  2. フォルダの中身を確認する."ls"
  3. Javaファイルの中身を確認する."cat ファイル名".
  4. Javaファイルをコンパイルする."javac ファイル名".エラーが出たらエディタを使って修正する.
  5. Javaクラスファイルを実行する."java クラス名".

4. Javaによるオブジェクト指向プログラミング

public class T21 { // T21という名前のクラスを定義する.       
   public static void main(String[] args){ // クラスの実行開始部分を指定する.
      TurtleFrame f =  new TurtleFrame();  // タートルを表示するウィンドウTurtleFrameを生成して,その名前をfにする.
      Turtle m1 = new Turtle();  // タートルを生成し,その名前をm1にする.
      Turtle m2 = new Turtle();  // もう一つタートルを生成し,その名前をm2にする.
      f.add(m1);                 // タートルm1をウィンドウfの中に表示する.
      f.add(m2);                 // タートルm2をウィンドウfの中に表示する.
      m1.fd(100);                // m1に,前に100 進むように命令する.
      m1.rt(90);                 // m1に,右に90 度回るように命令する.
      m1.fd(150);                // m1に,前に 150 進むように命令する.
      m2.rt(90);                 // m2に,右に 90 度回るように命令する.
      m2.fd(100);                // m2に,前に 150 進むように命令する.
   }
}   
import java.awt.Color;

public class T22 {
   public static void main(String[] args){   
      int x = 300, y = 200, d = 100;           //  整数(int)型の変数を用意する
      TurtleFrame f = new TurtleFrame(700,500);//引数のあるコンストラクタ呼出し
      Turtle m1 = new Turtle(x, y, 180);   
      Turtle m2 = new Turtle(x+d, y+d, 0);    
      m2.setColor(Color.red);                         // m1 の色を赤色に指定
      f.add(m1);                                 
      f.add(m2);                                
      m1.fd(d);                                  
      m2.fd(d);                                 
      m1.lt(90);                                 
      m2.lt(90);                                
      d = d / 2;   //d の値を d/2 に変更        
      m1.fd(d);                                  
      m2.fd(d);                                 
      m2.moveTo(m1);                             
   }
}
import java.awt.Color;

public class T23 {
   public static void main(String[] args){
      int d = 100, x, y, a;
      TurtleFrame f = new TurtleFrame(); 
      Turtle m1 = new Turtle(200,300,0);  
      f.add(m1);                       
      m1.fd(d);                        
      x = m1.getX();                // m のX 座標のとり出し
      y = m1.getY();                // m のY 座標のとり出し
      a = m1.getAngle() - 45;       // m の角度のとり出し
      Turtle m2 = new Turtle(x, y, a); //m1 の生成
      f.add(m2);              
      m2.fd(d);
      Turtle m3 = m1.clone();       //m2 の生成
      f.add(m3);                
      m1.rt(45);                        
      m1.fd(d);
      m3.tcolor = Color.blue; // m3 の亀の色を青色に変える
      m3.tscale = m3.tscale * 4;  // m3 の亀を現在の 4 倍の大きさにする
      m3.fd(d);               
   }
}
TurtleFrameクラス   
 コンストラクタ  
TurtleFrame()  TurtleFrameを,デフォルトの大きさ(400×400)で生成する.
TurtleFrame(int width, int height)  TurtleFrameを,width×heightの大きさで生成する.
 メソッド  
 void add(Turtle t)  タートルtをこのウィンドウに追加する.
 void remove(Turtle t)  タートルtをこのウィンドウから削除する.
 void clear()  今まで描かれたすべての線を消す.
 void addMesh()  方眼紙のような桝目を表示する.

Turtleクラス   
 コンストラクタ  
Turtle()  (200,200)という座標に0度の角度で,タートルを生成する.
Turtle(int x, int y, int angle)  (x,y)という座標にangle度の角度で,タートルを生成する.
 メソッド  
 void fd(int n) nだけ前に進む.
 void bk(int n) nだけ後ろに進む.
 void rt(int n) n度だけ右に向きを変える.
 void lt(int n) n度だけ左に向きを変える.
 void setColor(java.awt.Color nc) ペンの色をncに変更する.
 int moveTo(int x, int y) (x,y)という座標の方向を向き,(x,y)まで進む.動いた距離を返す.
 int moveTo(Turtle t) タートルtの方向を向き,tと同じ座標まで進む.動いた距離を返す.
 int moveTo(int x, int y, int angle) (x,y)という座標の方向を向き,(x,y)まで進んだ後,angleの方向を向く.動いた距離を返す.
 int getX() 現在の座標のX成分を返す. 
 int getY() 現在の座標のY成分を返す. 
 int getAngle() 現在の角度を返す. 
 Turtle clone()  自分と同じ状態のタートルを生成して返す.
 void up() ペンを上げる. 
 void down() ペンを下ろす.ペンを下ろした状態で進むと,その軌跡が画面に線として描画される. 
 boolean isDown() ペンをあげた状態ならflase,下げた状態ならtrueを返す. 
 void speed(int x) タートルの動きの速さをxに設定する.x=20が初期値である.数字が小さいほど速い. 
 static void speedAll(int x) タートル全体の速さを1〜3で指定する.1が高速,3が低速. 
 フィールド  
 java.awt.Color tcolor  タートルの色.初期値は緑.
 double tscale タートルの大きさを表す小数値.初期値は0.4 
 static boolean withTurtleAll  もし,falseならすべてのタートルが瞬時に描画を行う.trueなら通常の描画を行う.初期値はtrue.



タートルグラフィックスの座標系

5.課題

[R1] タートルグラフィックスを用いて3角形を描画しなさい.

[R2] タートルグラフィックスを用いて自分の名前(ローマ字, ひらがな,カタカナ,漢字のいずれでも可)を描画しなさい.

[R3] (オプション)タートルグラフィックスを用いてアニメのキャラクタを描画しなさい.

付録A.参考資料

A.1 Javaのインストール

A.2 CD-Rへのコピー

  1. ブランクCD-Rをドライブに挿入する.
  2. 「書き込み可能なCDフォルダーを開く」を選択
  3. 必要なファイルをドラッグアンドドロップする.
  4. 「これらのファイルをCDに書き込む」ボタンを押す.
  5. CD-Rを取り出す.

参考文献


2010.7.27
ykitamura@kwansei.ac.jp