*グラフィックス基礎及び実習 2017年度 実習第3回 [#hc4b2b41]

//&color(red){工事中};

#contents
**注意とおしらせ [#ann]

- 実習のすすめ方 [[Graphics/2017/ex00]] 
- &color(#0000a0){この実習では,ls,cd,cpなどのUNIXのコマンドや,emacsというエディタを用います.これらの使い方を忘れた人は,次のページを参照しなさい:}; [[Docs/4UNIXBeginners]]
**課題A(self) 完成目標: 今回の実習終了時 [#kadaiA]

+ 講義資料の「★2.8 インスタンス変数」,「★3.2 クラス変数とクラス・メソッド」を読みなさい
+ 右のリンク先のPDFファイルを閲覧し,手書きの部分を講義資料に書き写しなさい.[[資料(学内アクセス限定)>Graphicsgakunai:scan2017-03-p3.pdf]]
+ 前回作成した T23.java を実際に改造して動作確認しなさい.(1) と (2) は,どちらか一方だけを追加した状態で動作確認した方がわかりやすいだろう.

&color(white,blue){check};
次の文の空欄に入る言葉を答えなさい(白字で書いてあるので,当該箇所をマウスカーソル使って選択すると...).
+ 18行目の tcolor と tscale はどちらも前に m2 が付いている.これは,m2 という変数が表す一匹のかめさんの情報を表す &color(white){インスタンス}; 変数である.
+ 17行目と18行目の間に追加した文では,&color(white){Turtle}; クラスの &color(white){  クラス  };変数に値を代入している.そのため,全てのかめさんの状態が変化している.
+ 13行目の fd は,m1 という変数が表す一匹のかめさんを前進させる.このように個々のインスタンスに作用するメソッドを &color(white){インスタンス}; メソッドという.
+ 13行目と14行目の間に追加したメソッドは,&color(white){Turtle}; クラス全体に作用する &color(white){  クラス  }; メソッドである.これにより,全てのかめさんの速さが変化する.
**課題B(self) 完成目標: 今回の実習終了まで [#kadaiB]

以下の二つのことをやりなさい

***その1 [#q74f49dc]

+講義資料の「★3.1」を読みなさい
+この科目のページのリンクをたどると(Graphics/Link),Java APIのページにたどりつくことができる.それを用いて,教科書p.24の練習問題3.2をやりなさい.java.awt.color (小文字)と java.awt.Color (大文字)の違いに注意.

&color(white,blue){check};
- API仕様文書によると,Java SE 7 の java.awt.Color クラスのコンストラクタは何通りあるか?
- 練習問題3.2 で指定されたコンストラクタでは,引数はどんな型でどんな範囲の数か?

***その2 [#if442a71]

&gist(fb8f2b19686308b7c3b45739b7566b4f);

+ 上記をダウンロード(右下の view raw を右クリックして...というのが早いでしょう)してコンパイルしなさい.random メソッドの呼び出し2箇所でエラーになるはずである.
+ 上記の random はいずれも,Math クラスのクラスメソッドである.修正して動作確認しなさい.これは,かめがランダムな角度左回転してからランダムな距離前進する動作を一定回数繰り返すプログラムである.Math クラスと random メソッドについては,講義資料「★3.4」および教科書p.28参照. 

&color(white,blue){check};
- for文の書き方については今回の授業の範囲ではないので,現時点では気にしないでよい
- System.out.println による文字列の出力の仕方についても同様.
- 変数 theta と r に代入する値を計算する式では,C言語同様に型を変換するキャストと呼ばれる処理を行っている(「(int)ほげ」の部分).詳しいことは後日説明するが,ここでは double 型の値を int型に変換しており,その際に切り捨てが行われる.したがって,
-- かめの回転角度は,0度以上 &color(white){120}; 度未満である.
-- かめの前進距離は &color(white){-20}; 以上 &color(white){40}; 未満である. 
**課題C(TA) 締切: 次回実習開始直後 [#kadaiC]

&color(Red){以下ではクラス名が G03exA となってますが,正しくは G03exC です.したがって,作成すべきソースファイルの名前も...};

#ref(http://www-tlab.math.ryukoku.ac.jp/~takataka/course/Graphics/G03exA.png,nolink)

上記に示すソースプログラムに関する次の問題に解答しなさい.解答は授業で配布された紙に記入すること(ソース全体を紙に書く必要はない)
実際にプログラムを作成&実行して修正を加えながら解答すること.
+10行目を
  Color c = new Color(255, 255, 0);
と変更したとする.この時にプログラムを正しく動作させるために,1行目に文を追加したい.どのような文を追加したらよいか答えなさい.
+右下に向かうかめを表すインスタンスを指しているのは,なんという名前の変数か
+以下の4カ所にそれぞれ指定された処理を行うにはどのように書けばよいか答えなさい
--A(16行目): speedAllメソッドを呼び出してかめの速さを低速にする
--B(17行目): speedメソッドを呼び出して kame の速さを変える(引数には10を指定すること)
--C(18行目): game の絵の大きさを 0.2 に変更する
--D(22行目): withTurtleAllの値を変化させる
---この問に答えるためには boolean 型についてちょっと勉強が必要.教科書p.37参照
+以下のアイウエにあてはまる文を上記のABCDから選んで答えなさい
--ア:クラス変数に値を代入している
--イ:クラスメソッドを呼び出している
--ウ:インスタンス変数に値を代入している
--エ:インスタンスメソッドを呼び出している



**課題S(おまけ) [#kadaiS]

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

以下のリンク先のクラスファイルを手元に保存し,実行してみなさい(このクラスは,TurtleクラスとTurtleFrameクラスを利用します).

[[G03RandomSample2.class>Graphics:G03RandomSample2.class]] 

これは,かめをフレームの中央に配置し,中央からかめまでの距離が一定値以上になるまで,次の動作を繰り返すものである.
>
+ 確率 &mathjax{\frac{1}{2}}; ずつで次の行動のいずれかを行なう
++ かめを右に60度回転し,ペンの色を赤にする
++ かめを左に60度回転し,ペンの色を青にする
+ 一定距離前進する
<
これと同じような動作をするプログラムを作成しなさい.ただし,クラス名は G03Random2 とすること.

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS