package com.zyf.ui;
import zyf.test.time;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.FloatControl;
import javax.swing.*;
import javax.swing.border.BevelBorder;
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class GameJFrame extends JFrame implements KeyListener,ActionListener, MouseListener
{
int code;//键盘监听
static String load="A7";//音乐路径
static Clip clip;
int data[][]=new int[4][4];//创建一个二维数组
//获取空白方块的坐标
int x = 0;
int y = 0;
String path = "image\\animal\\animal3\\"; //定义一个变量,记录当前展示图片的路径
//定义一个二维数组
int win [][]= {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 0}};
int step = 0; //定义变量用来统计步数
int a=201-step;// 剩余步数
//窗口菜单
JMenuItem replayItem = new JMenuItem("重新游戏");
JMenuItem reLoginItem = new JMenuItem("重新登录");
JMenuItem closeItem = new JMenuItem("关闭游戏");
JMenuItem girl = new JMenuItem("美女");
JMenuItem animal = new JMenuItem("动物");
JMenuItem sport = new JMenuItem("运动");
//公众号条目
JMenuItem accountItem = new JMenuItem("公众号");
//提示条目
JMenuItem allphotos = new JMenuItem("A键提示");
JMenuItem gamewin = new JMenuItem("作弊模式(W)");
//计时器难度条目
JMenuItem Time = new JMenuItem("开启计时器");
// 音乐条目
JMenuItem startMusic = new JMenuItem("播放音乐");
JMenuItem stopMusic = new JMenuItem("暂停播放");
JMenuItem changeMusic = new JMenuItem("更换音乐");
//增加难度条目
JMenuItem countdown=new JMenuItem("限定步数");
boolean start_step = false;
JLabel tie=new JLabel("剩余步数:"+a);//创建一个标签
public GameJFrame()
{
initJFrame(); //初始化界面
initJMenuBar(); //初始化菜单
initData(); //打乱二维数组中的数据
initImage();//根据打乱之后的结果去加载图片
this.setVisible(true);//让界面显示出来
}
//音乐播放
public static void playMusic()
{
try
{
File musicPath = new File(load+".wav");//Java.to包
if (musicPath.exists())//判断文件是否存在
{
/**
* AudioInputStream读取声音档案
*/
AudioInputStream audioInput = AudioSystem.getAudioInputStream(musicPath);
clip = AudioSystem.getClip();
clip.open(audioInput);
//控制音量大小
FloatControl gainControl = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN);
gainControl.setValue(0.60f);//设置音量范围
clip.start();
clip.loop(Clip.LOOP_CONTINUOUSLY);//循环播放
}
else
{
System.out.println("音乐不存在");
}
}
catch (Exception ex)
{
System.out.println("异常");
}
}
//打乱数据
private void initData()
{
int tempArr[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
//打乱数组中的数据的顺序
Random r = new Random();//生成随机数
for (int i = 0; i < tempArr.length; i++)
{
int x = r.nextInt(tempArr.length);//随机获取数组下标
int temp = tempArr[i];
tempArr[i] = tempArr[x];
tempArr[x] = temp;
}
//给二维数组添加数据
for (int i = 0; i < tempArr.length; i++)
{
if (tempArr[i] == 0)//获取空白图片的坐标
{
x = i / 4;
y = i % 4;
}
data[i / 4][i % 4] = tempArr[i];
}
}
//添加图片
private void initImage()
{
this.getContentPane().removeAll();//清空原本已经出现的所有图片
if(a==0&&!victory())
{
JLabel overJlabel=new JLabel(new ImageIcon("image\\c.png"));
overJlabel.setBounds(115,200,400,200);//设置图片的大小以及位置
this.getContentPane().add(overJlabel);//用getContentPane()方法获得JFrame的内容面板,再对其加入组件
}
if (victory())//显示胜利的图标
{
JLabel winJLabel = new JLabel(new ImageIcon("image\\win.png"));
winJLabel.setBounds(203, 283, 197, 73);
this.getContentPane().add(winJLabel);
}
//增加难度
JLabel tim=new JLabel("总步数:"+201);
tim.setBounds(420,20,100,20);
this.getContentPane().add(tim);
tie.setBounds(420,40,100,20);
this.getContentPane().add(tie);
//步数
JLabel stepCount = new JLabel("步数:" + step);
stepCount.setBounds(50, 30, 100, 20);
this.getContentPane().add(stepCount);
//根据二维数组添加图片
for (int i = 0; i < 4; i++)//四行,每行四张图片
{
for (int j = 0; j < 4; j++)
{
int num = data[i][j];//获取当前要加载图片的序号
/* ImageIcon icon=new ImageIcon();//创建一个图片ImageIcon对象
JLabel jLabel=new JLabel("image\\login\\用户名.png"(icon);//创建一个JLabel对象
this.add(jLabel);//将管理容器添加到界面中*/
JLabel jLabel = new JLabel(new ImageIcon(path + num + ".jpg")); //创建一个JLabel的对象(管理容器)
jLabel.setBounds(105 * j + 83, 105 * i + 134, 105, 105);//指定图片位置
jLabel.setBorder(new BevelBorder(BevelBorder.LOWERED));//给图片添加边框凹斜切边界
this.getContentPane().add(jLabel); //把管理容器添加到界面中
}
}
//添加背景图片
JLabel background = new JLabel(new ImageIcon("image\\background.png"));
background.setBounds(40, 40, 508, 560);
this.getContentPane().add(background);//把背景图片添加到界面当中
this.getContentPane().repaint();//重画图形,刷新界面
}
private void initJMenuBar()
{
JMenuBar jMenuBar = new JMenuBar();//创建菜单栏
JMenu functionJMenu = new JMenu("功能");
JMenu music = new JMenu("音乐");
JMenu key = new JMenu("提示");
JMenu difficulty= new JMenu("增加难度");
JMenu aboutJMenu = new JMenu("关于我们");
JMenu diffculty = new JMenu("计时功能");
JMenu change = new JMenu("更换图片");
//将每一个选项下面的条目添加到对应的选项中
//功能
functionJMenu.add(change);// 更换图片
functionJMenu.add(replayItem);//重新游戏
functionJMenu.add(reLoginItem);//重新登录
functionJMenu.add(closeItem);//关闭游戏
//功能下更换图片下的条目
change.add(girl);
change.add(animal);
change.add(sport);
//计时器下的条目
diffculty.add(Time);//限定步数
//提示
key.add(allphotos);//展示完整照片
key.add(gamewin);//快速通关
//关于我们
aboutJMenu.add(accountItem);//公众号
//音乐
music.add(startMusic);//开始播放
music.add(stopMusic);//暂停
music.add(changeMusic);//更换音乐
//增加难度
difficulty.add(countdown);//限定�
没有合适的资源?快使用搜索试试~ 我知道了~
Java拼图小游戏,并且具有音乐播放功能
共592个文件
jpg:528个
png:22个
java:13个
需积分: 5 0 下载量 40 浏览量
2023-12-28
18:58:12
上传
评论
收藏 249.59MB ZIP 举报
温馨提示
游戏实现了的验证码的随机生成,计时,音乐播放,难度改变等功能,并且具有登录功能.注意游戏没有和数据库交互.如果需要将Java小游戏打包为exe文件,可以私信我.
资源推荐
资源详情
资源评论
收起资源包目录
Java拼图小游戏,并且具有音乐播放功能 (592个子文件)
GameJFrame.class 13KB
LoginJFramedd.class 7KB
CodeUtil.class 2KB
RegisterJFrame.class 2KB
time.class 2KB
DonTai.class 1KB
CaoZuo.class 1KB
User.class 872B
App.class 399B
music.class 274B
photostest.class 273B
.gitignore 50B
Javademo1.iml 433B
Javademo1.jar 18KB
GameJFrame.java 21KB
LoginJFramedd.java 9KB
time.java 3KB
music.java 3KB
RegisterJFrame.java 2KB
CodeUtil.java 1KB
yanzhengma.java 1KB
ifCode.java 827B
anniu.java 725B
User.java 721B
icontest.java 702B
photostest.java 303B
App.java 144B
all.jpg 399KB
all.jpg 328KB
all.jpg 319KB
all.jpg 253KB
all.jpg 240KB
all.jpg 238KB
all.jpg 231KB
all.jpg 211KB
all.jpg 203KB
all.jpg 200KB
all.jpg 200KB
all.jpg 197KB
all.jpg 193KB
all.jpg 173KB
all.jpg 167KB
all.jpg 152KB
all.jpg 149KB
all.jpg 148KB
all.jpg 143KB
all.jpg 139KB
all.jpg 134KB
all.jpg 133KB
all.jpg 127KB
all.jpg 126KB
all.jpg 125KB
all.jpg 123KB
all.jpg 122KB
all.jpg 120KB
all.jpg 118KB
all.jpg 113KB
all.jpg 103KB
about.jpg 40KB
10.jpg 23KB
7.jpg 23KB
12.jpg 23KB
11.jpg 23KB
16.jpg 23KB
7.jpg 23KB
14.jpg 23KB
8.jpg 23KB
9.jpg 23KB
10.jpg 23KB
4.jpg 22KB
13.jpg 22KB
9.jpg 22KB
6.jpg 22KB
5.jpg 22KB
1.jpg 22KB
12.jpg 22KB
11.jpg 22KB
11.jpg 22KB
15.jpg 21KB
3.jpg 21KB
15.jpg 21KB
2.jpg 21KB
3.jpg 21KB
16.jpg 21KB
6.jpg 20KB
15.jpg 20KB
10.jpg 20KB
2.jpg 19KB
16.jpg 19KB
14.jpg 19KB
10.jpg 19KB
5.jpg 19KB
11.jpg 19KB
4.jpg 19KB
14.jpg 18KB
6.jpg 18KB
12.jpg 18KB
8.jpg 18KB
6.jpg 18KB
10.jpg 18KB
共 592 条
- 1
- 2
- 3
- 4
- 5
- 6
资源评论
楚钧艾克
- 粉丝: 232
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功