java之雪花飘落效果的实现(撩妹小程序)

 

  1. 第一章:程序的思路分析
    1. 1.思路分析

程序采用面向对象的思想,包含主程序,面板类和雪花类。

主程序用来生成窗口,存放面板等作用。

面板类用来存放背景图片,存放生成的雪花对象,定时去刷新雪花的位置,形成雪花飘落的效果。

雪花类用来生成雪花对象,提供雪花移动的方法。

  1. 第二章:程序的代码实现
    1. 1. 准备工作

打开idea开发工具,把bg.png、bg2.png、bg3.png和snow.png图片拷贝到src目录下。

创建cn.tx.utils和cn.tx.domain的包结构。

把FrameUtils.java拷贝到utils包中。

把XueHua.java和MyJpanel.java拷贝到domain包中。

创建cn.tx.main包,创建MyFrame类,开始编写程序。

  1. 2. 代码实现

编写主程序,主要是生成窗口、面板和设置背景图片。

package cn.tx.main;
​
import cn.tx.domain.MyJpanel;
import cn.tx.utils.FrameUtils;
​
import javax.swing.*;
​
/**
 * 作者:樱木老师
 */
public class Demo1 {
    
    public static void main(String[] args) {
        // 创建窗口对象
        JFrame frame = new JFrame("我超喜欢你的");
        // 初始化大小和显示位置
        FrameUtils.init(frame,1000,700);
        // 创建面板对象
        MyJpanel jpanel = new MyJpanel(frame);
        // 切换背景图片
        String [] bgs = {"bg.png","bg2.png","bg3.png"};
        // 设置背景图片
        jpanel.changebg(jpanel,bgs);
        // 添加
        frame.add(jpanel);
        // 启动线程,执行动画效果
        new Thread(jpanel).start();
        // 开启新的线程,播放背景音乐
        new Thread(new MyMusic()).start();
        // 显示
        frame.setVisible(true);
    }
​
}

 

  1. 3. 可以添加背景音乐

把xxx.mp3的背景音乐拷贝到src目录下

在项目中导入jl1.0.jar(播放音乐需要使用的jar包)

把MusicUtils.java工具类拷贝到cn.tx.utils包中

编写播放音乐的类(也是使用线程的方式)

package cn.tx.main;
​
import cn.tx.utils.MusicUtils;
​
/**
 * 作者:樱木老师
 */
public class MyMusic implements Runnable {
    
    @Override
    public void run() {
        // 播放音乐
        MusicUtils.play(MyMusic.class.getResourceAsStream("/qt.mp3"));
    }
​
}

 修改主函数,启动线程,加入播放背景音乐的代码

 

package cn.tx.main;
​
import cn.tx.domain.MyJpanel;
import cn.tx.utils.FrameUtils;
​
import javax.swing.*;
​
/**
 * 作者:樱木老师
 */
public class Demo1 {
​
    public static void main(String[] args) {
        // 创建窗口对象
        JFrame frame = new JFrame("撩妹");
        // 初始化大小和显示位置
        FrameUtils.init(frame,1000,700);
        // 创建面板对象
        MyJpanel jpanel = new MyJpanel(frame);
        // 添加
        frame.add(jpanel);
        // 启动线程,执行动画效果
        new Thread(jpanel).start();
        // 开启新的线程,播放背景音乐
        new Thread(new MyMusic()).start();
        // 显示
        frame.setVisible(true);
    }
​
}

 

根据本人多年从业以及学习经验,录制了一套最新的Java精讲视频教程,如果你现在也在学习Java,在入门学习Java的过程当中缺乏系统的学习教程,你可以加群654631948领取下学习资料,面试题,开发工具等,群里有资深java老师做答疑,每天也会有基础部分及架构的直播课,也可以加我的微信renlliang2013做深入沟通,只要是真心想学习Java的人都欢迎。

 

java基础教程:https://ke.qq.com/course/149432?tuin=57912c43


Java分布式互联网架构/微服务/高性能/springboot/springcloud:

https://ke.qq.com/course/179440?tuin=57912c43

以下是Java实现雪花飘落效果的完整源码: ``` import java.awt.Color; import java.awt.Graphics; import java.awt.Point; import java.util.ArrayList; import java.util.Random; import javax.swing.JFrame; import javax.swing.JPanel; public class Snowfall extends JPanel implements Runnable { private static final int WIDTH = 800; private static final int HEIGHT = 600; private static final int NUM_OF_SNOWFLAKES = 100; private static final int DELAY = 25; private ArrayList<Snowflake> snowflakes; public Snowfall() { snowflakes = new ArrayList<>(); Random rand = new Random(); for (int i = 0; i < NUM_OF_SNOWFLAKES; i++) { int x = rand.nextInt(WIDTH); int y = rand.nextInt(HEIGHT); int speed = rand.nextInt(5) + 1; snowflakes.add(new Snowflake(x, y, speed)); } } @Override public void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(Color.WHITE); for (Snowflake s : snowflakes) { g.fillOval(s.getX(), s.getY(), 5, 5); } } @Override public void run() { while (true) { for (Snowflake s : snowflakes) { s.move(); } repaint(); try { Thread.sleep(DELAY); } catch (InterruptedException ex) { ex.printStackTrace(); } } } private class Snowflake { private int x; private int y; private int speed; public Snowflake(int x, int y, int speed) { this.x = x; this.y = y; this.speed = speed; } public int getX() { return x; } public int getY() { return y; } public void move() { Random rand = new Random(); int newX = x - speed + rand.nextInt(3); int newY = y + speed + rand.nextInt(3); if (newX < 0 || newX > WIDTH || newY > HEIGHT) { newX = rand.nextInt(WIDTH); newY = rand.nextInt(HEIGHT / 4); } x = newX; y = newY; } } public static void main(String[] args) { JFrame frame = new JFrame("Snowfall"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(WIDTH, HEIGHT); Snowfall snowfall = new Snowfall(); frame.add(snowfall); frame.setVisible(true); new Thread(snowfall).start(); } } ``` 运行这个程序,你将会看到一个简单的窗口,其中有100个雪花飘落。在这个程序中,我们首先在构造函数中创建一些雪花对象,这些对象具有随机的位置和速度。然后,在重绘方法中,我们遍历所有的雪花对象,并绘制它们。在运行方法中,我们不断移动每个雪花对象,并重新绘制窗口。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

renlianggee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值