云龙开炮版飞机大战(Java+JavaSwing+关卡+技能物品+宠物+商店界面+可切换音乐界面)


前言

     基于Java Swing,以飞机大战为原形,以抗日电视剧《亮剑》中的“李云龙”为主题,
     实现菜单、选关、难度、等级、技能、商店等功能

更多项目:

1、大鱼吃小鱼小游戏(Java版含源代码,JavaSwing+多线程+接口)

2、Java之马里奥游戏

3、魔塔小游戏Java版项目含源代码

4、贪吃蛇游戏项目(Java版含源代码)

5、飞机大战Java版(Java+JavaSwing+多线程结构)


👉项目完整源码获取👈


🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈
 
🍂个人博客首页: KJ.JK
 
欢迎大家点赞👍收藏💖评论💬关注🔒
 
💖源码获取 | 💻学习交流 | 🤝商务合作 | 💨私信作者


一、主界面展示


请添加图片描述


请添加图片描述


二、游戏演示效果

请添加图片描述


三、部分关卡、商店代码展示


⭐游戏工具类⭐

package main.java.com.wave.game;

import main.java.com.wave.game.Object.*;

import java.awt.*;
import java.util.ArrayList;
import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * <p>
 * Author: Wave&&KJ.JK
 * <p>
 * Date: 2021/11/18/9:35
 * <p>
 * Description: 游戏工具类,公共调用图片、路径、集合、音效
 */

public class GameUtils {
    // Keypoint 图片定义
    // 封面图片
    public static Image coverImg = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/cover.jpg"));
    // 背景图片
    public static Image bgImg = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/background.jpg"));
    // 程序图标
    public static Image icon = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/王有胜.png"));

    // 游戏暂停图片
    public static Image gamePauseImg = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/gamePause.png"));
    // 游戏失败图片
    public static Image gameFailureImg = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/gameFailure.png"));
    // 游戏胜利图片
    public static Image gameVictoryImg = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/gameVictory.png"));

    // 飞机图片
    public static Image planeImg = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/plane1.png"));
    public static Image planeImg2 = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/plane2.png"));
    public static Image planeImg3 = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/plane3.png"));
    // 敌机图片
    public static Image enemy1Img = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/1/enemy1.png"));
    public static Image enemy2Img = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/2/enemy2.png"));
    public static Image enemy3Img = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/3/enemy3.png"));
    public static Image enemy4Img = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/3/enemy4.png"));

    // boss图片
    public static Image bossImg = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/1/boss1.png"));
    public static Image bossImg2 = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/2/boss2.gif"));
    public static Image bossImg3 = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/2/boss3.png"));
    public static Image bossImg4 = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/3/boss4.png"));
    public static Image bossImg5 = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/3/boss5.png"));
    // boss出现预警
    public static Image warning = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/warning.png"));

    // 飞机子弹图片
    public static Image planeShellImg = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/planeShell1.png"));
    public static Image planeShellImg2 = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/planeShell2.png"));
    public static Image planeShellImg3 = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/planeShell3.png"));
    public static Image planeShellImg4 = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/planeShell4.png"));
    public static Image planeShellImg5 = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/planeShell5.png"));

    // 敌机子弹图片
    public static Image enemyShellImg = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/1/enemyShell1.png"));
    public static Image enemyShellImg2 = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/2/enemyShell2.png"));
    public static Image enemyShellImg3 = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/2/enemyShell3.png"));
    public static Image enemyShellImg4 = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/3/enemyShell4.png"));
    public static Image enemyShellImg5 = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/3/enemyShell5.png"));

    // 技能图片
    public static Image skillImg1 = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/skill/skill1.png"));
    public static Image skillImg3 = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/skill/skill3.png"));
    public static Image skillImg4 = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/skill/skill4.png"));
    public static Image skillImg5 = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/skill/skill5.png"));
    public static Image skillImg6 = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/skill/skill6.png"));
    public static Image skillImg7 = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/skill/skill7.png"));
    public static Image skillImg8 = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/skill/skill8.png"));
    public static Image skillImg9 = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/skill/skill9.png"));

    // 礼物
    public static Image giftImg1 = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/gift/gift1.png"));
    public static Image giftImg2 = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/gift/gift2.png"));

    // 商店图片
    public static Image commodityImg1 = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/Mythical_Animals/MA1.png"));
    public static Image commodityImg2 = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/Mythical_Animals/MA2.png"));
    public static Image commodityImg3 = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/Mythical_Animals/MA3.png"));
    public static Image commodityImg4 = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/Mythical_Animals/E1.png"));
    public static Image commodityImg5 = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/Mythical_Animals/E2.png"));

    // Keypoint 按钮图片
    public static Image button_start = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/button/开始游戏.png"));
    public static Image button_select = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/button/下一首.png"));
    public static Image button_exit = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/button/退出.png"));
    public static Image button_selection = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/button/选择关卡_难度.png"));
    public static Image button_explain = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/button/信息按钮.png"));
    public static Image button_selection_plane = Toolkit.getDefaultToolkit().getImage(GameUtils.class.getClassLoader().getResource("images/button/选择战机.png"));

    // Keypoint 爆炸图片path
    public static String explode = "images/explode/e";
    public static String skill2 = "images/explode/skill2_";
    public static String level = "images/explode/level_";

    // Keypoint 集合定义
    private static final int CAPACITY_SIZE = 10000;
    // 所有游戏对象集合
    public static List<GameObject> gameObjList = new ArrayList<>(CAPACITY_SIZE);
    // 战机子弹集合
    public static List<PlaneShell> planeShellList = new ArrayList<>();
    // 敌机子弹集合
    public static List<EnemyShell> enemyShellList = new ArrayList<>();
    // 要删除元素集合
    public static List<GameObject> removeList = new ArrayList<>(CAPACITY_SIZE);
    // 战机技能集合
    public static List<Skill> skillList = new ArrayList<>();
    // 敌机集合
    public static List<Enemy> enemyList = new ArrayList<>();
    // 动态爆炸集合
    public static List<Explode> explodeList = new ArrayList<>();
    // 动态技能二集合
    public static List<Explode2> explodeList2 = new ArrayList<>();
    // 动态升级集合
    public static List<Explode3> explodeList3 = new ArrayList<>();
    // 礼物集合
    public static List<Gift> giftList = new ArrayList<>();
    public static List<Gift2> giftList2 = new ArrayList<>();

    // Keypoint 音效
    // 初始界面
    public static String run_no1 = "music/1/亮剑.wav"; // 初始界面及第一游戏背景音乐
    public static String run_no2 = "music/1/开炮.wav"; // 开始按钮

    // 第一关
    public static String run_no3 = "music/1/日本人.wav"; // 第一关第一个boss出现
    public static String run_no4 = "music/1/注意啦节省子弹.wav"; // boss死亡

    // 第二关
    public static String run2_no1 = "music/2/无人机群.wav"; // 第二关叠加背景音效
    public static String run2_no2 = "music/2/全体上刺刀,准备进攻.wav"; // 第二关第一个boss出现
    public static String run2_no3 = "music/2/冲锋.wav"; // 第二关第二个boss出现
    public static String run2_no4 = "music/2/狼走千里吃肉,狗走千里吃屎.wav"; // boss死亡1
    public static String run2_no5 = "music/2/哈哈哈,老天爷帮忙啊.wav"; // boss死亡2

    // 第三关
    public static String run3_no1 = "music/3/什么精锐,老子打的就是精锐.wav"; // boss死亡1
    public static String run3_no3 = "music/3/小鬼子拼刺刀.wav"; // boss出场1
    public static String run3_no4 = "music/3/意大利开炮.wav"; // boss出场2

    // 技能
    public static String skill_no1 = "music/skill/鹰啼.wav";
    public static String skill_no2 = "music/skill/雷电火卷.wav";
    public static String skill_no3 = "music/skill/雷刃.wav";
    public static String skill_no4 = "music/skill/黑洞.wav";
    public static String skill_no5 = "music/skill/星耀光环.wav";
    public static String skill_no6 = "music/skill/火星球.wav";
    public static String skill_no7 = "music/skill/火龙卷.wav";
    public static String skill_no8 = "music/skill/恢复.wav";
    public static String skill_no9 = "music/skill/蓄气.wav";
    // 45678 嘴炮技能
    public static String skill_no10 = "music/skill/4567/过瘾.wav";
    public static String skill_no11 = "music/skill/4567/日你仙人.wav";
    public static String skill_no12 = "music/skill/4567/我倒要看看这帮日本猪知不知道疼.wav";
    public static String skill_no13 = "music/skill/4567/要乌龟王八蛋.wav";
    public static String skill_no14 = "music/skill/4567/警报.wav";

    // 基础
    public static String basic_no1 = "music/basic/飞机爆炸.wav";
    public static String basic_no2 = "music/basic/升级.wav";
    public static String basic_no3 = "music/basic/礼物1.wav"; // 加蓝礼物
    public static String basic_no4 = "music/basic/礼物2.wav"; // 随机技能礼物
    public static String basic_no5 = "music/basic/枪林弹雨.wav"; // 背景配乐2
    public static String basic_no6 = "music/basic/受伤.wav"; // 背景配乐2
    public static String basic_no7 = "music/basic/没出息.wav"; // 失败
    public static String basic_no8 = "music/basic/你他娘的还真是个天才.wav"; // 胜利
    public static String basic_no9 = "music/basic/你猜旅长怎么说x花田错.wav"; // 切歌
    public static String basic_no10 = "music/basic/按钮声.wav"; // 按钮
    public static String basic_no11 = "music/basic/选择按钮音效.wav"; // 选择按钮音效
    public static String basic_no12 = "music/basic/boss出现预警.wav"; // boss出现预警
}

🔥系列热门专栏🔥:
 
《JavaEE进阶序列 | 从小白到工程师》系列文章
 
《JavaEE项目实战》系列文章
 
《JavaSwing项目合集》系列文章


⭐游戏面板类⭐

package main.java.com.wave.game;

import main.java.com.wave.game.Object.Plane;

import javax.swing.*;
import java.awt.*;

/**
 * Created with IntelliJ IDEA.
 * <p>
 * Author:  Wave&&KJ.JK
 * <p>
 * Date: 2021/12/10/18:44
 * <p>
 * Description: 选择飞机弹窗类
 */

public class Popup_SelectPlane extends JFrame {

    public Popup_SelectPlane() {
        new Sound(GameUtils.basic_no11).start();
        init();
    }

    public void init() {
        // 说明
        JLabel jLabel = new JLabel("选择战机:");
        jLabel.setFont(new Font("acetone-family", Font.BOLD, 15));
        jLabel.setBounds(10, 10, 200, 20);

        // 标签文字
        JRadioButton option1 = new JRadioButton("胜利飞燕1号", true);
        JRadioButton option2 = new JRadioButton("胜利飞燕2号");
        JRadioButton option3 = new JRadioButton("新四高达战士");
        option1.setBounds(45, 40, 132, 20);
        option2.setBounds(230, 40, 120, 20);
        option3.setBounds(415, 40, 120, 20);

        // 单选
        ButtonGroup group = new ButtonGroup();
        group.add(option1);
        group.add(option2);
        group.add(option3);

        // 标签图片
        JLabel commodity1 = new JLabel(new ImageIcon(GameUtils.planeImg));
        JLabel commodity2 = new JLabel(new ImageIcon(GameUtils.planeImg2));
        JLabel commodity3 = new JLabel(new ImageIcon(GameUtils.planeImg3));
        commodity1.setBounds(45, 80, 120, 140);
        commodity2.setBounds(235, 80, 120, 140);
        commodity3.setBounds(405, 80, 120, 140);

        // 确定按钮
        JPanel jPanel = new JPanel();
        JButton button = new JButton("确定");
        button.setFont(new Font("acetone-family", Font.BOLD, 20));
        jPanel.setLayout(null);
        button.setBounds(245, 220, 90, 50);
        jPanel.add(button);
        jPanel.setVisible(true);

        // 将组件添加进面板
        this.add(jLabel);
        this.add(option1);
        this.add(option2);
        this.add(option3);
        this.add(commodity1);
        this.add(commodity2);
        this.add(commodity3);
        this.add(jPanel);

        // 面板设置
        this.setTitle("云龙机场");
        this.setVisible(true);
        this.setResizable(false);
        this.setSize(590, 320);
        this.setLocationRelativeTo(null);
        this.repaint();

        // 监听
        button.addActionListener(e -> {
            if (option1.isSelected()) {
                Plane.plane_number = 1;
                GamePanel.plane_create = true;
                System.out.println("选择:胜利飞燕1号");
            } else if (option2.isSelected()) {
                Plane.plane_number = 2;
                GamePanel.plane_create = true;
                System.out.println("选择:胜利飞燕2号");
            } else if (option3.isSelected()) {
                Plane.plane_number = 3;
                GamePanel.plane_create = true;
                System.out.println("选择:新四高达战士");
            }
            new Sound(GameUtils.basic_no10).start();
            // 提示弹窗
            JOptionPane.showMessageDialog(null, "选择成功! 准备战斗!!!", "云龙机场温馨提醒", JOptionPane.INFORMATION_MESSAGE);
            this.dispose();
        });
    }
}

请添加图片描述


请添加图片描述


请添加图片描述


请添加图片描述


⭐商店类⭐

package main.java.com.wave.game;

import main.java.com.wave.game.Object.MAnimals;
import main.java.com.wave.game.Object.Plane;

import javax.swing.*;
import java.awt.*;

/**
 * Created with IntelliJ IDEA.
 * <p>
 * Author:  Wave&&KJ.JK
 * <p>
 * Date: 2021/12/06/21:34
 * <p>
 * Description: 商店类
 */

public class Popup_Shop extends JFrame {
    boolean buy = false;
    int price1 = 500, price2 = 799, price3 = 888, price4 = 800, price5 = 800;

    public Popup_Shop() {
        new Sound(GameUtils.basic_no11).start();
        init();
    }

    public void init() {
        // 说明
        JLabel jLabel = new JLabel("选择购买商品:");
        jLabel.setFont(new Font("acetone-family", Font.BOLD, 15));
        jLabel.setBounds(10, 10, 200, 20);

        JLabel jLabel2 = new JLabel("-------------------- 当前金币数:" + Plane.goldNumber + "  --------------------");
        jLabel2.setFont(new Font("acetone-family", Font.BOLD, 15));
        jLabel2.setBounds(130, 150, 800, 20);

        // 标签文字
        JRadioButton option1 = new JRadioButton("吞天紫金貂(" + price1 + "$)");
        JRadioButton option2 = new JRadioButton("九幽冥凤(" + price2 + "$)");
        JRadioButton option3 = new JRadioButton("太虚古龙(" + price3 + "$)");
        JRadioButton option4 = new JRadioButton("血量+1(" + price4 + "$)");
        JRadioButton option5 = new JRadioButton("技能+1(" + price5 + "$)");
        option1.setBounds(5, 40, 132, 20);
        option2.setBounds(140, 40, 120, 20);
        option3.setBounds(265, 40, 120, 20);
        option4.setBounds(385, 40, 120, 20);
        option5.setBounds(505, 40, 120, 20);

        // 单选
        ButtonGroup group = new ButtonGroup();
        group.add(option1);
        group.add(option2);
        group.add(option3);
        group.add(option4);
        group.add(option5);

        // 标签图片
        JLabel commodity1 = new JLabel(new ImageIcon(GameUtils.commodityImg1));
        JLabel commodity2 = new JLabel(new ImageIcon(GameUtils.commodityImg2));
        JLabel commodity3 = new JLabel(new ImageIcon(GameUtils.commodityImg3));
        JLabel commodity4 = new JLabel(new ImageIcon(GameUtils.commodityImg4));
        JLabel commodity5 = new JLabel(new ImageIcon(GameUtils.commodityImg5));
        commodity1.setBounds(45, 80, 63, 63);
        commodity2.setBounds(165, 80, 63, 63);
        commodity3.setBounds(285, 80, 63, 63);
        commodity4.setBounds(405, 80, 63, 63);
        commodity5.setBounds(525, 80, 63, 63);

        // 购买按钮
        JPanel jPanel = new JPanel();
        JButton button = new JButton("购买");
        button.setFont(new Font("acetone-family", Font.BOLD, 20));
        jPanel.setLayout(null);
        button.setBounds(255, 180, 90, 50);
        jPanel.add(button);
        jPanel.setVisible(true);

        // 将组件添加进面板
        this.add(jLabel);
        this.add(jLabel2);
        this.add(option1);
        this.add(option2);
        this.add(option3);
        this.add(option4);
        this.add(option5);
        this.add(commodity1);
        this.add(commodity2);
        this.add(commodity3);
        this.add(commodity4);
        this.add(commodity5);
        this.add(jPanel);

        // 面板设置
        this.setTitle("超级神秘商店");
        this.setVisible(true);
        this.setResizable(false);
        this.setSize(630, 280);
        this.setLocationRelativeTo(null);
        this.repaint();

        // 监听
        button.addActionListener(e -> {
            if (option1.isSelected() && Plane.goldNumber >= price1) {
                buy = true;
                if (!GamePanel.MAExist) {
                    Plane.goldNumber -= price1;
                    MAnimals.MAnimalsNumber = 1;
                    GamePanel.MAAppear = true;
                    System.out.println("购买:吞天紫金貂(" + price1 + "$)");
                }
            } else if (option2.isSelected() && Plane.goldNumber >= price2) {
                buy = true;
                if (!GamePanel.MAExist) {
                    Plane.goldNumber -= price2;
                    MAnimals.MAnimalsNumber = 2;
                    GamePanel.MAAppear = true;
                    System.out.println("购买:九幽冥凤(" + price2 + "$)");
                }
            } else if (option3.isSelected() && Plane.goldNumber >= price3) {
                buy = true;
                if (!GamePanel.MAExist) {
                    Plane.goldNumber -= price3;
                    MAnimals.MAnimalsNumber = 3;
                    GamePanel.MAAppear = true;
                    System.out.println("购买:太虚古龙(" + price3 + "$)");
                }
            } else if (option4.isSelected() && Plane.goldNumber >= price4) {
                buy = true;
                Plane.goldNumber -= price4;
                Plane.record_plane_life += 5;
                Plane.plane_life += 100;
                System.out.println("购买:(" + price4 + "$)");
            } else if (option5.isSelected() && Plane.goldNumber >= price5) {
                buy = true;
                Plane.goldNumber -= price5;
                Plane.record_plane_skill += 5;
                Plane.plane_skill += 100;
                System.out.println("购买:技能+1(" + price5 + "$)");
            }
            new Sound(GameUtils.basic_no10).start();

            // 提示弹窗
            boolean select = (option1.isSelected() || option2.isSelected() || option3.isSelected() || option4.isSelected() || option5.isSelected());

            if (!select) {
                JOptionPane.showMessageDialog(null, "请选择所需商品!", "超级神秘商店温馨提醒", JOptionPane.WARNING_MESSAGE);
            } else if (!buy) {
                JOptionPane.showMessageDialog(null, "兄弟,金币不足啊!", "超级神秘商店温馨提醒", JOptionPane.ERROR_MESSAGE);
            } else if ((option1.isSelected() || option2.isSelected() || option3.isSelected()) && GamePanel.MAExist) {
                JOptionPane.showMessageDialog(null, "已存在一只神兽,不可贪多哦~", "超级神秘商店温馨提醒", JOptionPane.ERROR_MESSAGE);
            } else {
                JOptionPane.showMessageDialog(null, "购买成功!!" + "剩余金币:" + Plane.goldNumber, "超级神秘商店温馨提醒", JOptionPane.INFORMATION_MESSAGE);
                this.dispose();
            }
        });
    }
}


请添加图片描述


⭐音乐类⭐

package main.java.com.wave.game;

import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import java.io.File;
import java.util.Objects;

/**
 * Created with IntelliJ IDEA.
 * <p>
 * Author:  Wave&&KJ.JK
 * <p>
 * Date: 2021/11/26/17:44
 * <p>
 * Description:音效类
 **/

public class Sound {
    private Clip clip;
    AudioInputStream audio;
//    File file;

    /**
     * 打开声音文件
     */
    public Sound(String path) {
        try {
            audio = AudioSystem.getAudioInputStream(Objects.requireNonNull(Sound.class.getClassLoader().getResource(path)));
//            file = new File(path);
//            audio = AudioSystem.getAudioInputStream(file);
            clip = AudioSystem.getClip();
            clip.open(audio);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 停止播放
     */
    public void stop() {
        clip.stop();
    }

    /**
     * 开始播放
     */
    public void start() {
        clip.start();
    }

    /**
     * 循环播放
     */
    public void loop() {
        clip.loop(clip.LOOP_CONTINUOUSLY);
    }
}



⭐项目图片⭐

在这里插入图片描述


作者:KJ.JK

评论 35
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

KJ.JK

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

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

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

打赏作者

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

抵扣说明:

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

余额充值