博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
text3
阅读量:5025 次
发布时间:2019-06-12

本文共 3689 字,大约阅读时间需要 12 分钟。

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)

  {

  }

实验结果如下 ,成功。

 

问题及心得:

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

 

转载于:https://www.cnblogs.com/gaogaogao/p/4508447.html

你可能感兴趣的文章
T-SQL查询进阶--深入浅出视图
查看>>
MapKeyboard 键盘按键映射 机械革命S1 Pro-02
查看>>
Android读取url图片保存及文件读取
查看>>
完整ASP.Net Excel导入
查看>>
判断CPU大小端示例代码
查看>>
ARTS打卡第13周
查看>>
循环队列的运用---求K阶斐波那契序列
查看>>
pta 编程题14 Huffman Codes
查看>>
初始化bootstrap treeview树节点
查看>>
python selenium向<sapn>标签中写入内容
查看>>
JS常用坐标
查看>>
使用”结构化的思考方式“来编码和使用”流程化的思考方式“来编码,孰优孰劣?...
查看>>
C#调用斑马打印机打印条码标签(支持COM、LPT、USB、TCP连接方式和ZPL、EPL、CPCL指令)【转】...
查看>>
关于git的认证方式
查看>>
字符串按照字典序排列
查看>>
IOS 开发调用打电话,发短信
查看>>
CI 框架中的日志处理 以及 404异常处理
查看>>
keepalived介绍
查看>>
css3 标签 background-size
查看>>
python itertools
查看>>