java烟花程序看不懂,求解释!

java烟花程序看不懂,求解释!,第1张

import javaawt;

import javaapplet;

import javaawtevent;

import javaxswing;

public class Fireworks extends Applet implements MouseListener, Runnable {

int x, y;//记录鼠标点击的坐标

int top, point;//好像没用到

public void init() {

x = 0;

y = 0;

setBackground(Colorblack);// 设置背景色为黑色

addMouseListener(this);//添加鼠标监听

}

public void paint(Graphics g) {

}

public static void main(String args[]) {

Fireworks applet = new Fireworks();

JFrame frame = new JFrame("TextAreaNew");

frameaddWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {//右上角的叉

Systemexit(0);

}

});

frameadd(applet, BorderLayoutCENTER);

framesetSize(800, 400);//程序的框框大小

appletinit();

appletstart();

framesetVisible(true);//

}

public void run() {

// 变量初始化

Graphics g1;

g1 = getGraphics();//这是画笔,得到一个画笔

int y_move, y_click, x_click;

int v;//用于计算等待的时间

x_click = x;

y_click = y;//把点击的坐标保存下来,因为其它线程会去改这两个坐标。

y_move = 400;//用来计算变动的那个点,现在是屏幕的最大高度

v = 3;

int r, g, b;

while (y_move > y_click)//如果点击的位置小于最大高度。

{

g1setColor(Colorblack);//画笔设成黑色

g1fillOval(x_click, y_move, 5, 5);//画圆,圆点在点击的X轴,程序界面的最高点,长为5,宽为5

y_move -= 5;//最高点-5

r = (((int) Mathround(Mathrandom()  4321)) % 200) + 55;

g = (((int) Mathround(Mathrandom()  4321)) % 200) + 55;

b = (((int) Mathround(Mathrandom()  4321)) % 200) + 55;//rgb是光的三原色,这个就是烟花产生的颜色,这里定义成随机的,但在一个范围里

g1setColor(new Color(r, g, b));//把画笔改成那个颜色

g1fillOval(x_click, y_move, 5, 5);//画一个这样的圆

for (int j = 0; j <= 10; j++) {

if (r > 55)

r -= 20;

if (g > 55)

g -= 20;

if (b > 55)

b -= 20;

g1setColor(new Color(r, g, b));

g1fillOval(x_click, y_move + j  5, 5, 5);//这一段都是改变颜色,然后画圆的

}

g1setColor(Colorblack);

g1fillOval(x_click, y_move + 5  10, 5, 5);//把上一次画的彩色圆,用黑色画一遍,就能让它消失在背景里

try {

ThreadcurrentThread()sleep(v++);//让程序等一下,让你看到效果,不然画完的东西一下就不见了,你看不清。

} catch (InterruptedException e) {

}

}//上面这段代码是烟花的升上去的那一串东西的效果

for (int j = 12; j >= 0; j--) {

g1setColor(Colorblack);

g1fillOval(x_click, y_move + (j  5), 5, 5);

try {

ThreadcurrentThread()sleep((v++) / 3);

} catch (InterruptedException e) {

}

}//让最后的那串东西的点消失

y_move = 400;

g1setColor(Colorblack);

while (y_move > y_click) {

g1fillOval(x_click - 2, y_move, 9, 5);

y_move -= 5;

}//这段不太清楚是干什么的,我把它去掉,看不出效果的变化

v = 15;

for (int i = 0; i <= 25; i++) {

r = (((int) Mathround(Mathrandom()  4321)) % 200) + 55;

g = (((int) Mathround(Mathrandom()  4321)) % 200) + 55;

b = (((int) Mathround(Mathrandom()  4321)) % 200) + 55;

g1setColor(new Color(r, g, b));

g1drawOval(x_click - 3  i, y_click - 3  i, 6  i, 6  i);

if (i < 23) {

g1drawOval(x_click - 3  (i + 1), y_click - 3  (i + 1),

6  (i + 1), 6  (i + 1));

g1drawOval(x_click - 3  (i + 2), y_click - 3  (i + 2),

6  (i + 2), 6  (i + 2));

}//上面这段是画爆炸的效果

try {

ThreadcurrentThread()sleep(v++);//停一下,看效果

} catch (InterruptedException e) {

}

g1setColor(Colorblack);

g1drawOval(x_click - 3  i, y_click - 3  i, 6  i, 6  i);//然后画黑圈,相当于让彩圈消失。

}

}

public void mousePressed(MouseEvent e) {//点击从这里开始~~~~~~~~~~~~~~

x = egetX();

y = egetY();//得到鼠标点击的坐标

Thread one = new Thread(this);//新建一个线程

onestart();//启动这个线程,到上面的run方法

one = null;//把这个线程置为空,让它执行完以后就释放

}

如果你想一下自己写要怎样写这个程序,就很容易理解这个程序了。

一直从下向上画圆,然后把下面的圆擦掉,就能得到一个向上升的烟花效果,

爆炸效果就是先画小圆再画大圆,然后擦掉小圆,再擦掉大圆。

楼上的不对,,,晕,,乱来。

把这个文件下下来。>

以上就是关于java烟花程序看不懂,求解释!全部的内容,包括:java烟花程序看不懂,求解释!、编一个鼠标点击放烟花的程序、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10112237.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存