欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Java实现的打地鼠游戏,java实现打地鼠, import j

来源: javaer 分享于  点击 22037 次 点评:75

Java实现的打地鼠游戏,java实现打地鼠, import j


    import java.awt.Cursor;      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.ImageIcon;      import javax.swing.JFrame;      import javax.swing.JLabel;      import javax.swing.JMenu;      import javax.swing.JMenuBar;      import javax.swing.JMenuItem;      import javax.swing.JOptionPane;      import javax.swing.JPanel;      import javax.swing.Timer;      public class HitMouse extends JFrame implements ActionListener,MouseListener{          boolean isOver=false;//设置标记,游戏是否结束          private String dir="./images/";//图片目录,当前工程下          JLabel jlbMouse;//地鼠          Timer timer;//时间定时器          Random random;//随机数对象,即生成地鼠的位置          int delay=1100;//延迟时间          Toolkit tk;          Image image;          Cursor myCursor;          JLabel showNum,currentGrade,hitNum;          int showNumber=0,hitNumber=0,currentGrades=1;          public HitMouse(){              super("打地鼠");              this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);              this.setSize(449, 395);              this.setLocationRelativeTo(null);//设置窗口在屏幕中心              setbackground();//设置背景              this.getContentPane().setLayout(null);//设置框架布局模式为空,只有这样,才能知道图片的真正位置              //设置鼠标为锤子图片              tk = Toolkit.getDefaultToolkit();              image = tk.createImage(dir+"chui1.png");              myCursor = tk.createCustomCursor(image, new Point(10,10), "xxx");              this.setCursor(myCursor);              setMessage();//设置一些提示信息              //在背景图片的基础上设置地鼠图片              ImageIcon imageMouse = new ImageIcon(dir+"dishu.png");              jlbMouse = new JLabel(imageMouse);              jlbMouse.setSize(80,80);              this.getContentPane().add(jlbMouse);              jlbMouse.setVisible(false);              jlbMouse.addMouseListener(this);//添加鼠标监听              //定时器              timer = new Timer(delay,this);              random = new Random();              timer.start();              addMenu();//添加菜单              this.setResizable(false);//设置窗口大小不能改变              this.setVisible(true);          }          private void addMenu() {              JMenuBar menubar = new JMenuBar();              this.setJMenuBar(menubar);              JMenu game = new JMenu("游戏");              JMenuItem jitemNew = new JMenuItem("新游戏");              jitemNew.setActionCommand("new");              jitemNew.addActionListener(this);              JMenuItem jitemPause = new JMenuItem("暂停");              jitemPause.setActionCommand("pause");              jitemPause.addActionListener(this);              JMenuItem jitemExit = new JMenuItem("退出");              jitemExit.setActionCommand("exit");              jitemExit.addActionListener(this);              game.add(jitemNew);              game.add(jitemPause);              game.addSeparator();//菜单里设置分隔线              game.add(jitemExit);              menubar.add(game);          }          private void setbackground() {              ((JPanel)(this.getContentPane())).setOpaque(false);//如果为 true,则该组件绘制其边界内的所有像素。否则该组件可能不绘制部分或所有像素,从而允许其底层像素透视出来。               ImageIcon bgImage = new ImageIcon("images/beijing.jpg");              JLabel bgLabel = new JLabel(bgImage);              bgLabel.setBounds(0, 25, bgImage.getIconWidth(), bgImage.getIconHeight());              this.getLayeredPane().add(bgLabel, new Integer(Integer.MIN_VALUE));//设置背景图片的层次最低          }          private void setMessage() {              ImageIcon showNumb = new ImageIcon(dir+"chuxiancishu.png");              JLabel showLabel = new JLabel(showNumb);              showLabel.setBounds(8, 8, 92, 80);              this.getContentPane().add(showLabel);              showNum = new JLabel("0");              showNum.setBounds(110, 8, 92, 80);              this.getContentPane().add(showNum);              ImageIcon hitNumb = new ImageIcon(dir+"chuxiancishu.png");              JLabel hitLabel = new JLabel(hitNumb);              hitLabel.setBounds(148, 8, 92, 80);              this.getContentPane().add(hitLabel);              hitNum = new JLabel("0");              hitNum.setBounds(251, 8, 92, 80);              this.getContentPane().add(hitNum);              ImageIcon grade = new ImageIcon(dir+"dangqiandengji.png");              JLabel gradeLabel = new JLabel(grade);              gradeLabel.setBounds(288, 8, 92, 80);              this.getContentPane().add(gradeLabel);              currentGrade = new JLabel("1");              currentGrade.setBounds(391, 8, 92, 80);              this.getContentPane().add(currentGrade);          }          public static void main(String[] args) {              new HitMouse();          }          public void actionPerformed(ActionEvent e) {               //对菜单项注册事件监听              if(e.getSource() instanceof JMenuItem){                  menuItemFun(e);              }              int ran=random.nextInt(9);//随机生成一个0~9(不包括9)的随机数              ImageIcon imageMouse = new ImageIcon(dir+"dishu.png");//保证每次随机生成的地鼠图片都是为没被打时的图片              jlbMouse.setIcon(imageMouse);              switch(ran){              case 0:jlbMouse.setLocation(55, 63);break;              case 1:jlbMouse.setLocation(321, 204);break;              case 2:jlbMouse.setLocation(184, 204);break;              case 3:jlbMouse.setLocation(47, 203);break;              case 4:jlbMouse.setLocation(297, 133);break;              case 5:jlbMouse.setLocation(161, 133);break;              case 6:jlbMouse.setLocation(21, 133);break;              case 7:jlbMouse.setLocation(310, 63);break;              case 8:jlbMouse.setLocation(185, 63);break;              }              jlbMouse.setVisible(true);              showNumber++;              showNum.setText(""+showNumber);              if( !gamePlan() ){//判断游戏是否结束,并显示游戏进程                  timer.stop();              }          }          //监听菜单功能功能          private void menuItemFun(ActionEvent e) {              if (e.getActionCommand().equalsIgnoreCase("new")) {//新游戏                  timer.stop();                  showNumber=0;                  hitNumber=0;                  currentGrades=1;                  delay=1000;                  isOver=false;                  showNum.setText(""+showNumber);                  hitNum.setText(""+hitNumber);                  currentGrade.setText(""+currentGrades);                  timer = new Timer(delay,this);                  timer.start();              }              if (e.getActionCommand().equalsIgnoreCase("exit")) {//退出                  System.exit(EXIT_ON_CLOSE);              }              if (e.getActionCommand().equalsIgnoreCase("pause")) {//暂停                  timer.stop();                  JOptionPane.showMessageDialog(this, "继续请按“确定”");                  timer.start();              }          }          private boolean gamePlan() {              if(showNumber-hitNumber > 8){                  JOptionPane.showMessageDialog(this, "Game Over !");                  isOver=true;                  return false;              }              if(hitNumber > 5){                  hitNumber=0;                  showNumber=0;                  currentGrades++;                  if(delay>100){                      delay-=50;                  }else if(delay>=500){                      delay=500;                  }                  timer.setDelay(delay);                  hitNum.setText(""+hitNumber);                  showNum.setText(""+showNumber);                  currentGrade.setText(""+currentGrades);              }              return true;          }          public void mouseClicked(MouseEvent e) {          }          public void mousePressed(MouseEvent e) {              if(isOver){                  return ;              }              image = tk.createImage(dir+"chui2.png");              myCursor = tk.createCustomCursor(image, new Point(10,10), "xxx");              this.setCursor(myCursor);//鼠标按下时,鼠标显示打下去的图片,模拟打的动作              //如果打中地鼠,则地鼠换成被打中的图片,模拟地鼠被打              if(e.getSource()==jlbMouse){                  ImageIcon imageIconHit = new ImageIcon(dir+"datou.png");                  jlbMouse.setIcon(imageIconHit);                  jlbMouse.setVisible(true);              }              hitNumber++;              hitNum.setText(""+hitNumber);          }          public void mouseReleased(MouseEvent e) {              if(isOver){                  return ;              }              //当鼠标放松以后,鼠标变回原来没按下时的图片              image = tk.createImage(dir+"chui1.png");              myCursor = tk.createCustomCursor(image, new Point(10,10), "xxx");              this.setCursor(myCursor);          }          public void mouseEntered(MouseEvent e) {          }          public void mouseExited(MouseEvent e) {          }      }  
相关栏目:

用户点评