check 次の文の空欄に入る言葉を答えなさい(白字で書いてあるので,当該箇所をマウスカーソル使って選択すると...).行番号は,講義資料に記載のものに合わせてある(行を追加するとずれるので注意).
上記に示すソースプログラムに関する次の問題に解答しなさい. 実際にプログラムを作成&実行して修正を加えながら解答すること.解答はノートに書いたりソース中にコメントをつけたりする形で残しておくこと.
Color c = new Color(1.0, 1.0, 0.0, 1.0);と変更したとする.この時にプログラムを正しく動作させるために,2行目に文を追加したい.どのような文を追加したらよいか答えなさい.
★ HogeTurtleクラスのAPI仕様
HogeTurtleは,Turtleを拡張したクラス(「拡張したクラス」とはどういう意味かは次回学びます).
- void draw()
- 現在のかめの位置でやつの絵を描く.やる気に応じて絵の描き方が少し変化する.
- static void setBonusAll(int bonus)
- 全てのかめのやる気を bonus だけアップさせる.
- int yaruki
- かめのやる気.0以下ならやる気なし,1なら普通,2以上なら数が大きいほどやる気あり.初期値は1.
- static boolean rainbowAll
- true ならペンを虹色に変化させる.false なら従来どおり.初期値は false.
G04HogeTurtle.java の 12, 15, 16行目にそれぞれ m1, m2, m3 のインスタンスメソッドを呼び出す文を書き,動作を確認しなさい.ただし,ここで呼ぶインスタンスメソッドは上記の HogeTurtle クラスのAPI仕様に示されたものとする.
G04HogeTurtle.java の10,11行目にそれぞれ m2, m3 のインスタンス変数に値を代入する文を書き,動作を確認しなさい.ただし,m2 のやる気が 2 に,m3 のやる気が 0 になるようにすること.
G04HogeTurtle.java の13行目にクラスメソッドを呼び出す文を書き,動作を確認しなさい.ただし,かめ全員のやる気が +3 されるようにすること.
G04HogeTurtle.java の14行目にクラス変数に値を代入する文を書き,動作を確認しなさい.ただし,かめ全員のペンの色が虹色になるようにすること.
import tg.*; public class G04Graph{ // クラス変数の宣言と初期化 public static final int WIDTH = 500; public static final int HEIGHT = 500; public static double XMAX = 1.0; public static double YMAX = 1.0; // 描画する関数 public static double f(double x){ return x*x; } // ピクセル単位のx座標の値(左端が0,右端がWIDTH)を // グラフのx座標の値(真ん中が0,左端が -XMAX,右端がXMAX)に変換 public static double toGraphX(int pixelX){ return XMAX * (double)(pixelX - WIDTH/2) / (WIDTH/2); } // グラフのy座標の値(真ん中が0,上端が YMAX,下端が-YMAX)を // ピクセル単位のy座標の値(上端が0,下端がHEIGHT)に変換 public static int toPixelY(double graphY){ return (int)(-graphY / YMAX * (HEIGHT/2)) + HEIGHT/2; } // mainメソッド public static void main(String[] args){ TurtleFrame f = new TurtleFrame(WIDTH, HEIGHT); Turtle m = new Turtle(); f.add(m); m.speed(5); // X軸を描く m.up(); m.moveTo(0, HEIGHT/2); m.down(); m.moveTo(WIDTH - 1, HEIGHT/2); // Y軸を描く m.up(); m.moveTo(WIDTH/2, 0); m.down(); m.moveTo(WIDTH/2, HEIGHT - 1); // 曲線を描く for(int px = 0; px <= WIDTH; px += 5){ double x = /* (a) px に対応するグラフの x 座標の値を求める */; int py = /* (b) グラフの y 座標の値を求め,それをピクセル単位の y 座標の値に変換する */; if(px == 0){ m.up(); m.moveTo(px, py); m.down(); }else{ m.moveTo(px, py); } } } }
HogeTurtle.rainbowAll = true;の追加以外にはいじらないこと.
少しFrameからはみ出すせいでかめは本当はスクロールバーに隠れるのだが,わかりやすくするためにウィンドウ幅を広げてキャプチャしてある.本当は,Frame の少し内側の領域だけに描画するように工夫するとよい.