・プログラム
import java.awt.*; // ウィンドウ関連ツール(Abstract Window Toolkit)を使う import java.util.Random; // 乱数を使う import java.applet.Applet; public class Circles extends Applet { // アプレットの名前は Circles にする public void paint(Graphics g) { // 描画手順は以下の通り Random a = new Random(); // 新しい乱数列 a を用意する for (int i = 0; i < 1000; i++) { // 0 から 999 までループ g.setColor(new Color(a.nextInt())); // 整数の乱数を発生し,それで色を決める int x = (int)(300 * a.nextDouble()); // 整数変数 x に 300×(0以上1未満の実数の乱数) を(切り捨てて整数にして)代入する int y = (int)(100 * a.nextDouble()); // 上と同様 int r = (int)(40 * a.nextDouble()) + 10; // 上と同様 g.fillOval(x - r, y - r, 2 * r, 2 * r); // 中心 (x,y),半径 r の円板を描く } } } |
・考察
(1)import文 Javaでは元々別のパッケージが用意されております。しかし完全修飾名を使って指定すると面倒です。 そこでimportステートメントが用意されています。
import 指定クラスorインターフェイス; import パッケージ名*; |
Class クラス名2 extends クラス名1{ //クラス本体 } |
・プログラム
/* Program:Report2_1 Date:2004,11,06(Sat) Author:Hidenori Tamayose */ import java.awt.*; import java.util.*; import java.applet.Applet; public class Report2_1 extends Applet{ public void paint(Graphics g) { Random a = new Random(); for (int n = 0; n < 7; n++) { int x = (int)(300 * a.nextDouble()); int y = (int)(300 * a.nextDouble()); g.setColor(new Color(0, 255, 0)); g.fillOval(x , y, 200, 50); g.setColor(new Color(255, 0, 0)); g.fillOval(x + 20, y - 25, 40, 40); g.fillOval(x +140 ,y - 25 ,40 ,40); } } } |
・考察
前のプログラムからの変化はあまり無く、複数のグラフィックでカエルのシルエットを作り、それ全体・プログラム
/* Program:Report2_1.java Date:2004.11.06(Sat) Author:Hidenori Tamayose */ import java.applet.Applet; import java.awt.*; import java.util.*; public class Report2_1 extends Applet implements Runnable { public void init(){ setBackground(Color.black); } { Thread th; //スレッドを宣言 th = new Thread(this); th.start(); //スレッド起動 } public void run() { try{ for(int i=0; i <=100; i++){ //画像が100になるまで繰り返し repaint(); //画面表示の更新 Thread.sleep(150); //スレッドを3/20秒ごとに一時停止 } } catch(InterruptedException e){} } public void paint(Graphics g) { Random a = new Random(); //乱数列aを用意 for (int j = 0; j <= 25; j++) { //0から25までループ int v = (int)(400 * a.nextDouble()); //整数変数xに400を代入 int w = (int)(200 * a.nextDouble()); //同上 int u = (int)(10 * a.nextDouble()) + 3; //同上 g.setColor(Color.green); g.drawString("Java",v-u,w-u); //文字列を表示 } } } |
・考察
(1)Thread スレッドとはプログラム実行の流れ。 (2)try、catch 使い方 try{例外の発生を調べる文;.....}catch(例外のクラス 変数名){例外が起きた時に処理する文;} この2つのブロックでプログラム中での例外処理を行う。よってプログラムエラーに強くなる。 (3)Thread.sleep(); スレッドをmsecミリ秒間、待機させる。
メソッド | 説明 |
drawString(String str,x,y) | strを座標x,yに描写する |
fillPolygon(x,y,n) | 頂点の座標を配列x,yの要素としてn角形を塗りつぶしで描写 |
fillRect(x,y,w,h) | 座標x,yに左上隅が配置される幅w,高さhの四角形を塗りつぶしで描写 |
setColor(Color c) | 現在のカラーとしてcを設定する |
setFont(Font f) | 現在のオブジェクトフォントとしてfを設定する |
メソッド | 説明 |
java.applet | Javaアプレットを作成するクラス |
java.awt | ウィンドウ形式のユーザーインターフェイスを実現するためのクラス |
java.awt.event | ウィンドウ形式のユーザーインターフェイスでイベントの処理を実現するためのクラス |
java.io | キー入力と画面出力、およびファイルの入出力の機能を提供するクラス |
java.lang | あらゆるプログラムで使われるような基本的な機能を提供するクラス |
java.net | ネットワークの機能を提供するクラス |
java.security | セキュリティの機能を提供するクラス |
java.text | 自然言語に依存しない方法でテキストの処理を実現するクラス |
java.util | 日付処理、高度なデータ構造、およびデータの検索機能を提供するクラス |
今回の課題はわりと楽しかったです。 アプレットと最初きいて課題1とは全然違うように思いましたが、それほど違っておらず むしろ自分のプログラムで今までと違うグラフィック出力が見れてプログラムしたんだと 実感できました。