#author("2020-06-12T00:09:26+09:00","default:takataka","takataka")
*グラフィックス基礎及び実習 2020年度 第10回 [#e9701092]
 
#contents
 
&color(#ff0000){''工事中''}; 


**ex10 課題A [#kadaiA]

//&color(Red){''工事中''};

''提出期限: 0612金16:15''

この課題の情報は Teams 上で提示しています.

**ex10 課題B [#kadaiB]

//&color(Red){''工事中''};

''提出期限: 0612金16:50''


**ex09 課題C [#kadaiC]

//&color(Red){''工事中''};

''提出期限: 0611木23:59''

教科書p.74の練習問題6.18をやりなさい(PTurtle).
ただし,次の手順でやること.

+ 次のような仕様の PTurtle クラスを作る
-- PTurtle は Turtle のサブクラス
-- このクラスには,次の仕様のインスタンスメソッド draw と main メソッドのみ定義する.
>
:void draw(double[] path, double x, double y) | 折れ線 path を,折れ線の座標の原点が (x, y) に平行移動したものを描く.詳しくは教科書の該当箇所の説明(脚注40), 41)も)参照.
<
-- main メソッドの中身は次の通りとする.''コメントのつけ外し以外は,以下の内容を変更してはいけない.''
#pre{{
	// 例1
	double[] graph = { 50, 300, 100, 100, 300, 200, 350, 300 };
	// 例2 奇数個でも大丈夫?
	//double[] graph = { 50, 300, 100, 100, 300, 200, 350 };
	// 例3 長さ2のときは?
	//double[] graph = { 50, 300 };
	// 例4 長さ1のときは?
	//double[] graph = { 50 };
	// 例5 長さ0のときは?
	//double[] graph = { };
	// 例6 やつは?
	/*
	double[] graph = {
	    200, 175, 200, 100, 140, 100, 140, 120, 160, 120,
	    160, 100, 100, 100, 100, 175, 125, 175, 125, 150,
	    175, 150, 175, 175, 275, 175, 275, 150, 325, 150,
	    325, 175, 350, 175, 350, 100, 290, 100, 290, 115,
	    310, 115, 310, 100, 250, 100, 250, 175, 250, 100,
	    350, 100, 350, 300, 325, 300, 325, 275,  75, 275,
	    75, 250, 350, 250,  350, 300
	};
	*/

	TurtleFrame f = new TurtleFrame(800, 400);
	f.addMesh();
	PTurtle m = new PTurtle();
	f.add(m);
	m.speed(1);
	m.draw(graph, 0, 0);
	m.draw(graph, 400, 0);
}}
+ 例1, 例2が正しく動作するようにしよう.
-- draw を2回呼んでいるが,その間の移動時に線を引いてしまわないよう気をつけよう.
-- 配列 path の長さが奇数のときも正しく動作させるには → 配列の最後の値を無視するようにすればよい.ヒント(白字で書いてます):いろんなやり方がありますが,path の長さが奇数のとき,例えば 7 のとき,&color(white){ path.length / 2 }; の値は...で, &color(white){i = 1, 2 のとき 2*i と 2*i+1 は}; ...
+ 例3, 4, 5 が正しく動作するようにしよう.path の長さが2未満のときは,draw は何もせず return するようにすればよい.
+ 例6 で動作確認しよう.
+ 完成したプログラムのソースファイルをこの科目の Moodle コース上の当該の場所へ提出すること.
-- 上記ファイルは締切後に半自動的に処理します.コンパイルエラーになる,ファイル名が違う,といったことのないように注意すること.''ファイル名の間違い(大文字小文字も)に注意''.

**ex09 課題S(omake)  [#kadaiS]

//&color(#ff0000){''工事中''}; 

期限: 0612金23:59.これはおまけ課題です.やらなくても減点になりません.やったら加点かも



コマンドライン引数として2つの数を指定すると,下図のような図形を描くプログラムを作りなさい.
クラス名は G08Rainbow とし,次の要件を満たすようにすること.

+三角形毎に色を変える
+コマンドライン引数で三角形の数と斜辺の長さを指定する

1.については,Colorの配列を用いて実現すること(どんな色を使うかは自分で決めればよいが,色数は以下の例以上にすること).
実行結果の図が示すように,色を順番に使って使い果たしたらまた最初の色から順に使うようにすること.

2.については,次のような動作を実現しよう.
#pre{{
$ java G08Rainbow 6 50   ← 引数を二つ指定すると図形を描く

$ java G08Rainbow     ← 引数を指定しないと以下のメッセージを出して終了
使い方: java G08Rainbow r d
r: 三角形の数, d: 斜辺の長さ

$ java G08Rainbow 6 50 hoge  ← 余分な引数を指定した場合も同様
使い方: java G08Rainbow r d
r: 三角形の数, d: 斜辺の長さ

$ java G08Rainbow 6 hoge  ← 引数が正しい形式でない場合も同様
使い方: java G08Rainbow r d
r: 三角形の数, d: 斜辺の長さ
}}

引数が正しい形式でない場合のチェックを行うには,Integer.parseInt() メソッドの例外処理を行えばよい.
教科書8.3節(p.93-)を参考にしよう.



&ref(https://www-tlab.math.ryukoku.ac.jp/~takataka/course/Graphics/G06Rainbow-r06.png,nolink);
&ref(https://www-tlab.math.ryukoku.ac.jp/~takataka/course/Graphics/G06Rainbow-r12.png,nolink);

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS