Ex13_3



/*-----------
 Ex13_3.java
 スレッド処理
 ------------*/
package jp_bunkyo;

import java.applet.*;
import java.awt.*;
import java.util.Random;

public class Ex13_3 extends Applet implements Runnable {
	int x, y, width, height;	// x座標,y座標,幅,高さ用変数宣言
	int red, grn, blu;			// 3色(red, grn, blu)用変数宣言
	Color col;
	Random rnd;					// 乱数クラス宣言
	Thread thd = null;			// スレッド宣言

	public void init() {		// 初期化
		x = 10;	y = 10;					// 初期化:座標(x,y)
		width = 50; height = 50;		// 初期化:幅 width,高さ height
		red = 255; grn = 0; blu = 0;	// 初期化:色(red,grn,blu)
		col = new Color(red, grn, blu);	// 初期化:3色で色を作る
		rnd = new Random();				// 初期化:乱数
		thd = new Thread(this);			// 新しいスレッドを作る
		thd.start();					// スレッド開始
	}

	public void paint(Graphics g) {
		g.setColor(col);	// 色を設定
		g.fillOval(x, y, width, height);		// 楕円を描画
	}

	public void run() {	// スレッドを開始した際に呼び出されるメソッド
		while (true) {	// 無限ループ
			x = rnd.nextInt(120);	// x座標:0,1,…,119の乱数
			y = rnd.nextInt(120);	// y座標:0,1,…,119の乱数
			width = rnd.nextInt(70)+20;	// 幅
			height = rnd.nextInt(70)+20;// 高さ
			red = rnd.nextInt(256);	// 赤色:0,1,…,255の乱数
			grn = rnd.nextInt(256);	// 緑色:0,1,…,255の乱数
			blu = rnd.nextInt(256);	// 青色:0,1,…,255の乱数
			col = new Color(red, grn, blu);

			repaint();	// 再描画(= paint()を実行)

			try {
				thd.sleep(250);	// スレッドを一時停止(250ミリ秒)
			} catch (InterruptedException e) {
			}
		}
	}
}