⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 airbubbles.java

📁 Java案例开发集锦,里面提供了很好的学习例子
💻 JAVA
字号:
import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;

public class AirBubbles extends Applet implements Runnable {
	Thread artist = null;

	int bubble = 0, thisbubble = 0; //气泡数量,当前气泡编号

	int MAXBUBBLES = 25; //最大气泡数量

	int stepper = 4; // Counter for which bubbles to move when

	int record[][] = new int[MAXBUBBLES][5]; //记录气泡的二维数组

	public void init() {
		//初始化applet
		//设定applet尺寸
		resize(500, 500);
	}

	public void draw_bubble(int x, int y, int r, Color col, Graphics g) {
		//输出气泡

		int i;
		//输出一个圆形
		for (i = x - r; i <= x + r; i++) {
			g.setColor(col);
			g.drawLine(i, y - (int) (Math.sqrt(r * r - ((i - x) * (i - x)))),
					i, y + (int) (Math.sqrt(r * r - ((i - x) * (i - x)))));
		}
	}

	public void move_bubble(int x, int y, int r, Color col, int step, Graphics g) {
		//移动气泡

		int i;
		//输出气泡的上半部分
		for (i = x - r; i <= x + r; i++) {
			g.setColor(col);
			g.drawLine(i, y - (int) (Math.sqrt(r * r - ((i - x) * (i - x)))),
					i, y + step
							- (int) (Math.sqrt(r * r - ((i - x) * (i - x)))));
		}
		//输出气泡的下半部分
		for (i = x - r; i <= x + r; i++) {
			g.setColor(Color.lightGray);
			g.drawLine(i, y + (int) (Math.sqrt(r * r - ((i - x) * (i - x)))),
					i, y + step
							+ (int) (Math.sqrt(r * r - ((i - x) * (i - x)))));
		}
	}

	public void paint(Graphics g) {
		int i, j, tmp;
		if (bubble < MAXBUBBLES || thisbubble < MAXBUBBLES) {
			record[thisbubble][0] = (int) (Math.random() * 300);
			record[thisbubble][1] = 320;
			record[thisbubble][2] = (int) (Math.random() * 400) / 20;
			record[thisbubble][3] = (int) (Math.random() * 255);
			record[thisbubble][4] = (int) (Math.random() * 255);
			//输出气泡
			draw_bubble(record[thisbubble][0], record[thisbubble][1],
					record[thisbubble][2], new java.awt.Color(
							record[thisbubble][3], record[thisbubble][4], 255),
					g);
			//如气泡数小于最大值,则总气泡数自增1,当前气泡编号自增1
			if (bubble < MAXBUBBLES) {
				bubble++;
				thisbubble++;
			} else
				//气泡数等于最大值
				thisbubble = MAXBUBBLES;
		}
		for (i = 0; i < bubble; i++) {
			if (i % 5 <= stepper) {
				record[i][1] -= 1;
				//移动气泡
				move_bubble(record[i][0], record[i][1], record[i][2],
						new java.awt.Color(record[i][3], record[i][4], 255), 1,
						g);
				for (j = 0; j < i; j++) {
					tmp = ((record[i][1] - record[j][1])
							* (record[i][1] - record[j][1]) + (record[i][0] - record[j][0])
							* (record[i][0] - record[j][0]));
					if (j != i && Math.sqrt(tmp) < record[i][2] + record[j][2]) {
						for (tmp = record[i][2]; tmp >= -1; tmp = tmp - 2)
							draw_bubble(record[i][0], record[i][1],
									record[i][2] - tmp, Color.lightGray, g);
						draw_bubble(record[j][0], record[j][1], record[j][2],
								new java.awt.Color(record[j][3], record[j][4],
										255), g);

						record[i][1] = -1;
						record[i][2] = 0;
					}
				}
			}
			if (record[i][1] + record[i][2] < 0 && bubble >= MAXBUBBLES) {
				thisbubble = i;
			}
			stepper = (int) (Math.random() * 10);
		}
	}

	public void update(Graphics g) {
		paint(g);
	}

	public void start() {
		//启动applet,创建并启动线程
		if (artist == null) {
			artist = new Thread(this);
			artist.start();
		}
	}

	public void stop() {
		//结束applet
		artist = null;
	}

	public void run() {
		//启动线程
		while (artist != null) {
			try {
				Thread.sleep(200);
			} catch (InterruptedException e) {
			}
			repaint();
		}
		artist = null;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -