×

java烟花代码

java烟花代码(烟花的java程序)

admin admin 发表于2023-05-19 17:56:08 浏览35 评论0

抢沙发发表评论

本文目录

烟花的java程序


// Decompiled by DJ v2.9.9.60 Copyright 2000 Atanas Neshkov Date: 2003-1-8 9:49:09
// Home Page : http://members.fortunecity.com/neshkov/dj.html - Check often for new version!
// Decompiler options: packimports(3)
// Source File Name: jhanabi.java
import java.applet.Applet;
import java.applet.AudioClip;
import java.awt.*;
import java.awt.image.MemoryImageSource;
import java.util.Random;
public class jhanabi extends Applet
implements Runnable
{
public jhanabi()
{
m_mouseX = 0;
m_mouseY = 0;
m_sleepTime = 5;
isError = false;
isInitialized = false;
rand = new Random();
bits = 10000;
bit_px = new double[bits];
bit_py = new double[bits];
bit_vx = new double[bits];
bit_vy = new double[bits];
bit_sx = new int[bits];
bit_sy = new int[bits];
bit_l = new int[bits];
bit_f = new int[bits];
bit_p = new int[bits];
bit_c = new int[bits];
ru = 50;
rv = 50;
}
public void init()
{
String s = getParameter(“para_bits“);
if(s != null)
bits = Integer.parseInt(s);
s = getParameter(“para_max“);
if(s != null)
bit_max = Integer.parseInt(s);
s = getParameter(“para_blendx“);
if(s != null)
ru = Integer.parseInt(s);
s = getParameter(“para_blendy“);
if(s != null)
rv = Integer.parseInt(s);
s = getParameter(“para_sound“);
if(s != null)
bit_sound = Integer.parseInt(s);
m_nAppX = size().width;
m_nAppY = size().height;
m_centerX = m_nAppX / 2;
m_centerY = m_nAppY / 2;
m_mouseX = m_centerX;
m_mouseY = m_centerY;
resize(m_nAppX, m_nAppY);
pixls = m_nAppX * m_nAppY;
pixls2 = pixls - m_nAppX * 2;
pix0 = new int[pixls];
offImage = new MemoryImageSource(m_nAppX, m_nAppY, pix0, 0, m_nAppX);
offImage.setAnimated(true);
dbImg = createImage(offImage);
for(int i = 0; i 《 pixls; i++)
pix0[i] = 0xff000000;
sound1 = getAudioClip(getDocumentBase(), “firework.au“);
sound2 = getAudioClip(getDocumentBase(), “syu.au“);
for(int j = 0; j 《 bits; j++)
bit_f[j] = 0;
isInitialized = true;
start();
}
public void run()
{
while(!isInitialized)
try
{
Thread.sleep(200L);
}
catch(InterruptedException interruptedexception) { }
do
{
for(int j = 0; j 《 pixls2; j++)
{
int k = pix0[j];
int l = pix0[j + 1];
int i1 = pix0[j + m_nAppX];
int j1 = pix0[j + m_nAppX + 1];
int i = (k & 0xff0000) 》》 16;
int k1 = ((((l & 0xff0000) 》》 16) - i) * ru 》》 8) + i;
i = (k & 0xff00) 》》 8;
int l1 = ((((l & 0xff00) 》》 8) - i) * ru 》》 8) + i;
i = k & 0xff;
int i2 = (((l & 0xff) - i) * ru 》》 8) + i;
i = (i1 & 0xff0000) 》》 16;
int j2 = ((((j1 & 0xff0000) 》》 16) - i) * ru 》》 8) + i;
i = (i1 & 0xff00) 》》 8;
int k2 = ((((j1 & 0xff00) 》》 8) - i) * ru 》》 8) + i;
i = i1 & 0xff;
int l2 = (((j1 & 0xff) - i) * ru 》》 8) + i;
int i3 = ((j2 - k1) * rv 》》 8) + k1;
int j3 = ((k2 - l1) * rv 》》 8) + l1;
int k3 = ((l2 - i2) * rv 》》 8) + i2;
pix0[j] = i3 《《 16 | j3 《《 8 | k3 | 0xff000000;
}
rend();
offImage.newPixels(0, 0, m_nAppX, m_nAppY);
try
{
Thread.sleep(m_sleepTime);
}
catch(InterruptedException interruptedexception1) { }
} while(true);
}
public void update(Graphics g)
{
paint(g);
}
public void paint(Graphics g)
{
g.drawImage(dbImg, 0, 0, this);
}
public void start()
{
if(isError)
return;
isRunning = true;
if(runner == null)
{
runner = new Thread(this);
runner.start();
}
}
public void stop()
{
if(runner != null)
{
runner.stop();
runner = null;
}
}
public boolean mouseMove(Event event, int i, int j)
{
m_mouseX = i;
m_mouseY = j;
return true;
}
public boolean mouseDown(Event event, int i, int j)
{
m_mouseX = i;
m_mouseY = j;
int k = (int)(rand.nextDouble() * 256D);
int l = (int)(rand.nextDouble() * 256D);
int i1 = (int)(rand.nextDouble() * 256D);
int j1 = k 《《 16 | l 《《 8 | i1 | 0xff000000;
int k1 = 0;
for(int l1 = 0; l1 《 bits; l1++)
{
if(bit_f[l1] != 0)
continue;
bit_px[l1] = m_mouseX;
bit_py[l1] = m_mouseY;
double d = rand.nextDouble() * 6.2800000000000002D;
double d1 = rand.nextDouble();
bit_vx[l1] = Math.sin(d) * d1;
bit_vy[l1] = Math.cos(d) * d1;
bit_l[l1] = (int)(rand.nextDouble() * 100D) + 100;
bit_p[l1] = (int)(rand.nextDouble() * 3D);
bit_c[l1] = j1;
bit_sx[l1] = m_mouseX;
bit_sy[l1] = m_nAppY - 5;
bit_f[l1] = 2;
if(++k1 == bit_max)
break;
}
if(bit_sound 》 1)
sound2.play();
return true;
}
public boolean mouseExit(Event event, int i, int j)
{
m_mouseX = i;
m_mouseY = j;
return true;
}
void rend()
{
boolean flag = false;
boolean flag1 = false;
boolean flag2 = false;
for(int k = 0; k 《 bits; k++)
switch(bit_f[k])
{
default:
break;
case 1: // ’\001’
bit_vy[k] += rand.nextDouble() / 50D;
bit_px[k] += bit_vx[k];
bit_py[k] += bit_vy[k];
bit_l[k]--;
if(bit_l[k] == 0 || bit_px[k] 《 0.0D || bit_py[k] 《 0.0D || bit_px[k] 》 (double)m_nAppX || bit_py[k] 》 (double)(m_nAppY - 3))
{
bit_c[k] = 0xff000000;
bit_f[k] = 0;
} else
if(bit_p[k] == 0)
{
if((int)(rand.nextDouble() * 2D) == 0)
bit_set((int)bit_px[k], (int)bit_py[k], -1);
} else
{
bit_set((int)bit_px[k], (int)bit_py[k], bit_c[k]);
}
break;
case 2: // ’\002’
bit_sy[k] -= 5;
if((double)bit_sy[k] 《= bit_py[k])
{
bit_f[k] = 1;
flag2 = true;
}
if((int)(rand.nextDouble() * 20D) == 0)
{
int i = (int)(rand.nextDouble() * 2D);
int j = (int)(rand.nextDouble() * 5D);
bit_set(bit_sx[k] + i, bit_sy[k] + j, -1);
}
break;
}
if(flag2 && bit_sound 》 0)
sound1.play();
}
void bit_set(int i, int j, int k)
{
int l = i + j * m_nAppX;
pix0[l] = k;
}
private int m_nAppX;
private int m_nAppY;
private int m_centerX;
private int m_centerY;
private int m_mouseX;
private int m_mouseY;
private int m_sleepTime;
private boolean isError;
private boolean m_isPaintFinished;
boolean isRunning;
boolean isInitialized;
Thread runner;
int pix0;
MemoryImageSource offImage;
Image dbImg;
int pixls;
int pixls2;
Random rand;
int bits;
double bit_px;
double bit_py;
double bit_vx;
double bit_vy;
int bit_sx;
int bit_sy;
int bit_l;
int bit_f;
int bit_p;
int bit_c;
int bit_max;
int bit_sound;
int ru;
int rv;
AudioClip sound1;
AudioClip sound2;
}

谁能教我把这烟火动画弄下来


在电脑里保存的话只能保存网页~
QZONE的话不太清楚~本人还不会玩
这个放烟花的程序只能在网页上用
http://178.68ab.com/kuoo8yanhua.rar
这个地址可以下载那个网页~你可以自己编辑网页~里面的那个.class的就是放烟花的程序了~把它插进你的网页里就可以了

放烟花FLASH的


  舞台设置大小: 宽度随便设置,高度要在200以上:也可以在代码里修改代码第六行 var rect:Rectangle = new Rectangle(0, 0, Stage.width, 200); 这个200就是高度)
Stage.scaleMode = “noScale“;
import flash.display.BitmapData;
import flash.filters.ConvolutionFilter;
import flash.geom.Rectangle;
var con = new ConvolutionFilter(3, 3, [1, 1, 1, 1, 30, 1, 1, 1, 1], 38);
var rect:Rectangle = new Rectangle(0, 0, Stage.width, 200);
var bitmap1 = new BitmapData(rect.width, rect.height, false,0x00000000);
var bitmap2 = new BitmapData(rect.width, rect.height, true,0x00000000);
var bitmapShow1 = createEmptyMovieClip(“bitmapShow1“, 1).attachBitmap(bitmap1, 1);
//粒子的显示画布
var bitmapShow2 = createEmptyMovieClip(“bitmapShow2“, 2).attachBitmap(bitmap2, 2);
//白色闪光点的显示画布
var m_mouseX;//鼠标x坐标
var m_mouseY;//鼠标y坐标
var sound1 = new Sound();

编程求助:求两道题目的JAVA代码


可能你会觉得我在把问题变得复杂化,但是请看下去:
(请将代码中的````换成一个tab符)
首先我们定义一个异常类: UnExpectedNumberException
表示所接收到的数字是我们不想要的,类如,我们只对正数进行平方根处理,
但是传入的是一个负数,于是我们可以抛出这个异常
// UnExpectedNumberException.java
//package cn.plause.test.narcissus;
public final class UnExpectedNumberException extends Exception {
````private static final long serialVersionUID = 3080196113722623423L;
````private static final String MESSAGE_FMT = “Number should bigger than %s and smaller than %s“;
````public UnExpectedNumberException(int min, int max) {
````````super(String.format(MESSAGE_FMT, min, max));
````}
}
接下来,我们再定义一个接口:NumberAcceptor (你可以理解为数字接受器)
该接口只有一个方法:
public boolean accept(Integer number) /* throws UnExpectedNumberException */;
该方法接受一个参数Integer number,如果实现该接口的类认为
这个number是他需要的或者相信的或者什么其他的东西的话就会返回true,否则false.
// NumberAcceptor.java
//package cn.plause.test.narcissus;
public interface NumberAcceptor {
````public boolean accept(Integer number) /* throws UnExpectedNumberException */;
}
这个接口具有通用性,今天你可能使用它判断一个数是否是水仙花数,明天说不定会用它
来判断一个数是不是镜像数(3443就是一个镜像数)或者什么其它的数字。
下面我们回到重点,因为前面跟水仙花数的逻辑判断一点也没有搭上边。
我们知道,按照一般的逻辑就是这样
for (i = 100; i 《 1000; i++) {
````如果 i 是一个水仙花数则打印 i
}
而按照一般的判断一个水仙花数的逻辑就是这样的
i / 100 得到百位,
i % 100 / 10 得到十位,
i % 10 得到个位。
然后把这百、十、个位分别立方相加得到一个和,
再将这个和同 i 相比较,如果相等则是水仙花,否则不是。
其实我们还有另一种逻辑的:
一个数 153,如果把它看成是一个字符串的话就是 “153“,
字符串的第一个字符是 ’1’,第二个是 ’5’,第三个是 ’3’。
为什么不直接 1 * 3 + 5 * 3 + 3 * 3 呢?
可能你会说 ’1’ != 1,
那么 ’1’ - ’0’ 呢?!
’1’ 的ASC码是 31,’0’的ASC码是30,
显示有 ’1’ - ’0’ = 1, ’8’ - ’0’ = 8
所以我们可以直接 (’1’ - ’0’) * 3 + (’5’ - ’0’) * 3 + (’3’ - ’0’) * 3
注意,本人并不是想说明别人的算法是不正确的,只是想说清楚我的算法。
请看最重要的类:
(怕大家调试不方便,所以把异常去掉了)
// NarcissusNumber.java
//package cn.plause.test.narcissus;
public final class NarcissusNumber {
````/**
```` * 计算一个数字的每一位的立方和。
```` * 这个方法不只是能算出 3 位数的水仙花数。
```` */
````public static int pow(Integer number) {
````````String digits = number.toString();
````````int total = 0;
````````/*
```````` * 字符 ’9’ - ’0’ = 9, ’8’ - ’0’ = 8
```````` * 以此类推……
```````` */
````````for (int i = 0; i 《 digits.length(); i++) {
````````````total += (int) Math.pow(digits.charAt(i) - ’0’, 3);
````````}
````````return total;
````}
````public static void main(String args) {
````````/* 新建一个数字接受器对象 */
````````NumberAcceptor narcissusNA = new NumberAcceptor() {
````````````/* 实现NumberAcceptor接口中的accept方法 */
````````````public boolean accept(Integer number) /* throws UnExpectedNumberException */ {
````````````````// 三位数的水仙花数肯定是大于100小于1000的数
````````````````if (! (number 》 100 && number 《 1000)) {
````````````````````/* throw new UnExpectedNumberException(100, 1000); */
````````````````}
````````````````// 如果这个整数的每一位的立方和与其本身相等,则其是水仙花数
````````````````return pow(number) == number;
````````````}
````````};
````````// 你可以把这个循环的初始条件与结束条件更改以使本程序算出多位水仙花数
````````for (int i = 101; i 《 1000; i++) {
````````````// 如果是水仙花数,则打印这个整数
````````````if (narcissusNA.accept(i)) {
````````````````System.out.println(i);
````````````}
````````}
````}
}
希望不要嫌麻烦。
第二个: 个人所得税,这个没有什么扩展性,所以简单写了
public final class TaxUtils {
````public static double calculatePersonalTax(int wage) {
````````if (wage 《= 1000) { // 没有超过 1000 不用给钱
````````````return 0d;
````````}
````````int diff = wage - 1000;
````````// 不知道超过40000的怎么算
````````if (diff 》 40000) {
````````````return -1d;
````````}
````````if (diff 》 20000) { // 超出 20000
````````````return diff * 0.25d;
````````} else if (diff 》 5000) { // 超出 5000
````````````return diff * 0.20d;
````````} else if (diff 》 2000) { // 超出 2000
````````````return diff * 0.15d;
````````} else if (diff 》 500) { // 超出 500
````````````return diff * 0.10d;
````````} else { // 超出小于 500
````````````return diff * 0.05d;
````````}
````}
````public static void main(String args) {
````````System.out.println(calculatePersonalTax(30000));
````}
}

java烟花程序看不懂,求解释!


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.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);//画圆,圆点在点击的X轴,程序界面的最高点,长为5,宽为5
y_move -= 5;//最高点-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;//rgb是光的三原色,这个就是烟花产生的颜色,这里定义成随机的,但在一个范围里
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 = new Thread(this);//新建一个线程
one.start();//启动这个线程,到上面的run方法
one = null;//把这个线程置为空,让它执行完以后就释放
}

如果你想一下自己写要怎样写这个程序,就很容易理解这个程序了。

一直从下向上画圆,然后把下面的圆擦掉,就能得到一个向上升的烟花效果,

爆炸效果就是先画小圆再画大圆,然后擦掉小圆,再擦掉大圆。


百度上java烟花代码改成按类编写,改变其烟花消失方式,实现鼠标一点实现多个烟花绽放


喔哇,
都是啥子年代了,
还食古不化,
在触摸屏幕用手指划动而产生燃放烟花的虚拟图像效果,
早就被时代彻底底抛弃了!!
现在都是在空中一划,根据手势,根据手势的空间运动,
立即就是实际来真格的,
真实、震撼、空间大爆炸、场面骇人、惊天动地。
无接触,
摒弃虚拟的虚假玩意儿。
你吹一口气,
燃放装置就喷出一股火焰。
机械加工能力和基础强劲的,
产生1米边长见方立体焰火造型,
与产生100米见方焰火造型的设备是通用的。
你与情侣自拍“刷脸”就立即产生肖像燃放造型,
其详细的工程技术细节,
早就有中英文对照的文本,
照着去做就可以了,
无需操作机床加工的人员,
去“进一步研究思考”、去开展“创造性的工作”。

倾囊求助,快情人节了想送女友一段java程序


其实前面都很简单,只是我有个疑问...满屏幕的烟花是怎么做出来的,这个小程序最难的应该就是这里吧。比方说触发事件execl函数执行某个flv文件之类的?不过也做不出全屏幕效果啊