Java实现贪吃蛇(汪汪队)游戏,自定义游戏背景音乐,背景图片和游戏图标

主要功能:


(1)游戏插图,游戏背景图片和背景音乐的插入;

(2)自动移动,移动速度随长度增加,游戏得分,死亡判断;

(3)游戏的开始,暂停和退出.

目录

1,Date类:

2,backMusic类

3,Main类:

4,GamePanel类:


游戏运行结果如下图:

程序目录

1,Date类:

作用:  连接文件夹,将图片转化为图标,方便于放入面板上绘制游戏界面.

实现:  class.getResource(String path)方法.

package com.company;

import javax.swing.*;
import java.net.URL;

//数据类
public class Date {
    //汪汪队的头部
    public static URL upURL = Date.class.getResource("/游戏界面图/领队.jpeg");
    public static ImageIcon up = new ImageIcon(upURL);
    public static URL downURL = Date.class.getResource("/游戏界面图/领队.jpeg");
    public static ImageIcon down = new ImageIcon(downURL);
    public static URL leftURL = Date.class.getResource("/游戏界面图/领队.jpeg");
    public static ImageIcon left = new ImageIcon(leftURL);
    public static URL rightURL = Date.class.getResource("/游戏界面图/领队.jpeg");
    public static ImageIcon right = new ImageIcon(rightURL);
    //身体
    public static URL bodyURL = Date.class.getResource("/游戏界面图/队员.jpg");
    public static ImageIcon body = new ImageIcon(bodyURL);
    //食物
    public static URL foodURL = Date.class.getResource("/游戏界面图/队员.jpg");
    public static ImageIcon food = new ImageIcon(foodURL);
    //背景图片
    public static URL backURL = Date.class.getResource("/游戏界面图/back.jpg");
    public static ImageIcon back = new ImageIcon(backURL);
}

2,backMusic类

作用:  添加游戏音乐(暂停的同时会暂停游戏,懒得改bug了,就让音乐常开了)

import javax.sound.sampled.*;
import java.io.File;
public class backMusic {
    static void playMusic() {// 背景音乐播放
        try {
            AudioInputStream ais = AudioSystem.getAudioInputStream(new File("G:/SanDiskSecureAccess/贪食蛇/src/游戏音乐/Wake1.wav"));    //绝对路径
            AudioFormat aif = ais.getFormat();
            final SourceDataLine sdl;
            DataLine.Info info = new DataLine.Info(SourceDataLine.class, aif);
            sdl = (SourceDataLine) AudioSystem.getLine(info);
            sdl.open(aif);
            sdl.start();
            FloatControl fc = (FloatControl) sdl.getControl(FloatControl.Type.MASTER_GAIN);
            // value可以用来设置音量,从0-2.0
            double value = 2;
            float dB = (float) (Math.log(value == 0.0 ? 0.0001 : value) / Math.log(10.0) * 20.0);
            fc.setValue(dB);
            int nByte = 0;
            final int SIZE = 1024 * 64;
            byte[] buffer = new byte[SIZE];
            while (nByte != -1) {
                nByte = ais.read(buffer, 0, SIZE);
                sdl.write(buffer, 0, nByte);
            }
            sdl.stop();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

3,Main类:

作用:  设计游戏窗口,并在游戏窗口添加一个画板;

实现:  实验JFrame类创建游戏窗口,利用add方法添加一个GamePanel类对象.

public class Main {

    public static void main(String[] args) {
        JFrame frame = new JFrame("汪汪队");//游戏名
        frame.setSize(800,600);//窗口大小
        frame.setLocationRelativeTo(null);//显示屏幕中央
        frame.setResizable(false);//固定屏幕
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭指令
        GamePanel gamePanel = new GamePanel();
        frame.add(gamePanel);//添加画板
        //backMusic.playMusic();//播放背景音乐
        frame.setVisible(true);
	// write your code here
    }
}

4,GamePanel类:

作用:  实现游戏的动态页面;

(1)init()方法:初始化队伍位置;

(2)  eat()方法

  • 6
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值