黑马程序员技术交流社区
标题:
模拟放烟花
[打印本页]
作者:
巴塞罗那的凌晨
时间:
2015-4-5 21:09
标题:
模拟放烟花
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import javax.swing.*;
public class Fireworks extends Applet implements MouseListener,Runnable
{
int x,y;
int top,point;
/**
*对小程序进行变量和颜色的初始化。
*/
public void init()
{
x = 0;
y = 0;
//设置背景色为黑色
setBackground(Color.black);
addMouseListener(this);
}
public void paint(Graphics g)
{
}
/**
*使该程序可以作为应用程序运行。
*/
public static void main(String args[]) {
Fireworks applet = new Fireworks();
JFrame frame = new JFrame("TextAreaNew");
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
frame.getContentPane().add(
applet, BorderLayout.CENTER);
frame.setSize(800,400);
applet.init();
applet.start();
frame.setVisible(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)
{
g1.setColor(Color.black);
g1.fillOval(x_click,y_move,5,5);
y_move -= 5;
r = (((int)Math.round(Math.random()*4321))%200)+55;
g = (((int)Math.round(Math.random()*4321))%200)+55;
b = (((int)Math.round(Math.random()*4321))%200)+55;
g1.setColor(new Color(r,g,b));
g1.fillOval(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;
g1.setColor(new Color(r,g,b));
g1.fillOval(x_click,y_move+j*5,5,5);
}
g1.setColor(Color.black);
g1.fillOval(x_click,y_move+5*10,5,5);
try
{
Thread.currentThread().sleep(v++);
} catch (InterruptedException e) {}
}
for(int j=12;j>=0;j--)
{
g1.setColor(Color.black);
g1.fillOval(x_click,y_move+(j*5),5,5);
try
{
Thread.currentThread().sleep((v++)/3);
} catch (InterruptedException e) {}
}
y_move = 400;
g1.setColor(Color.black);
while(y_move > y_click)
{
g1.fillOval(x_click-2,y_move,9,5);
y_move -= 5;
}
v = 15;
for(int i=0;i<=25;i++)
{
r = (((int)Math.round(Math.random()*4321))%200)+55;
g = (((int)Math.round(Math.random()*4321))%200)+55;
b = (((int)Math.round(Math.random()*4321))%200)+55;
g1.setColor(new Color(r,g,b));
g1.drawOval(x_click-3*i,y_click-3*i,6*i,6*i);
if(i<23)
{
g1.drawOval(x_click-3*(i+1),y_click-3*(i+1),6*(i+1),6*(i+1));
g1.drawOval(x_click-3*(i+2),y_click-3*(i+2),6*(i+2),6*(i+2));
}
try
{
Thread.currentThread().sleep(v++);
} catch (InterruptedException e) {}
g1.setColor(Color.black);
g1.drawOval(x_click-3*i,y_click-3*i,6*i,6*i);
}
}
/**
*对鼠标事件进行监听。
*临听其鼠标按下事件。
*当按下鼠标时,产生一个新线程。
*/
public void mousePressed(MouseEvent e)
{
x = e.getX();
y = e.getY();
Thread one;
one = new Thread(this);
one.start();
one = null;
}
/**
*实现MouseListener接中的方法。为一个空方法。
*/
public void mouseReleased(MouseEvent e)
{
}
/**
*实现MouseListener接中的方法。为一个空方法。
*/
public void mouseEntered(MouseEvent e)
{
}
/**
*实现MouseListener接中的方法。为一个空方法。
*/
public void mouseExited(MouseEvent e)
{
}
/**
*实现MouseListener接中的方法。为一个空方法。
*/
public void mouseClicked(MouseEvent e)
{
}
}
复制代码
作者:
怪学究
时间:
2015-4-5 23:30
代码好长啊,是蜘蛛纸牌那个烟花么?
作者:
lmcci
时间:
2015-4-6 21:59
不明觉厉、
作者:
缤纷落叶
时间:
2015-4-7 21:44
天好玩的............................
作者:
★W...
时间:
2015-4-8 11:43
路过看看
作者:
jiandonn
时间:
2015-4-8 15:11
路过看看
作者:
oyy123
时间:
2015-4-8 20:24
见识了,不错的点子。
作者:
毛守锐
时间:
2015-4-8 21:23
我还是再学几个月,再过来看吧
作者:
阳阳得意
时间:
2015-4-8 21:35
大神的世界屌丝目前不懂
作者:
屠赞华
时间:
2015-4-9 00:27
头好晕 真的晕了
作者:
野马奔腾
时间:
2015-4-9 11:09
不明觉厉
作者:
巴塞罗那的凌晨
时间:
2015-4-19 18:26
怪学究 发表于 2015-4-5 23:30
代码好长啊,是蜘蛛纸牌那个烟花么?
不是的 你可以复制代码去玩玩。
作者:
怪学究
时间:
2015-4-20 21:19
好久才出现一个,我一定能编一个比你更好的 哼
作者:
东升神起
时间:
2015-4-21 18:20
路过看看
作者:
ljd19930325
时间:
2015-4-22 21:12
真流弊,我现在才学到强化for循环
作者:
落魄逗比
时间:
2015-5-8 21:24
厉害!!!!!
作者:
夕阳的刻痕
时间:
2015-5-8 22:11
感觉好高端啊!!完全看不懂
作者:
cody
时间:
2015-5-10 20:29
求结果。。。。。。。。。
作者:
碎裂的空格键
时间:
2015-5-10 20:49
我这个水平,没看懂。。。。。。
作者:
long-long
时间:
2015-5-12 10:12
不明觉厉呢呵呵
作者:
791008594
时间:
2015-5-26 22:18
?
作者:
刘鹏伟
时间:
2015-5-28 22:24
赞赞赞
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2