package com.briup.demo.xiangmu;
import java.applet.Applet;
import java.applet.AudioClip;
import java.awt.BorderLayout;
import java.awt.Cursor;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.Point;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.net.URI;
import java.net.URL;
import java.util.Random;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.Timer;
/**
* 打地鼠
*
* @author dell
*
*/
public class PlayMouse implements ActionListener{
File f;
URI uri;
URL url;
// Music(){
// bgMusic();
// }
public void Music(){
try {
f = new File("D:\\java\\CoreJava\\src\\Luv Letter.wav");
uri = f.toURI();
url = uri.toURL(); //解析地址
AudioClip aau;
aau = Applet.newAudioClip(url);
aau.loop(); //循环播放
} catch (Exception e)
{ e.printStackTrace();
}
}
//构建容器
private JFrame jframe;
//构建面板
private JPanel northPanel,centerPanel;
//构建下拉框,选择游戏等级
private JComboBox<String> box;
//构建四个标签,分别用来显示时间和分数
private JLabel timeLable,timeValue,centLable,centValue;
//构建开始按钮
private JButton startBtn;
//构建JButton数组,保存九个按钮
private JButton[] btns;
//构建老鼠洞、老鼠图片
private ImageIcon mouseImg,holeImg;
//构建定时器控制老鼠出现的频率和时间定时器
private Timer mouseTimer,timer;
//记录老鼠上一次出现的位置
private int lastIndex;
//设置游戏等级 高级--100 中级-400 低级-900
private int level;
//判断是否加过分
private boolean flag;
//初始化JFrame
public PlayMouse() {
//1.创建容器
jframe = new JFrame("打地鼠");
//2.创建面板
northPanel = new JPanel();
centerPanel = new JPanel();
//3.面板设置布局管理器
centerPanel.setLayout(new GridLayout(3, 3));
//4.创建组件
box = new JComboBox<>(new String[] {"初级","中级","高级"});
//下拉框绑定点击事件
box.addActionListener(this);
timeLable = new JLabel("time:");
timeValue = new JLabel("10");
centLable = new JLabel("cent:");
centValue = new JLabel("0");
startBtn = new JButton("开始");
level = 900;
//创建老鼠频率定时器
mouseTimer = new Timer(level,this);
//创建时间倒数定时器
timer = new Timer(1000,this);
//标识此时老鼠未加分
flag = false;
//点击开始按钮,游戏开始
startBtn.addActionListener(this);
btns = new JButton[9];
mouseImg = new ImageIcon("src/mouse.png");
holeImg = new ImageIcon("src/hole.png");
for(int i=0;i<btns.length;i++) {
btns[i] = new JButton();
//给按钮添加背景图为老鼠洞
btns[i].setIcon(holeImg);
//禁用九个按钮
btns[i].setEnabled(false);
//创建好的九个按钮添加到centerPanel
centerPanel.add(btns[i]);
//给按钮绑定点击事件
btns[i].addActionListener(this);
}
//5.添加组件到面板
northPanel.add(box);
northPanel.add(timeLable);
northPanel.add(timeValue);
northPanel.add(centLable);
northPanel.add(centValue);
northPanel.add(startBtn);
//6.添加面板到容器
jframe.add(northPanel,BorderLayout.NORTH);
jframe.add(centerPanel,BorderLayout.CENTER);
//7.设置容器的大小
jframe.setSize(400,600);
//8.设置容器窗口不可变
jframe.setResizable(false);
//9.设置容器居中
jframe.setLocationRelativeTo(null);
//10.设置容器的可见性
jframe.setVisible(true);
//11.设置关闭窗口
jframe.setDefaultCloseOperation(3);
}
public static void main(String[] args) {
new PlayMouse();
new Music();
}
@Override
public void actionPerformed(ActionEvent e) {
//获取事件源
Object obj = e.getSource();
//用户点击开始按钮
if(obj == startBtn) {
//清除上一局老鼠
btns[lastIndex].setIcon(holeImg);
//随机产生新老鼠
Random random = new Random();
int index = random.nextInt(btns.length);
//新老鼠
flag = false;
//记录第一次老鼠出现的位置
lastIndex = index;
btns[index].setIcon(mouseImg);
//启动老鼠定时器
mouseTimer.start();
//启动时间定时器
timer.start();
//重置游戏时长以及分数
timeValue.setText("10");
centValue.setText("0");
//禁用开始按钮
startBtn.setEnabled(false);
//禁用级别选项的下拉框
box.setEnabled(false);
//启用九个按钮
setBtnsEnable(true);
}else if(obj == mouseTimer) {
//定时器开启
//将上一个老鼠出现的位置设置为老鼠洞
btns[lastIndex].setIcon(holeImg);
//每间隔1s随机产生一个老鼠
Random random = new Random();
int index = random.nextInt(btns.length);
//新老鼠
flag = false;
//记录上一次老鼠出现的位置
lastIndex = index;
//将随机的洞设置为老鼠
btns[index].setIcon(mouseImg);
}else if(obj == timer) {
//开始时间定时器后执行
//获取时间值
int num = Integer.parseInt(timeValue.getText());
//判断时间值
if(num>0) {
//时间值大于0 时间倒数
num--;
timeValue.setText(num+"");
}else {
//时间值小于等于0 游戏停止
//关闭老鼠出现的定时器
mouseTimer.stop();
//关闭时间倒数定时器
timer.stop();
//启用开始按钮
startBtn.setEnabled(true);
//启用级别的下拉框
box.setEnabled(true);
//禁用九个按钮
setBtnsEnable(false);
}
}else if(obj == box) {
//获取选项值
String item = (String) box.getSelectedItem();
//判断级别--老鼠出现频率定时器
if("高级".equals(item)) {
level = 100;
}else if("中级".equals(item)) {
level = 400;
}else if("初级".equals(item)) {
level = 900;
}
mouseTimer = new Timer(level, this);
}else {
//点击九个按钮
for(int i=0;i<btns.length;i++) {
//判断是否点击了有老鼠的按钮并且点击老鼠未加过分flag=false
if(obj == btns[i] && btns[i].getIcon()==mouseImg&&!flag) {
//获取分数值
int score = Integer.parseInt(centValue.getText());
//打中老鼠后加一分
score++;
//表示该老鼠已经加过分
flag = true;
centValue.setText(score+"");
}
//鼠标的图标设置成锤子的图片
Toolkit kit = Toolkit.getDefaultToolkit();
Image image = kit.getImage("src/hammer1.png");
Cursor cursor = kit.createCustomCursor(image, new Point(10, 10), "stick");
//jframe.setCursor(cursor);
centerPanel.setCursor(cursor);
}
}
}
//开启或禁用九个按钮
public void setBtnsEnable(boolean b) {
for(int i=0;i<btns.length;i++) {
btns[i].setEnabled(b);
}
}
}
在这个代码中插入最高分板块怎么设置?
那你首先就要记录分数,然后在看你是要再数据库中做永久记录,还是在运行时当做一次性记录(相当于每次运行程序时,程序的记录是空的).
然后在比较最大就行