黑马程序员技术交流社区

标题: 模拟放烟花 [打印本页]

作者: 巴塞罗那的凌晨    时间: 2015-4-5 21:09
标题: 模拟放烟花

  1. import java.awt.*;
  2. import java.applet.*;
  3. import java.awt.event.*;
  4. import javax.swing.*;

  5. public class Fireworks extends Applet implements MouseListener,Runnable
  6. {
  7. int x,y;
  8. int top,point;

  9. /**
  10. *对小程序进行变量和颜色的初始化。
  11. */
  12. public void init()
  13. {
  14. x = 0;
  15. y = 0;
  16. //设置背景色为黑色
  17. setBackground(Color.black);
  18. addMouseListener(this);
  19. }

  20. public void paint(Graphics g)
  21. {

  22. }

  23. /**
  24. *使该程序可以作为应用程序运行。
  25. */
  26. public static void main(String args[]) {
  27. Fireworks applet = new Fireworks();
  28. JFrame frame = new JFrame("TextAreaNew");
  29. frame.addWindowListener(new WindowAdapter() {
  30. public void windowClosing(WindowEvent e){
  31. System.exit(0);
  32. }
  33. });
  34. frame.getContentPane().add(
  35. applet, BorderLayout.CENTER);
  36. frame.setSize(800,400);
  37. applet.init();
  38. applet.start();
  39. frame.setVisible(true);
  40. }

  41. /**
  42. *程序主线程,对一个烟花进行绘制。
  43. */
  44. public void run()
  45. {
  46. //变量初始化
  47. Graphics g1;
  48. g1 = getGraphics();
  49. int y_move,y_click,x_click;
  50. int v;
  51. x_click = x;
  52. y_click = y;
  53. y_move = 400;
  54. v = 3;
  55. int r,g,b;

  56. while(y_move > y_click)
  57. {
  58. g1.setColor(Color.black);
  59. g1.fillOval(x_click,y_move,5,5);
  60. y_move -= 5;
  61. r = (((int)Math.round(Math.random()*4321))%200)+55;
  62. g = (((int)Math.round(Math.random()*4321))%200)+55;
  63. b = (((int)Math.round(Math.random()*4321))%200)+55;
  64. g1.setColor(new Color(r,g,b));
  65. g1.fillOval(x_click,y_move,5,5);
  66. for(int j = 0 ;j<=10;j++)
  67. {
  68. if(r>55) r -= 20;
  69. if(g>55) g -= 20;
  70. if(b>55) b -=20;
  71. g1.setColor(new Color(r,g,b));
  72. g1.fillOval(x_click,y_move+j*5,5,5);
  73. }
  74. g1.setColor(Color.black);
  75. g1.fillOval(x_click,y_move+5*10,5,5);

  76. try
  77. {
  78. Thread.currentThread().sleep(v++);
  79. } catch (InterruptedException e) {}
  80. }

  81. for(int j=12;j>=0;j--)
  82. {
  83. g1.setColor(Color.black);
  84. g1.fillOval(x_click,y_move+(j*5),5,5);
  85. try
  86. {
  87. Thread.currentThread().sleep((v++)/3);
  88. } catch (InterruptedException e) {}
  89. }

  90. y_move = 400;
  91. g1.setColor(Color.black);
  92. while(y_move > y_click)
  93. {
  94. g1.fillOval(x_click-2,y_move,9,5);
  95. y_move -= 5;
  96. }

  97. v = 15;
  98. for(int i=0;i<=25;i++)
  99. {
  100. r = (((int)Math.round(Math.random()*4321))%200)+55;
  101. g = (((int)Math.round(Math.random()*4321))%200)+55;
  102. b = (((int)Math.round(Math.random()*4321))%200)+55;
  103. g1.setColor(new Color(r,g,b));
  104. g1.drawOval(x_click-3*i,y_click-3*i,6*i,6*i);
  105. if(i<23)
  106. {
  107. g1.drawOval(x_click-3*(i+1),y_click-3*(i+1),6*(i+1),6*(i+1));
  108. g1.drawOval(x_click-3*(i+2),y_click-3*(i+2),6*(i+2),6*(i+2));
  109. }
  110. try
  111. {
  112. Thread.currentThread().sleep(v++);
  113. } catch (InterruptedException e) {}
  114. g1.setColor(Color.black);
  115. g1.drawOval(x_click-3*i,y_click-3*i,6*i,6*i);

  116. }

  117. }

  118. /**
  119. *对鼠标事件进行监听。
  120. *临听其鼠标按下事件。
  121. *当按下鼠标时,产生一个新线程。
  122. */
  123. public void mousePressed(MouseEvent e)
  124. {
  125. x = e.getX();
  126. y = e.getY();
  127. Thread one;
  128. one = new Thread(this);
  129. one.start();
  130. one = null;
  131. }
  132. /**
  133. *实现MouseListener接中的方法。为一个空方法。
  134. */
  135. public void mouseReleased(MouseEvent e)
  136. {
  137. }
  138. /**
  139. *实现MouseListener接中的方法。为一个空方法。
  140. */
  141. public void mouseEntered(MouseEvent e)
  142. {
  143. }
  144. /**
  145. *实现MouseListener接中的方法。为一个空方法。
  146. */
  147. public void mouseExited(MouseEvent e)
  148. {
  149. }
  150. /**
  151. *实现MouseListener接中的方法。为一个空方法。
  152. */
  153. public void mouseClicked(MouseEvent e)
  154. {
  155. }

  156. }
复制代码

作者: 怪学究    时间: 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