Top / Graphics / 2016 / ex06

グラフィックス基礎及び実習 2016年度 第6回 [edit]

課題A(self) 完成目標: 今回の実習終了まで [edit]

講義資料のQ5をやりなさい.

課題B(self) 完成目標: 今回の実習終了まで [edit]

教科書p.56の練習問題6.1および6.2を参考に,次のような図形を描くプログラムを作ろう(G06Tri1 および G06Tri2). ただし,次のように段階的に作成すること.

G06Tri-n06.png G06Tri-n11.png G06Tri-n12.png

問1 [edit]

教科書p.56の練習問題6.1の後半の問題を解いてプログラムを書きなさい.ただし,

  • 教科書では Tri2.java というソースファイル名が指定されているが,ここでは G06Tri1.java とすること
  • 直角三角形の向きはp.56の傍注の図と同じにすること
  • moveTo() メソッドは使ってはならない

問2 [edit]

問1ができたら,上図のような図形を描くプログラムを作ろう( G06Tri2 ).ただし,

  • いくつの直角三角形を描くかをint型変数 n で指定するように作る.三角形の形が教科書とは異なることに注意.
    • n は 5以上とする.上図は,n = 6, 11, 12 の例である.
    • n が 360 の約数でない場合,誤差が累積して上図のように最初と最後の三角形の間に隙間ができるかもしれないが,この課題ではそれでも構わない
  • 上図の例のように,枠の大きさを小さめにすること. マウスでウィンドウをドラッグして小さくするのは不可 (^^;

check

  • 以下の空白に入るものを答えなさい(白字で正解が書いてある)

    課題の指示にあるように枠の大きさを小さくするためには,TurtleFrameクラスの2種類あるコンストラクタのうち,引数をとる方のものを使って TurtleFrame クラスのインスタンスを生成すればよい.

  • 次の文(a)-(d)は,Turtleクラスのインスタンスであるかめさん m を,\( 100\cos(60°) \) だけ前進させようとしたものである. この中で意図した動作をしないものを選びなさい.ただし,変数 d と th は int 型で,それぞれ 100 と 60 が代入されているとする.
(a)   m.fd( (int)( d * Math.cos( th * Math.PI / 180 ) ) );
(b)   m.fd( (int)( d * Math.cos( Math.toRadians( th ) ) );
(c)   m.fd(  d * Math.cos( th * Math.PI / 180 ) );
(d)   m.fd( d * (int)Math.cos( Math.toRadians( th ) ) );

課題C(TA) 締切: 次回の実習開始直後 [edit]

G06Pascal-tex.png

行数をint型変数 n で指定するとこのような数表を出力するプログラムをつくろう( G06Pascal ). ただし,

  • 以下のプログラムの7行目から15行目までに当てはまる部分を考えること.
    • 行数は増減して構わないが,記されている部分を変更してはならない
  • 繰り返しのプログラミングの練習として,次の制約条件のもとで作成すること
    • for文やwhile文のような繰り返しは使ってよいが,if文やswitch文のような条件分岐は使ってはならない.

G06Pascal.png

上記のプログラムの空白部分を埋めて実行すると,次の出力が得られればよい. nを1以上の整数としてある程度大きな数まで(例えば n = 10)問題なく動くようにすること.

1 
1 1 
1 2 1 
1 3 3 1 
1 4 6 4 1 

(おまけ)このプログラムの結果を使って \( (a+b)^{10} \) を展開しよう.

課題S(おまけ) [edit]

コマンドライン引数として2つの数を指定すると,下図のような図形を描くプログラムを作りなさい. クラス名は G06Rainbow とすること. これは,教科書p.56の練習問題6.2のP62を元に,次の機能を追加したものになっている.

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

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

2.については,次のような動作を実現しよう.

$ java G06Rainbow 6 50   ← 引数を二つ指定すると図形を描く

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

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

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

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

G06Rainbow-r06.png G06Rainbow-r12.png

ひとりごと: Graphics/2016/ex03#kadaiCGraphics/2016/ex03#kadaiS を改造して,色の配列の要素をランダムにまたは順に選択することで線の色を切り替えながら描くようなプログラムを作るのも楽しいかもね.


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-05-24 (火) 16:48:20 (1066d)