主要功能:
(1)游戏插图,游戏背景图片和背景音乐的插入;
(2)自动移动,移动速度随长度增加,游戏得分,死亡判断;
(3)游戏的开始,暂停和退出.
目录
游戏运行结果如下图:
程序目录
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()方法