背景音乐的添加

  • 背景音乐的添加
    • [1. 创建音乐类](#1. 创建音乐类)
    • [2. 音乐类的代码](#2. 音乐类的代码)

背景音乐的添加


学习于bilibili 尚学堂官方

1. 创建音乐类


在model中创建Music类

创建一个文件夹lib存放jar包

创建文件夹存放背景音乐

将背景音乐和jar包放入其中

点击文件(F)->项目构建->模块->依赖-> + ->JARs or ...->选择jar包->勾选

2. 音乐类的代码


java 复制代码
package com.zy.model;

/*
背景音乐
 */


import javazoom.jl.decoder.JavaLayerException;
import javazoom.jl.player.Player;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;

public class Music {
    public void music() throws FileNotFoundException, JavaLayerException {
        //获取当前音乐地址
        String str = System.getProperty("user.dir") + "/music/music.mp3";
        BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(str));


        Player player = new Player(bufferedInputStream);
        player.play();


    }
}

在TestRenderMap中

java 复制代码
package com.zy.test;

/*
测试渲染一个地图类
 */

import com.zy.model.*;
import com.zy.util.LayerUtil;
import com.zy.util.MapUtil;
import javazoom.jl.decoder.JavaLayerException;

import javax.swing.*;
import java.io.FileNotFoundException;
import java.util.List;

public class TestRenderMap extends JFrame {

    public static Map map = MapUtil.build(3);
    public TestRenderMap() throws FileNotFoundException, JavaLayerException {
        //初始化窗口
        init();

        //渲染图层
       List<Layer> list = map.getList();
        for (int i = 0; i < list.size(); i++) {
            renderLayer(list.get(i));
        }

        map.compareAll();//游戏开始时判定置灰


        //自动刷新
        autoRefresh();

        new Music().music();
    }

    private void renderLayer(Layer layer){
        //渲染图层
        //默认坐标是(0,0)
        //布局方式  默认swing 添加组件 提供了多种布局方式  网格 流
        Cell[][] cells = layer.getCells();
        for (int row = 0; row < cells.length; row++) {
            for (int col = 0; col < cells[row].length; col++) {
                Brand brands1 = cells[row][col].getBrand();

                int x = col * 50 + layer.getOffsetx();//0 50 100 150 ...
                int y = row * 50 + layer.getOffsety();//0 50 100 ...
                brands1.setBounds(x,y,50,50);


                this.getContentPane().add(brands1);
            }
            System.out.println();
        }
    }

    private void init(){
        this.setTitle("易-java-羊了个羊");//设置弹出游戏窗口的标题
        this.setSize(450,800);//设置窗口大小

        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭的同时也推出java进程


        //设置绝对布局
        this.setLayout(null);
        this.setBounds(0,0,450,800);

        this.setLocationRelativeTo(null);//居中
        this.setVisible(true);//让窗口显示 默认隐藏
    }
    //线程
    private void autoRefresh(){

        JFrame start = this;

        new Thread(new Runnable() {
            @Override
            public void run() {
                //用来刷新
                while (true){
                    start.repaint();//调用的还是当前窗口的repaint
                    try {
                        Thread.sleep(40);
                        start.setVisible(true);
                    } catch (InterruptedException e) {
                        throw new RuntimeException(e);
                    }

                }
            }
        }).start();
    }



    public static void main(String[] args) throws FileNotFoundException, JavaLayerException {
        new TestRenderMap();
    }
}
相关推荐
都叫我大帅哥34 分钟前
深入浅出 Resilience4j:Java 微服务的“免疫系统”实战指南
java·spring cloud
Andy杨43 分钟前
20250718-5-Kubernetes 调度-Pod对象:重启策略+健康检查_笔记
笔记·容器·kubernetes
Cao_Shixin攻城狮3 小时前
Flutter运行Android项目时显示java版本不兼容(Unsupported class file major version 65)的处理
android·java·flutter
Dcs5 小时前
还在用 Arrays.hashCode?Java 自己也能写出更快的版本!
java
杭州杭州杭州6 小时前
Python笔记
开发语言·笔记·python
fouryears_234177 小时前
Spring,Spring Boot 和 Spring MVC 的关系以及区别
java·spring boot·spring·mvc
阿葱(聪)8 小时前
java 在k8s中的部署流程
java·开发语言·docker·kubernetes
浮生带你学Java8 小时前
2025Java面试题及答案整理( 2025年 7 月最新版,持续更新)
java·开发语言·数据库·面试·职场和发展
板板正8 小时前
SpringAI——提示词(Prompt)、提示词模板(PromptTemplate)
java·spring boot·ai·prompt