java界面编程学习笔记:打地鼠游戏

来源:互联网 发布:mac os x vmware 卡 编辑:程序博客网 时间:2024/06/05 03:09

1.简单打地鼠:

主要思路:设置好背景,开一个产生地鼠的线程,利用mouseClicked监听鼠标的点击,当鼠标单击地鼠时,地鼠隐藏。

代码:


package Chapter12;import java.awt.BorderLayout;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.util.Random;import javax.swing.ImageIcon;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;public class Demo1 extends JFrame{//打地鼠JLabel background;JLabel target[] = new JLabel[8];String location[] = {"235,670","420,750","530,838","530,560","550,630","800,750","720,520","850,630"};boolean isOk = false;JLabel lable,lable_1;JPanel imgPanel;//设置打中的次数int count = 0,NUM = 10, t = 0;public Demo10(){setTitle("打地鼠");setBounds(100, 100, 500, 500);setResizable(false);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);ImageIcon icon = new ImageIcon(getClass().getResource("background1.jpg"));background = new JLabel();background.setIcon(icon);background.setSize(icon.getIconWidth(), icon.getIconHeight());JPanel panel_1 = new JPanel();panel_1.setLayout(null);panel_1.setOpaque(false);getContentPane().add(background);final ImageIcon img = new ImageIcon(getClass().getResource("mouse.png"));    new Thread(new Runnable() {//设置游戏时间             @Overridepublic void run() {            //设置打地鼠的次数            for(int i=0;i<NUM;i++){try {int n = new Random().nextInt(8);System.out.println(n);String[] seat = location[n].split(",");int x = Integer.parseInt(seat[0]);int y = Integer.parseInt(seat[1]);target[n] = new JLabel(img);target[n].setSize(x,y);imgPanel = new JPanel();imgPanel.setLayout(null);imgPanel.setOpaque(false);imgPanel.add(target[n]);target[n].addMouseListener(new MouseListener() {@Overridepublic void mouseReleased(MouseEvent e) {// TODO Auto-generated method stub}@Overridepublic void mousePressed(MouseEvent e) {// TODO Auto-generated method stub}@Overridepublic void mouseExited(MouseEvent e) {// TODO Auto-generated method stub}@Overridepublic void mouseEntered(MouseEvent e) {// TODO Auto-generated method stub}@Overridepublic void mouseClicked(MouseEvent e) {isOk = true;count++;getGlassPane().setVisible(false);}});lable_1 = new JLabel("打中地鼠的次数:"+count);lable_1.setSize(200, 50);imgPanel.add(lable_1);setGlassPane(imgPanel);getGlassPane().setVisible(true);Thread.sleep(1000);if(!isOk){//如果没有点击到,则移除该组件getGlassPane().setVisible(false);}} catch (InterruptedException e) {}isOk = false;             }            System.out.println("打中老鼠的次数:"+count);}//run}).start();}public static void main(String[] args) {Demo1 demo = new Demo1();demo.setVisible(true);}}



李老师所写:

思路:当点击地鼠时,将标签图片置为null,另开一个产生地鼠的线程,随机产生一个下标得到一个地鼠位置,如果为null,则设置地鼠图片.

代码:


package Chapter12;import java.awt.EventQueue;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import javax.swing.ImageIcon;import javax.swing.JFrame;import javax.swing.JLabel;public class Demo11 extends JFrame implements Runnable{//打地鼠private ImageIcon imgMouse;private JLabel[] mouses;public Demo2(){setTitle("简易打地鼠游戏");setResizable(false);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//初始化背景图片ImageIcon img = new ImageIcon(getClass().getResource("background1.jpg"));//初始化地鼠图片imgMouse = new ImageIcon(getClass().getResource("mouse.png"));mouses = new JLabel[6];for(int i=0;i<6;i++){mouses[i] = new JLabel();//设置大小mouses[i].setSize(imgMouse.getIconWidth(), imgMouse.getIconHeight());mouses[i].addMouseListener(new MouseAdapter() {@Overridepublic void mouseClicked(MouseEvent e){Object source = e.getSource();//获得单击的事件源if(source instanceof JLabel){JLabel mouse = (JLabel) source;//将事件源强转为JLabel类型mouse.setIcon(null);}}});getContentPane().add(mouses[i]);//添加显示地鼠的标签到窗体中}//设置每个标签的位置mouses[0].setLocation(253, 300);mouses[1].setLocation(333, 250);mouses[2].setLocation(388,296);mouses[3].setLocation(362,364);mouses[4].setLocation(189,353);mouses[5].setLocation(240,409);//创建显示背景的标签final JLabel backLabel = new JLabel();backLabel.setBounds(0, 0, img.getIconWidth(), img.getIconHeight());setBounds(100, 100, img.getIconWidth(), img.getIconHeight()+30);backLabel.setIcon(img);getContentPane().add(backLabel);}//线程public void run(){while(true){try {Thread.sleep(1000);int index = (int) (Math.random()*6);if(mouses[index].getIcon()==null){mouses[index].setIcon(imgMouse);}} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}public static void main(String[] args) {EventQueue.invokeLater(new Runnable() {public void run() {try {Demo2 frame = new Demo2();frame.setVisible(true);new Thread(frame).start();}catch (Exception e) {e.printStackTrace();}}});}}



0 0
原创粉丝点击