text3

GitHub地址https://github.com/gaodejian/gaodejian/blob/master/firework

 

 

课题研究的目的和意义

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)

  {

  }

实验结果如下 ,成功。

 

问题及心得:

  做得不是很熟练,平常应多练习。

 

posted @ 2015-05-16 19:24  Wr_gao  阅读(202)  评论(4编辑  收藏  举报