课题研究的目的和意义
java 编程语言在编程方面的具体应用,以及使用面向对象方法,对小应用程序进行需求
分析、概要设计、详细设计,最后使用 Java 编程实现的全过程。
在编程我们使用的 java 语言,是目前比较流行的编程语言。在当今这个的时代,java 语言
在编程方面的优势使得编程有了更好的选择。Java 语言最大的特点是具有跨平台性,使其
不受平台不同的影响,得到了广泛的应用。
可行性论证
本例知识点
使用 Graphics 类
使用 Thread 类
使用 Math 类
使用 Color 类
新学
知识
已学
知识
一句话讲解
绘制烟花
管理线程
产生随机数
设置颜色
本例制作烟花,运行效果如图后所示。执行本例实例后,用鼠标点击浏览器中的面板,
将出现五彩缤纷的烟花效果。此课程设计的知识点有:鼠标事件的监听,Graphics 类和 Thread
类的应用。
课题总体设计方案
本例因为要模拟烟花效果,所以首先定义执行程序主线程的函数 run()对一个烟花进行绘
制。在函数 run()中定义 Graphics 类的对象,通过程序中的算法来绘制烟花。然后,因为
要实现烟花的缤纷闪烁效果,所以要通过 Thread 类的 Thread.currentThread().sleep()方
法使当前线程睡眠,让用户欣赏到当前的绘制效果。最后,因为要实现人机交互.,所以首
先要通过 mousePressed(MouseEvent e)函数来实现对鼠标事件的监听,这样当按下鼠标时,
产生一个新线程就可以看到一个新的烟花效果。
程序原代码:
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)
{
}
}
运行结果:
本实例代码编写完毕,存盘为:C: j2sdk1.4.0\javaprograms\ Fireworks.java。
打开计算机的命令提示符窗口,然后在命令提示符窗口中,定位到 javaprograms 目录,输
入 javac Fireworks.java 来编译程序,最后将程序加载到网页上。在 javaprograms 文件
夹下新建一个记事本文件,内容为