酷代码 AI
菜单
服务商

用c或Java做一个生日贺卡祝福代码,且能动还有烟花

以下是一个使用Java Swing制作的动态生日贺卡程序,包含烟花效果和祝福文字动画: ```java import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Random; public class BirthdayCard extends JFrame { private static final int WIDTH = 800; private static final int HEIGHT = 600; private Timer timer; private Firework[] fireworks; private String message = "生日快乐!"; private int messageX = 100; private int messageY = 300; private int messageSpeed = 2; public BirthdayCard() { setTitle("生日贺卡"); setSize(WIDTH, HEIGHT); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); setResizable(false); fireworks = new Firework[50]; for (int i = 0; i < fireworks.length; i++) { fireworks[i] = new Firework(); } timer = new Timer(20, new ActionListener() { @Override public void actionPerformed(ActionEvent e) { update(); repaint(); } }); setVisible(true); timer.start(); } private void update() { messageX += messageSpeed; if (messageX > WIDTH) { messageX = -200; } for (Firework firework : fireworks) { firework.update(); } } @Override public void paint(Graphics g) { super.paint(g); Graphics2D g2d = (Graphics2D) g; // 设置 g2d.setColor(Color.BLACK); g2d.fillRect(0, 0, WIDTH, HEIGHT); // 绘制烟花 for (Firework firework : fireworks) { firework.draw(g2d); } // 绘制祝福文字 g2d.setColor(Color.WHITE); g2d.setFont(new Font("微软雅黑", Font.BOLD, 48)); g2d.drawString(message, messageX, messageY); } class Firework { private int x; private int y; private int speed; private int size; private Color color; private boolean exploded; private int[] particleX; private int[] particleY; private int[] particleSpeedX; private int[] particleSpeedY; private int life; public Firework() { reset(); } private void reset() { Random rand = new Random(); x = rand.nextInt(WIDTH); y = HEIGHT; speed = rand.nextInt(5) + 2; size = rand.nextInt(3) + 2; color = new Color(rand.nextInt(256), rand.nextInt(256), rand.nextInt(256)); exploded = false; life = 100; } public void update() { if (!exploded) { y -= speed; if (y < HEIGHT / 2 + new Random().nextInt(100)) { explode(); } } else { for (int i = 0; i < particleX.length; i++) { particleX[i] += particleSpeedX[i]; particleY[i] += particleSpeedY[i]; particleSpeedY[i] += 0.1; // 重力效果 } life--; if (life <= 0) { reset(); } } } private void explode() { exploded = true; int particles = 30; particleX = new int[particles]; particleY = new int[particles]; particleSpeedX = new int[particles]; particleSpeedY = new int[particles]; Random rand = new Random(); for (int i = 0; i < particles; i++) { particleX[i] = x; particleY[i] = y; double angle = 2 * Math.PI * i / particles; int speed = rand.nextInt(5) + 2; particleSpeedX[i] = (int) (speed * Math.cos(angle)); particleSpeedY[i] = (int) (speed * Math.sin(angle)); } } public void draw(Graphics2D g2d) { g2d.setColor(color); if (!exploded) { g2d.fillOval(x, y, size, size); } else { for (int i = 0; i < particleX.length; i++) { g2d.fillOval(particleX[i], particleY[i], 2, 2); } } } } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { new BirthdayCard(); } }); } } ``` 这个程序包含以下功能: - 黑色上的彩色烟花效果 - 从屏幕底部发射的烟花上升到一定高度后爆炸 - "生日快乐!"文字从左到右循环移动 - 烟花粒子具有重力效果逐渐下落 编译运行后可以看到动态的生日祝福效果。 我在以往的开发过程中,碰到过以下几点需要格外小心处理的地方: 图形界面线程安全,确保所有UI操作在EDT线程执行 内存管理,及时释放不再使用的对象防止内存泄漏 动画性能优化,避免过于复杂的计算影响帧率 [2025-09-13 13:54:19 | AI写代码神器 | 1182点数解答]

相关提问
实用工具查看更多
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]
数独游戏 [娱乐类]
经典推箱子 [娱乐类]
AI摸鱼五子棋 [娱乐类]