データ構造とアルゴリズム論

Similar documents
第1章 ビジュアルプログラミング入門

第1章 ビジュアルプログラミング入門

第1章 ビジュアルプログラミング入門

第1章 ビジュアルプログラミング入門

Microsoft PowerPoint - OOP.pptx

ガイダンス

第1章 ビジュアルプログラミング入門

ガイダンス

<4D F736F F F696E74202D AC C8899E D834F E >

Graphical User Interface 描画する

教材ドットコムオリジナル教材 0から始めるiアプリ (4) 0 から始める i アプリ (4) i アプリをプログラミングする際に必要なのは Java というプログラミング言語の基礎知識です 独自の命令や駆使してプログラミングをするわけですが Java というベースになっている言語を知らないでプログ

4 その後 さらに下方にスクロールするとダウンロードファイルリストがあるので Windows x86 欄のファイルを選択する jdk-8u60 の 8u102 がバージョンを示している (2016 年 9 月 13 日時点では u102 のアップデート番号が最新版だが これはダウンロード時期によって

Prog2_9th

Microsoft PowerPoint - OOP.pptx

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

JavaプログラミングⅠ

第1章 ビジュアルプログラミング入門

プログラミング入門1

Microsoft PowerPoint - prog03.ppt

Java - Visual Editor

< F2D82B682E182F182AF82F12E6A7464>

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

10/31 Java AWTの基本構造(Frameクラスの継承) 演習課題資料

< F2D825282CC947B909482CC A815B83682E6A>

Prog2_12th

Prog2_6th

< F2D82518CC282CC D2E6A7464>

11 ソフトウェア工学 Software Engineering デザインパターン DESIGN PATTERNS デザインパターンとは? デザインパターン 過去のソフトウェア設計者が生み出したオブジェクト指向設計に関して, ノウハウを蓄積し 名前をつけ 再利用しやすいようにカタログ化したもの 各デ

< F2D B838A835882CC8CF68EAE2E6A7464>

Assignment_.java /////////////////////////////////////////////////////////////////////// // 課題 星の画像がマウスカーソルを追従するコードを作成しなさい 次 ///////////////////

< F2D82518E9F8AD CC95BD8D7388DA93AE2E6A7464>

PowerPoint Presentation

GUI プログラミング第 4 Graph ~ 手書認識と関数グラフ描画 ~ マウスで数式を書いて認識し 関数グラフを描画する < 手書認識とグラフ描画のステップ> ステップ 1_1 フレームの作成 ステップ 1_2 マウスで自由に線を書く ステップ 2-1 手書認識認識結果を標準出力する ステップ

C#の基本

Java言語 第1回

< F2D F B834E2E6A7464>

GEC-Java

教材ドットコムオリジナル教材 0から始めるiアフ リ リファレンス i アプリ簡易リファレンス ver i アプリ Java 独自のメソッド (1)iアプリの命令を使えるようにする import com.nttdocomo.ui.*; (2) 乱数を使う import java.u

< F2D834F838C A815B A CC>

JavaプログラミングⅠ

PowerPoint プレゼンテーション

以下に java.awt.graphics クラスの主なメソッドを示す (Graphics クラスの ) メソッド drawline(int x1, int y1, int x2, int y2) drawrect(int x, int y, int width, int height) fillr

ガイダンス

プログラミング教育のための発展的な教材作成の実践と考察

PowerPoint プレゼンテーション

< F2D92DE82E8914B82CC977088D32E6A7464>

ガイダンス

1/2

Prog2_15th

Prog2_9th

ガイダンス

Prog1_6th

Java 2 - Lesson01

Java演習(6) -- 条件分岐 --

Prog2_10th

Mapmakerfor の手順下絵を準備 作者の設定した大きさで作成する場合 下絵にする地図を挿入 トリミングと大きさの調整 大きさを調整した画像を保存 下絵を背景に設定 作成画面の大きさを調整 1 自分で用意した下絵を背景にする場合 下絵を背景に設定 作成画面の大きさを調整 画像が大きい場合シート

プログラミング入門1

WebOTXマニュアル

pp2018-pp9base

PowerPoint プレゼンテーション

Delphi/400でFlash動画の実装

第 1 章 : はじめに RogueWave Visualization for C++ の Views5.7 に付属している Views Studio を使い 簡単な GUI アプリケーションの開発手順を紹介します この文書では Windows 8 x64 上で Visual Studio2010

Prog2_6th

Prog1_10th

MasterDetailFlow SettingsActivity 2. Android Lint Checks 以前のバージョンよりコンパイルのチェックが厳しくなりました このような厳しいチェックを Android Lint Checks と言います Abdroid プログラミング Bible で

PowerPoint プレゼンテーション

Microsoft PowerPoint ppt

Prog2_2nd

次の演習課題(1),(2)のプログラムを完成させよ

20180308森の日県南支部 林

Microsoft PowerPoint - chap10_OOP.ppt

のようにする 上の例では GeneralPath を new するときに コンストラクタに何も指定していないが 直線を表す Line, 四角形を表す Rectangle などを引数に与えてもよい 矢印を作成するメソッドの引数矢印を表す GeneralPath を生成するために getarrowpat

ブロック崩し Step1 矢印キーで左右に動かせるパドルを描画する < パドルの表現方法 > パドルは java.awt パッケージの Rectangle という Java が用意しているクラスを使う これは四角形を表すクラスで 左上の点の座標と幅 高さをもっている (x, y) Rectangle

JavaプログラミングⅠ

// ステージを設定します stage.setscene(scene); stage.settitle(" キャンバス "); // ステージを表示します stage.show(); public static void main(string[] args) launch(args); キャンバス

関数の定義域を制限する 関数のコマンドを入力バーに打つことにより 関数の定義域を制限することが出来ます Function[ < 関数 >, <x の開始値 >, <x の終了値 > ] 例えば f(x) = x 2 2x + 1 ( 1 < x < 4) のグラフを描くには Function[ x^

Microsoft Word - Mac版 Eclipseの導入と設定.docx

Java 3 p.2 3 Java : boolean Graphics draw3drect fill3drect C int C OK while (1) int boolean switch case C Calendar java.util.calendar A

ガイダンス

Microsoft PowerPoint - ●SWIM_ _INET掲載用.pptx

平成 29 年度卒業研究 初心者のためのゲームプログラミング用 教材の開発 函館工業高等専門学校生産システム工学科情報コース 5 年 25 番細見政央指導教員東海林智也

Java講座

Prog2_10th

ただし 無作為にスレッドを複数実行すると 結果不正やデッドロックが起きる可能性がある 複数のスレッド ( マルチスレッド ) を安全に実行する ( スレッドセーフにする ) ためには 同期処理を用いるこ とが必要になる 同期処理は 予約語 synchronized で行うことができる ここでは sy

Prog2_5th

ホームページ・ビルダー16

手書認識 グラフ描画 Step2-2 手書認識 : 認識結果を PaintPanel で描画する < 属性付き文字列 AttributedString> 標準出力では分かりにくいうえに認識結果を使えないので 認識するごとに PaintPanel に文字を描画することにする ここで 数式はただの文字列

グラフィックトレーニング 概要.NET のグラフィック描画は どんなことができるのでしょうか? グラフィックオブジェクトやグラフィック環境 概念を理解するためには クラスを使って馴れることが近道です 本 書に記載されているコードをカットアンドペーストして 一つ一つの機能を体験してください 前提 グラ

アプリケーション

Javaの作成の前に

目次 1. デジタル押し花の作り方 3 2. デジタル押し花をきれいに仕上げる方法 まとめ 課題にチャレンジ 19 レッスン内容 デジタル押し花 マイクロソフト社のワープロソフト Word 2010( これ以降 Word と記述します ) の図ツールに搭載されている [ 背景

Java 基礎問題ドリル ~ メソッドを理解する ~ 次のプログラムコードに 各設問の条件にあうメソッドを追加しなさい その後 そのメソッドが正しく動作することを検証するためのプログラムコードを main メソッドの中に追加しなさい public class Practice { // ここに各設問

Microsoft PowerPoint prog1_doc2.pptx

VB.NET解説

た場合クラスを用いて 以下のように書くことが出来る ( 教科書 p.270) プログラム例 2( ソースファイル名 :Chap08/AccountTester.java) // 銀行口座クラスとそれをテストするクラス第 1 版 // 銀行口座クラス class Account String name

表示の更新もそういた作業のひとつに当たる スレッドの使用アニメーション アニメーションやシミュレーションなどは画面の更新が一定のタイミングで行われていく この連続した画面の更新をスレッドを利用して行う しかし paint() メソッドを直接呼び出して表示を更新することはできない その理由

シミュレーションの簡単な例 GUI 無しのシミュレーションを作る GUI を作る パラメタを設定するデモンストレーションをする 2 オブジェクト指向プログラミング特論

スライド 1

JavaプログラミングⅠ

モデル空間に読み込む場合 AutoCAD では 部分図および座標系の設定を 複合図形 ( ブロック ) にて行います 作図にあたっての流れは下記のとおりとなります (1) 発注図の読み込み (2) 発注図の確認 (3) 発注図の部分図の利用方法や座標設定が要領に従っていない場合の前準備 (4) 作図

Transcription:

第 1 章.Java による CG 作成方法 2 学習のねらい 1 先週に続いて Java 言語 (Eclipse 環境における ) を用いて CG( コンピュータグラフィックス ) を作成する方法の基礎を学習する 今回は ( 作成した )CG が自動的に再描画される様にするための処理 ( のプログラミング ) を学習する 今回の学習で Java による CG 作成方法を終了し 次週以降は CG 作成のアルゴリズムの学 習に入ります 今回の学習内容が身に付いていなければ 次週以降の CG 作成ができませ ん しっかりと学習して下さい 1-3 再描画処理 ( 描画処理の改良 ) プログラミング テキストの 8-7 節 (p.227~235(p.225~233:2012 年度版 )) を良 く読み 応用課題 8-7-A のプログラムを作成して下さい ただし 作成の前に 以下の < 作成上の注意 > を良く読んで下さい < 作成上の注意 > 1 p.228(p.226:2012 年度版 ) の 準備 から行わなければ作成できません 2 もし 何らかのプロジェクトが開かれていたら [ ファイル ] すべて閉じる によって 必ず全てのプロジェクトを閉じてからアプリケーションの新規作成を行って下さい 今後も 混乱を避けるため新規にプログラムを作成する際にはプロジェクトを閉じるようにして下さい 3 テキストの p.231(p.229:2012 年度版 ) で MyPanel コンポーネントをフレーム上に貼り付ける際には これまで通りフレームの Layout を Absolute Layout にしておいて下さい 4 p.234~235(p.232~233:2012 年度版 ) で用いている Image オブジェクトについては テキストの 8-6 節で説明しています p.215~218(p.213~216:2012 年度版 ) の 練習課題 を読んで下さい プログラムを作成し 再描画処理が行われることを確認したら 次の 基礎課題 1-4 以 降に進んで下さい 5

基礎課題 1-4 p.234(p.232:2012 年度版 ) で説明している MyPanel クラスを次のように (2ヶ所) 書き換えました 下線部が変更部分です このプログラムが 応用課題 8-7-A と同様に動作するためには 空欄部分をどのように書き換えればよいですか? 適切な変数名 ( オブジェクト名 ) あるいは命令文を記入して下さい public class MyPanel extends JPanel { private Image Img1=null; //Image オブジェクトの宣言 public void paintcomponent(graphics g){ super.paintcomponent(g); if( 1!=null) { 変更部分 g.drawimage( 2,0,0,this); public void setimage(image img2) { 3 ; < 課題提出の仕方について > 先週のプリントの p.2 で説明した要領で課題を提出して下さい 本日提出してもらうの は 基礎課題 1-3 ~ 基礎課題 1-6 の 4 題です 6

基礎課題 1-5 テキスト p.235(p.233:2012 年度版 ) に与えている [ 描画 ] ボタンクリック時のプログ ラムについて 以下の 1 から 3 の設問に答えて下さい private void jbutton1actionperformed(actionevent evt) { Graphics g=mypanel1.getgraphics(); g.setcolor(color.black); g.filloval(10,10,200,100); g.dispose(); int w=mypanel1.getwidth(); // パネル幅の取得 int h=mypanel1.getheight(); // パネル高さの取得 Image img=this.createimage(w,h); 1 Graphics g2=img.getgraphics(); //Graphics オブジェクトの取得 g2.setcolor(color.white); g2.fillrect(0,0,w,h); g2.setcolor(color.black); g2.filloval(10,10,200,100); mypanel1.setimage(img); 3 g2.dispose(); 2 プログラム中の 1~3 の番号 がそれぞれの設問に対応します 1 createimage(w,h) メソッドが行う処理内容として最も適切なものを下の選択肢から選び その記号を記入して下さい A. パネル上の座標 (w,h) の位置に Image オブジェクトの画像を表示する B. 幅 w 高さhの四角形の Image オブジェクトを生成する C. 幅 w 高さhの四角形の Image オブジェクトの画像をパネル上に表示する 2 点線枠で囲まれた部分をプログラムから削除した場合 再描画時の実行結果はどのようになりますか? 最もあてはまるものを選択肢から選びその記号を記入して下さい A. 以前と全く同様に再描画される B. 楕円が再描画されなくなる C. 楕円は再描画されるが パネルの白い枠は描画されなくなる 3 setimage(img) メソッドの処理内容に関する説明として最もよくあてはまるものを次の選択肢から選び その記号を記入して下さい A.Image オブジェクト img を MyPanel クラス内のオブジェクトに引き渡す B.Image オブジェクト img を MyPanel クラス内のオブジェクトに表示させる C.Image オブジェクト img に楕円を描画する 7

1-4 再描画処理の応用 今後は パネル上に様々な CG を作成して行きます そのためには 1-3 節で作成したプログラムの MyPanel クラスは改変する必要はなく ただ [ 描画 ] ボタンクリック時のプログラムを ( 作成する CG の内容に応じて ) 変更すれば良いだけです そのことを具体的に確認しましょう 前節で作成したプログラム (Ouyou8_7_A) 中の [ 描画 ] ボタンクリック時のプログラムを開いて下さい private void jbutton1actionperformed(actionevent evt) { Graphics g=mypanel1.getgraphics(); g.setcolor(color.black); g.filloval(10,10,200,100); g.dispose(); int w=mypanel1.getwidth(); // パネル幅の取得 int h=mypanel1.getheight(); // パネル高さの取得 Image img=this.createimage(w,h); //Image オブジェクトの生成 Graphics g2=img.getgraphics(); //Graphics オブジェクトの取得 g2.setcolor(color.white); g2.fillrect(0,0,w,h); g2.setcolor(color.black); g2.filloval(10,10,200,100); mypanel1.setimage(img); // 画面を Image オブジェクトとして設定 g2.dispose(); これは ( 黒色の ) 楕円を描くプログラムでしたが 例えば赤色の四角形を描くプログラムに変更するには 上の (2 ヶ所の ) 点線枠部分を修正すれば良いのです 直接修正しても良いのですが よく見ると分かるように 点線枠内の処理は 対象とする Graphics オブジェクトが違う (g と g2) のみで あとは全く同じです このような場合は 描画を行うメソッドを定義すれば記述は一度で済み また描画内容が複雑になった時にも拡張が容易になります そこで 上のプログラムの後に以下の様に CG の描画を行うメソッド DrawGraphics() を定義してみましょう 8

private void jbutton1actionperformed(actionevent evt) { 新たに定義した部分 void DrawGraphics(Graphics g) { g.setcolor(color.red); g.fillrect(10,10,200,100); これを用いれば [ 描画 ] ボタンクリック時のプログラムは次のように 前ページの (2 ヶ所の ) 点線枠部分を DrawGraphics() メソッドで置き換えることで実現できます private void jbutton1actionperformed(actionevent evt) { Graphics g=mypanel1.getgraphics(); DrawGraphics(g); g.dispose(); g2.fillrect(0,0,w,h); DrawGraphics(g2); mypanel1.setimage(img); // 画面を Image オブジェクトとして設定 g2.dispose(); プログラムを修正したら 各自動作を確認して下さい このようにプログラムを整理しておくと 新たに描画内容を書き換えるときには メソッド DrawGraphics() の内容 ( のみ ) を修正するだけで良い事が分かります したがって以降の学習では 作成する CG に応じてこの DrawGraphics() 内のプログラムを書き換えて行く事になります 基礎課題 1-6 既存のプログラムを利用してプログラムを作る方法 今後 課題毎に新たにプログラムを作成して行きますが 上で述べた様に一度 ( 基になる ) プログラムを作成すれば NewJFrame クラスの DrawGraphics(g) メソッド以外の部分は書き換える必要がありません ですから その度に同じ内容を記述するのは面倒で できれば 修正する部分のみを新たに記述するだけで済ませたいものです それを実現する 最も手っ取り早い方法はプロジェクト全体をコピーしてそれを用いる方法です 以下 プログラム Ouyou8_7_A を修正して 次の様に(3つの) 四角形を表示させる 9

プログラムを作る場合を例に取り上げて その方法を紹介しましょう 手順は以下の通り です 1 今開いているプロジェクトがあったらいったんそれらを閉じます 2 次に 利用する ( 基になる ) プロジェクト Ouyou8_7_A ( 別の名前で作った人はそれに読み替えて下さい ) をパッケージエクスプローラから選択して 右ボタンクリックします そして 現れたメニューから コピー を 選択します 10

3 続いてパッケージエクスプローラ内で右ボタンクリックし 貼り付け を選択します すると 次の画面が現れるので ( コピー先の ) プロジェクト名を指定します ここで は Kadai1_6 としましょう 4 これで プロジェクト Ouyou8_7_A が Kadai1_6 という名前でコピーされ 次のように パッケージエクスプローラに表示されます これは 以前のプロジェクト (Ouyou8_7_A) とは独立の ( 新しい ) プロジェクトなので 自由に変更修正ができます 11

5 新たに作成したプロジェクト Kadai1_6 の NewJFrame.java にある DrawGraphics(g) メソッドを次のように書き換えます ( 今の場合 ) void DrawGraphics(Graphics g) { g.setcolor(color.red); g.fillrect(10,10,30,30); g.fillrect(70,10,30,30); g.fillrect(130,10,30,30); 作成したら実行してみてください うまく表示されたら プログラム作成方法を確認しました というメッセージを送って下さい それを以てこの課題の提出とみなします 次週以降もこの要領でプログラムを作って行って下さい 作成時間を節約し CG 作成部 分に集中できるはずです 12