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
- java界面编程学习笔记:打地鼠游戏
- java打地鼠游戏
- 打地鼠游戏(java)
- java打地鼠游戏
- Java打地鼠游戏
- Java游戏练习---打地鼠
- Java实现的打地鼠游戏
- 模拟打地鼠游戏
- cocos2D 打地鼠游戏
- 打地鼠游戏实现
- 简易打地鼠游戏
- 打地鼠游戏
- 打地鼠游戏
- 打地鼠游戏
- H5 打地鼠游戏
- 打地鼠游戏收获
- 星星打地鼠游戏
- 打地鼠游戏最终版
- 开发:异常收集之 DB2建表相关问题
- 如何一秒免费获取聊天室VIP ?
- winsock select模型客户端
- Android动画效果translate、scale、alpha、rotate详解
- 3389常用命令操作
- java界面编程学习笔记:打地鼠游戏
- webkit Page对象的分析
- 我的hibernate通用dao层
- git基础教程三
- ArcEngine透明Element的实现
- iOS开发----CMDeviceMotion
- repmat()函数用法
- HDU 3874 离线线段树
- java 判断两个日期的大小