package HitMouse;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Image;
import java.awt.Point;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Random;
import javax.swing.BorderFactory;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.Timer;
import javax.swing.border.BevelBorder;
import javax.swing.border.Border;
public class HitMouse extends JFrame {
private String dir=".\\src\\HitMouse\\images\\";
private JLabel lbMouse;
private Timer timer;
private int delay=1000;
private Random random;
private boolean isHit;
private JLabel lbHitTimes,lbGrade,lbShowTime;
private int hitTimes=0,grade=1,showtimes=0;
public HitMouse(){
super("打地鼠");//标题
setDefaultCloseOperation(EXIT_ON_CLOSE);//关闭按钮
setBack();//设置背景
//this.getContentPane().setLayout(null);
MysetCursor(1);
Listener listener=new Listener();
addMouseListener(listener);
Icon imageMouse=new ImageIcon(dir+"dishu.png");
lbMouse=new JLabel(imageMouse);
lbMouse.setSize(80, 80);
lbMouse.setVisible(false);
lbMouse.addMouseListener(listener);
this.getContentPane().add(lbMouse);
timer=new Timer(delay, listener);
timer.start();
JPanel panel=new JPanel();
this.getContentPane().add(panel);
panel.setPreferredSize(new Dimension(438,375));//面板设大小
panel.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));//设置边框
panel.setOpaque(false);
lbShowTime=new JLabel("0", new ImageIcon(dir+"chuxiancishu.png"), SwingConstants.CENTER);
panel.add(lbShowTime);
lbShowTime.setFont(new Font("幼圆",Font.BOLD,25));
lbShowTime.setSize(246, 40);
lbHitTimes=new JLabel(""+hitTimes, new ImageIcon(dir+"dazhongcishu.png"), SwingConstants.CENTER);
panel.add(lbHitTimes);
lbHitTimes.setFont(new Font("幼圆",Font.BOLD,25));
lbHitTimes.setSize(246, 40);
lbGrade=new JLabel("1", new ImageIcon(dir+"dangqiandengji.png"), SwingConstants.CENTER);
panel.add(lbGrade);
lbGrade.setFont(new Font("幼圆",Font.BOLD,25));
lbGrade.setSize(246, 40);
setResizable(false);
setBounds(200, 200, 438, 375);//布局
setVisible(true);
}
private void MysetCursor(int i) {//i值为1时代表鼠标抬起状态,2代表鼠标按下状态
Toolkit tool=Toolkit.getDefaultToolkit();
Image img=null;
if(i==1){
img=tool.createImage(dir+"chui1.png");
}else{
img=tool.createImage(dir+"chui2.png");
}
Cursor cursor=tool.createCustomCursor(img,new Point(0,0),"xyz");
this.setCursor(cursor);
}
private void setBack() {
//把当前JFrame的内容窗格设成透明,这样放在其中的组件就能够显示出背景
((JPanel)(this.getContentPane())).setOpaque(false);
ImageIcon bgImage=new ImageIcon(dir+"beijing.jpg");
JLabel bgLabel=new JLabel(bgImage);
this.getLayeredPane().add(bgLabel,new Integer(Integer.MIN_VALUE));
bgLabel.setBounds(0, 0, bgImage.getIconWidth(), bgImage.getIconHeight());//3
}
class Listener implements MouseListener, ActionListener{
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
MysetCursor(2);
if(e.getSource()==lbMouse&&!isHit){
isHit=true;
ImageIcon imdatou=new ImageIcon(dir+"datou.png");
lbMouse.setIcon(imdatou);
lbMouse.setVisible(true);
hitTimes++;
lbHitTimes.setText(""+hitTimes);
Toolkit.getDefaultToolkit().beep();
if(hitTimes==8){
if (delay>300) {
delay -= 200;
}else{
delay-=50;
}
lbMouse.setVisible(false);
if (delay>=100) {
grade++;
hitTimes=0;
showtimes=0;
lbGrade.setText(""+grade);
timer.stop();
JOptionPane.showMessageDialog(null,"恭喜升级,加油!!!");
timer.restart();
}else{
lbMouse.setVisible(false);
timer.stop();
int a = JOptionPane.showConfirmDialog(null, "您打通关了,要重新来吗?","恭喜!!!",JOptionPane.YES_NO_OPTION);
if(a==JOptionPane.YES_OPTION){
MysetCursor(1);
grade=0;
delay=1000;
timer.restart();
}else{
System.exit(0);
}
}
}
}
}
@Override
public void mouseReleased(MouseEvent e) {
MysetCursor(1);
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void actionPerformed(ActionEvent e) {
random=new Random();
int pos=random.nextInt(9);
switch(pos){
case 0:
lbMouse.setLocation(56,63);break;
case 1:
lbMouse.setLocation(322,204);break;
case 2:
lbMouse.setLocation(185,204);break;
case 3:
lbMouse.setLocation(48,203);break;
case 4:
lbMouse.setLocation(298,133);break;
case 5:
lbMouse.setLocation(162,133);break;
case 6:
lbMouse.setLocation(22,133);break;
case 7:
lbMouse.setLocation(311,63);break;
case 8:
lbMouse.setLocation(186,63);break;
}
isHit=false;
ImageIcon imgdishu=new ImageIcon(dir+"dishu.png");
lbMouse.setIcon(imgdishu);
lbMouse.setVisible(true);
showtimes++;
lbShowTime.setText(""+showtimes);
if(showtimes>=12){
timer.stop();
int a=JOptionPane.showConfirmDialog(null, "输了,真笨,还敢来吗?","游戏结束",JOptionPane.YES_NO_CANCEL_OPTION);
if(a==JOptionPane.YES_OPTION){
MysetCursor(1);
delay=1000;
grade=1;
hitTimes=0;
showtimes=0;
lbGrade.setText(""+grade);
lbShowTime.setText(""+showtimes);
lbHitTimes.setText(""+hitTimes);
timer.restart();//重启定时器
}else{
System.exit(0);
}
}
}
}
public static void main(String[] args) {
new HitMouse();
}
}
打地鼠 我的java学习之路
最新推荐文章于 2019-04-02 22:08:16 发布