前回までの作業ができてないひとは,まずは以下を確認して準備しておいてください.自前のPCを用意できない方については,Teams上で案内し(て)ます.
提出期限: 0508金16:50
提出期限: 0508金18:30
次のことをやりなさい.
kame.setColor(Color.CHOCOLATE);
提出期限: 0514木23:59
★ 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行目にクラス変数に値を代入する文を書き,動作を確認しなさい.ただし,この行以降はかめ全員のペンの色が虹色になるようにすること.
19行目にコメントとして自分の名前と学籍番号を記し,できたプログラムのソースファイルをこの科目の Moodle コース上の当該の場所へ提出しなさい.
期限: 0514木23:59.これはおまけ課題です.やらなくても減点になりません.やったら加点かも
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 の少し内側の領域だけに描画するように工夫するとよい.