#author("2019-06-27T10:35:13+09:00","default:takataka","takataka") #author("2019-06-27T10:39:28+09:00","default:takataka","takataka") *グラフィックス基礎及び実習 2019年度 第12回 [#e9701092] #contents &color(#ff0000){工事中}; //&color(#ff0000){工事中}; //**注意 [#notice] **課題A(self) 完成目標: 今回の実習終了まで [#kadaiA] + 前回講義資料の練習問題のプログラム Counter.java を作って動作確認しよう. + 講義資料 1/5 をよく読んでから,右のリンク先のPDFファイルを閲覧し,手書きの部分を講義資料に書き写しなさい.[[資料(学内アクセス限定)>Graphicsgakunai:scan2018-12-p1.pdf]] + 講義資料の通り Counter.java を改造して動作確認しよう. + TextField に整数と解釈できない文字列が入力された時はカウントを 1818 にするようにしてみよう.4949 でも可. **課題B(self) 完成目標: 今回の実習終了まで [#kadaiB] + 講義資料 2/5 をよく読んでから,右のリンク先のPDFファイルを閲覧し,手書きの部分を講義資料に書き写しなさい.[[資料(学内アクセス限定)>Graphicsgakunai:scan2018-12-p2.pdf]] + 講義資料の通り MouseEventSample.java を作って動作確認しよう. + 講義資料 3/5 をよく読んでから,右のリンク先のPDFファイルを閲覧し,手書きの部分を講義資料に書き写しなさい.[[資料(学内アクセス限定)>Graphicsgakunai:scan2018-12-p3.pdf]] + 講義資料の通り MouseEventSample.java を改造して動作確認しよう. **課題C(TA) 締切: 次回実習開始直後 [#kadaiC] [[DoraPaneSample.class>Graphics:DoraPaneSample.class]] [[G12DoraSample.class>Graphics:G12DoraSample.class]] + 上記リンク先の2つクラスファイルをダウンロードしていつもの場所に置き,G12DoraSample を実行してみなさい. + G12DoraSample と同じ動作をするプログラムを作るための準備として,自分のプログラムで DoraPaneSample を呼び出して「Dora」を表示するプログラムを作りなさい.ただし, -- クラス名は G12Dora とすること -- ヒント: コンポーネントの生成と配置は次のようにすればよい.DoraPaneSample クラスは Label や Button と同様に Node クラスのサブクラスなので,dora は label と同じように root に載せられる. #pre{{ DoraPaneSample dora = new DoraPaneSample(); Label label = new Label(); BorderPane root = new BorderPane(); }} + 上記のプログラムを修正して,G12DoraSample と同じ動作をするプログラムを作りなさい.DoraPaneSample の方は↑同様そのまま利用すればよい.ただし, -- ''DoraPaneSample のAPIに示された全ての項目を使用すること'' -- ヒント: --- イベントハンドラは,dora に対して設定すればよい. --- クリック時の座標を取得して,DoraPaneSample クラスのインスタンスメソッド onNose を呼んで... &color(blue){&size(8){ これはいったい誰でしょう? (1) ドラエモン (2) トラえもん (3) ドラ之もん (4) どらえもん (5) どらエモソ};}; ***DoraPaneSample のAPI仕様 [#DoraPaneSample] ''[[javafx.scene.layout.Pane>https://docs.oracle.com/javase/jp/8/javafx/api/javafx/scene/layout/Pane.html]] のサブクラス'' - ''コンストラクタ'' > :DoraPaneSample()| 「Dora」が描かれた Pane のインスタンスを生成.大きさは300x300.背景は白色. < - ''メソッド'' > :boolean onNose(double x, double y)| 座標 (x, y) が「Dora」の鼻の領域内(注)だったら true, さもなくば false. < - ''フィールド'' > :String mEntered| "ぼくどらちゃん" :String mClicked|"どらやき食べたい" :String mOnNose|"いたい!いたい!" :String mExited|"ばいばい" < 注: DoraPaneSampleでは,鼻の領域は (150, 150) を中心とする半径15の円とその内部. **課題S(omake) [#kadaiS] //&color(#ff0000){工事中}; ''&color(blue){Dora福笑い};'' [[DoraFukuSample.class>Graphics:DoraFukuSample.class]] 上記のサンプルと同様のものを作ろう.次のように考えたらよい. + Shape クラスのサブクラスを使って Dora の図を描くプログラムを作る + 右目を表す楕円等の各オブジェクトに対してイベントハンドラを設定する