[Java] 打地鼠 →→→→→进入此内容的聊天室

来自 , 2020-05-28, 写在 Java, 查看 157 次.
URL http://www.code666.cn/view/7dd0240c
  1. import java.applet.Applet;
  2. import java.applet.AudioClip;
  3. import javax.swing.JPanel;
  4. import javax.swing.JFrame;
  5. import java.awt.Rectangle;
  6. import javax.swing.JLabel;
  7. import javax.swing.ImageIcon;
  8.  
  9. import java.awt.Cursor;
  10. import java.awt.Dimension;
  11. import java.awt.Point;
  12. import java.awt.Toolkit;
  13. import java.awt.event.MouseEvent;
  14. import java.awt.event.MouseListener;
  15. import java.io.File;
  16. import java.io.FileInputStream;
  17. import java.io.FileNotFoundException;
  18. import java.io.FileOutputStream;
  19. import java.io.IOException;
  20. import java.io.InputStream;
  21. import java.io.ObjectInputStream;
  22. import java.io.ObjectOutputStream;
  23. import java.io.OutputStream;
  24. import java.io.Serializable;
  25.  
  26. import javax.swing.JMenuBar;
  27. import javax.swing.JMenu;
  28. import javax.swing.JMenuItem;
  29. import javax.swing.JOptionPane;
  30.  
  31. import java.awt.event.ActionListener;
  32. import java.awt.event.ActionEvent;
  33. import javax.swing.JProgressBar;
  34. import javax.swing.Timer;
  35. import javax.swing.border.TitledBorder;
  36.  
  37.  
  38.  
  39. import java.awt.Color;
  40.  
  41. public class DDS extends JFrame implements Runnable, MouseListener, ActionListener {
  42.  
  43.         private static final long serialVersionUID = 1L;
  44.  
  45.         private JPanel jContentPane = null;
  46.  
  47.         private JLabel lback = null;
  48.  
  49.         private JLabel lm1 = null;
  50.  
  51.         private JLabel lm2 = null;
  52.  
  53.         private JLabel lm3 = null;
  54.  
  55.         private JLabel lm4 = null;
  56.  
  57.         private JLabel lm5 = null;
  58.  
  59.         private JLabel lm6 = null;
  60.  
  61.         private JLabel lm7 = null;
  62.  
  63.         private JLabel lm8 = null;
  64.        
  65.         private JLabel []lm;
  66.        
  67.         private Thread t;
  68.  
  69.         private JLabel lscore;
  70.        
  71.         private int score=0;
  72.        
  73.         private Cursor c1,c2;
  74.        
  75.         private Timer timer;
  76.        
  77.         private JMenuItem mon,moff;
  78.        
  79.         private JProgressBar progressBar;
  80.        
  81.         private boolean threadstarted=false,findhero=false;
  82.        
  83.         private Score[]sc;
  84.        
  85.         private File file;
  86.        
  87.         private JMenuItem mstart,mstop,mresume,mexit;
  88.        
  89.         private AudioClip clip1,clip2;  //  @jve:decl-index=0:
  90.         private JMenuItem mhero;
  91.  
  92.         /**
  93.          * This is the default constructor
  94.          */
  95.         static class Score implements Serializable{
  96.                 String id;
  97.                 int score;
  98.                 Score(){
  99.                         id="匿名" ;
  100.                 score=0;
  101.                 }
  102.         }
  103.         public DDS() {
  104.                 super();
  105.                 initialize();
  106.         }
  107.  
  108.         /**
  109.          * This method initializes this
  110.          *
  111.          * @return void
  112.          */
  113.         private void initialize() {
  114.                
  115.                 JMenuBar menuBar = new JMenuBar();
  116.                 setJMenuBar(menuBar);
  117.                
  118.                 JMenu mcontrol = new JMenu("\u6E38\u620F\u63A7\u5236");
  119.                 menuBar.add(mcontrol);
  120.                
  121.                  mstart = new JMenuItem("\u5F00\u59CB");
  122.                 mstart.addActionListener(new ActionListener() {
  123.                         public void actionPerformed(ActionEvent e) {
  124.                                 if(threadstarted==false) {
  125.                                 t.start();
  126.                                 }
  127.                                 else {
  128.                                         t.resume();
  129.                                 }
  130.                                 timer.start();
  131.                                 mstart.setEnabled(false);
  132.                                 mstop.setEnabled(true);
  133.                                 mresume.setEnabled(true);
  134.                                 progressBar.setString(null);
  135.                         }
  136.                 });
  137.                 mcontrol.add(mstart);
  138.                
  139.                  mstop = new JMenuItem("\u6682\u505C");
  140.                  mstop.setEnabled(false);
  141.                 mstop.addActionListener(new ActionListener() {
  142.                         public void actionPerformed(ActionEvent e) {
  143.                                 t.suspend();
  144.                                 timer.stop();
  145.                                 mstop.setEnabled(false);
  146.                                 mresume.setEnabled(true);
  147.                         }
  148.                 });
  149.                 mcontrol.add(mstop);
  150.                
  151.                  mresume = new JMenuItem("\u7EE7\u7EED");
  152.                  mresume.setEnabled(false);
  153.                 mresume.addActionListener(new ActionListener() {
  154.                         public void actionPerformed(ActionEvent e) {
  155.                                 t.resume();
  156.                                 timer.start();
  157.                                 mresume.setEnabled(false);
  158.                                 mstop.setEnabled(true);
  159.                         }
  160.                 });
  161.                 mcontrol.add(mresume);
  162.                
  163.                  mexit = new JMenuItem("\u9000\u51FA");
  164.                 mexit.addActionListener(new ActionListener() {
  165.                         public void actionPerformed(ActionEvent arg0) {
  166.                                 System.exit(0);
  167.                         }
  168.                 });
  169.                 mcontrol.add(mexit);
  170.                
  171.                 JMenu menu = new JMenu("\u80CC\u666F\u97F3\u4E50");
  172.                 menuBar.add(menu);
  173.                
  174.                  mon = new JMenuItem("ON");
  175.                 mon.addActionListener(new ActionListener() {
  176.                         public void actionPerformed(ActionEvent e) {
  177.                                 clip1.loop();
  178.                                 mon.setEnabled(false);
  179.                                 moff.setEnabled(true);
  180.                         }
  181.                 });
  182.                 menu.add(mon);
  183.                
  184.                  moff = new JMenuItem("OFF");
  185.                  moff.setEnabled(false);
  186.                 moff.addActionListener(new ActionListener() {
  187.                         public void actionPerformed(ActionEvent e) {
  188.                                 clip1.stop();
  189.                                 mon.setEnabled(true);
  190.                                 moff.setEnabled(false);
  191.                         }
  192.                 });
  193.                 menu.add(moff);
  194.                
  195.                 JMenu mhelp = new JMenu("\u5E2E\u52A9");
  196.                 menuBar.add(mhelp);
  197.                
  198.                 mhero = new JMenuItem("\u82F1\u96C4\u699C");
  199.                 mhero.addActionListener(new ActionListener() {
  200.                         public void actionPerformed(ActionEvent arg0) {
  201.                                  Heros heros=new Heros();
  202.                                  for(int i=0;i<DDS.this.sc.length;i++) {
  203.                                          heros.taheros.append("英雄大名:"+sc[i].id+"得分:"+sc[i].score+"\n");
  204.                                  }
  205.                                
  206.                                  heros.setModal(true);
  207.                                  heros.show();
  208.                         }
  209.                 });
  210.                 mhelp.add(mhero);
  211.                 this.setContentPane(getJContentPane());
  212.                 this.setTitle("打地鼠游戏");
  213.                 this.setBounds(new Rectangle(300, 100, 511, 546));
  214.                 this.setVisible(true);
  215.                
  216.                 lm=new JLabel[8];
  217.                 lm[0]=lm1;
  218.                 lm[1]=lm2;
  219.                 lm[2]=lm3;
  220.                 lm[3]=lm4;
  221.                 lm[4]=lm5;
  222.                 lm[5]=lm6;
  223.                 lm[6]=lm7;
  224.                 lm[7]=lm8;
  225.                 for(int i=0;i<lm.length;i++){
  226.                         lm[i].setVisible(false);
  227.                     lm[i].addMouseListener(this);
  228.                 }
  229.                 lscore.setText("你的得分是0分");
  230.                 t=new Thread(this);
  231.                 timer=new Timer(1000,this);
  232.                 //t.start();
  233.                
  234.                 c1=Toolkit.getDefaultToolkit().createCustomCursor(Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("icon.png")),new Point(20,20),"c1");
  235.                 c2=Toolkit.getDefaultToolkit().createCustomCursor(Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("icon1.png")),new Point(20,20),"c2");
  236.                 clip1=Applet.newAudioClip(this.getClass().getResource("背景音乐.wav"));
  237.                 clip2=Applet.newAudioClip(this.getClass().getResource("响声.wav"));
  238.                
  239.                 file=new File(".//hero.data");
  240.                 if(!file.exists()) {
  241.                 try {
  242.                         file.createNewFile();
  243.                         sc=new Score[6];
  244.                         for(int i=0;i<sc.length;i++)
  245.                                 sc[i]=new Score();
  246.                         OutputStream os=new FileOutputStream(file);
  247.                         ObjectOutputStream oos=new ObjectOutputStream(os);
  248.                         oos.writeObject(sc);
  249.                         oos.close();
  250.                         os.close();
  251.                  } catch (Exception e1) {
  252.                         // TODO Auto-generated catch block
  253.                         e1.printStackTrace();
  254.                      }
  255.                 }      
  256.                 else {
  257.                         try {
  258.                                  InputStream is=new FileInputStream(file);
  259.                                  ObjectInputStream  ois=new ObjectInputStream(is);  
  260.                                  sc=(Score[])ois.readObject();
  261.                                  //for(int i=0;i<sc.length;i++)
  262.                                         // System.out.println(sc[i].id+":"+sc[i].score);
  263.                                  ois.close();
  264.                                  is.close();
  265.                         }catch(Exception e1) {
  266.                         // TODO Auto-generated catch block
  267.                         e1.printStackTrace();
  268.                 }
  269.         }
  270. }
  271.  
  272.         /**
  273.          * This method initializes jContentPane
  274.          *
  275.          * @return javax.swing.JPanel
  276.          */
  277.         private JPanel getJContentPane() {
  278.                 if (jContentPane == null) {
  279.                         lscore = new JLabel();
  280.                         lscore.setBounds(new Rectangle(281, 35, 222, 32));
  281.                         lscore.setText("");
  282.                         lm8 = new JLabel();
  283.                         lm8.setBounds(new Rectangle(364, 340, 62, 78));
  284.                         lm8.setText("");
  285.                         lm8.setIcon(new ImageIcon(getClass().getResource("/img/mouse.png")));
  286.                         lm7 = new JLabel();
  287.                         lm7.setBounds(new Rectangle(100, 303, 67, 82));
  288.                         lm7.setText("");
  289.                         lm7.setIcon(new ImageIcon(getClass().getResource("/img/mouse.png")));
  290.                         lm6 = new JLabel();
  291.                         lm6.setBounds(new Rectangle(237, 384, 74, 78));
  292.                         lm6.setText("");
  293.                         lm6.setIcon(new ImageIcon(getClass().getResource("/img/mouse.png")));
  294.                         lm5 = new JLabel();
  295.                         lm5.setBounds(new Rectangle(191, 324, 68, 89));
  296.                         lm5.setText("");
  297.                         lm5.setIcon(new ImageIcon(getClass().getResource("/img/mouse.png")));
  298.                         lm4 = new JLabel();
  299.                         lm4.setBounds(new Rectangle(389, 268, 60, 87));
  300.                         lm4.setText("");
  301.                         lm4.setIcon(new ImageIcon(getClass().getResource("/img/mouse.png")));
  302.                         lm3 = new JLabel();
  303.                         lm3.setBounds(new Rectangle(251, 279, 64, 80));
  304.                         lm3.setText("");
  305.                         lm3.setIcon(new ImageIcon(getClass().getResource("/img/mouse.png")));
  306.                         lm2 = new JLabel();
  307.                         lm2.setBounds(new Rectangle(337, 226, 65, 75));
  308.                         lm2.setText("");
  309.                         lm2.setIcon(new ImageIcon(getClass().getResource("/img/mouse.png")));
  310.                         lm1 = new JLabel();
  311.                         lm1.setBounds(new Rectangle(240, 228, 60, 86));
  312.                         lm1.setIcon(new ImageIcon(getClass().getResource("/img/mouse.png")));
  313.                         lm1.setText("");
  314.                         jContentPane = new JPanel();
  315.                         jContentPane.setLayout(null);
  316.                         jContentPane.add(lm1, null);
  317.                         jContentPane.add(lm2, null);
  318.                         jContentPane.add(lm3, null);
  319.                         jContentPane.add(lm4, null);
  320.                         jContentPane.add(lm5, null);
  321.                         jContentPane.add(lm6, null);
  322.                         jContentPane.add(lm7, null);
  323.                         jContentPane.add(lm8, null);
  324.                        
  325.                         jContentPane.add(lscore, null);
  326.                        
  327.                     progressBar = new JProgressBar();
  328.                     progressBar.setMaximum(10);
  329.                         progressBar.setBorder(new TitledBorder(null, "\u6E38\u620F\u8FDB\u5EA6", TitledBorder.CENTER, TitledBorder.ABOVE_TOP, null, Color.RED));
  330.                         progressBar.setStringPainted(true);
  331.                         progressBar.setBounds(28, 53, 171, 55);
  332.                         jContentPane.add(progressBar);
  333.                         lback = new JLabel();
  334.                         lback.setText("");
  335.                         lback.setSize(new Dimension(491, 500));
  336.                         lback.setLocation(new Point(0, -1));
  337.                         lback.setIcon(new ImageIcon(getClass().getResource("/img/background.jpg")));
  338.                         jContentPane.add(lback, java.awt.BorderLayout.NORTH);
  339.                 }
  340.                 return jContentPane;
  341.         }
  342.  
  343.         public void run() {
  344.                 // TODO 自动生成方法存根
  345.                 while(true){
  346.                         try {
  347.                                 Thread.sleep(800);
  348.                                 int index=(int)(Math.random()*8);
  349.                                 if(!lm[index].isShowing()){
  350.                                         lm[index].setVisible(true);
  351.                                         Thread.sleep(800);
  352.                                         lm[index].setVisible(false);
  353.                                 }
  354.                         } catch (InterruptedException e) {
  355.                                 // TODO 自动生成 catch 块
  356.                                 e.printStackTrace();
  357.                         }
  358.                 }
  359.         }
  360.  
  361.         public void mouseClicked(MouseEvent e) {
  362.                 // TODO 自动生成方法存根);
  363.                 JLabel l=(JLabel)e.getSource();
  364.                 if(l.isShowing()){
  365.                         t.interrupt();
  366.                         l.setVisible(false);
  367.                         lscore.setText("你的得分是"+(++score)+"分");
  368.                 }
  369.                 clip2.play();
  370.         }
  371.  
  372.         public void mouseEntered(MouseEvent e) {
  373.                 // TODO 自动生成方法存根
  374.                
  375.         }
  376.  
  377.         public void mouseExited(MouseEvent e) {
  378.                 // TODO 自动生成方法存根
  379.                
  380.         }
  381.  
  382.         public void mousePressed(MouseEvent e) {
  383.                 // TODO 自动生成方法存根
  384.                 this.setCursor(c2);
  385.         }
  386.  
  387.         public void mouseReleased(MouseEvent e) {
  388.                 // TODO 自动生成方法存根
  389.                 this.setCursor(c1);
  390.         }
  391.  
  392.         @Override
  393.         public void actionPerformed(ActionEvent arg0) {
  394.                 // TODO Auto-generated method stub
  395.                 int value=progressBar.getValue();
  396.                 //System.out.println(value);
  397.                 if(value<10)
  398.                 this.progressBar.setValue(++value);
  399.                 else {
  400.                         JOptionPane.showMessageDialog(this,"时间到 !  你的分数是:"+score+"分!   ","游戏提示!  ",JOptionPane.WARNING_MESSAGE);
  401.                         mstart.setEnabled(true);       
  402.                         progressBar.setValue(0);
  403.                         progressBar.setString("游戏结束了!");
  404.                         timer.stop();
  405.                         t.suspend();
  406.                         score=0;
  407.                         threadstarted=true;    
  408.                        
  409.                         int heroid=0;
  410.                         for(int i=0;i<sc.length;i++) {
  411.                                 if(score>sc[i].score) {
  412.                                         findhero=true;
  413.                                         heroid=1;
  414.                                         for(int j=sc.length-1;j>i;j--) {
  415.                                                 sc[j].id=sc[j-1].id;
  416.                                                 sc[j].score=sc[j-1].score;
  417.                                         }
  418.                                         sc[i].id="匿名";
  419.                                     sc[i].score=score;
  420.                                     break;
  421.                                         }
  422.                                 }
  423.                         if(findhero) {
  424.                                 for(int j=sc.length-1;j>heroid;j--) {
  425.                                         sc[j].id=sc[j-1].id;
  426.                                         sc[j].score=sc[j-1].score;
  427.                                 }
  428.                                 sc[heroid].id="匿名";
  429.                                 sc[heroid].score=score;
  430.                                 String str=JOptionPane.showInputDialog(this,"英雄请留下大名吧!" ,JOptionPane.PLAIN_MESSAGE);
  431.                                 //if(heroname!=null) sc[heroid].id=heroname;
  432.                                 //sc[heroid].id=str;
  433.                                 OutputStream os;
  434.                                 try {
  435.                                         os=new FileOutputStream(file);
  436.                                         ObjectOutputStream oos=new ObjectOutputStream(os);
  437.                                         oos.writeObject(sc);
  438.                                         oos.close();
  439.                                         os.close();
  440.                                 } catch (Exception e) {
  441.                                         // TODO Auto-generated catch block
  442.                                         e.printStackTrace();
  443.                                 }
  444.                                
  445.                         }
  446.                 }
  447.         }
  448. }  //  @jve:decl-index=0:visual-constraint="10,10"
  449.  
  450. import java.awt.BorderLayout;
  451. import java.awt.FlowLayout;
  452.  
  453. import javax.swing.JButton;
  454. import javax.swing.JDialog;
  455. import javax.swing.JPanel;
  456. import javax.swing.border.EmptyBorder;
  457. import javax.swing.JTextArea;
  458.  
  459. public class Heros extends JDialog {
  460.        
  461.         public JTextArea taheros;
  462.  
  463.         private final JPanel contentPanel = new JPanel();
  464.  
  465.         /**
  466.          * Launch the application.
  467.          */
  468. /*      public static void main(String[] args) {
  469.                 try {
  470.                         Heros dialog = new Heros();
  471.                         dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
  472.                         dialog.setVisible(true);
  473.                 } catch (Exception e) {
  474.                         e.printStackTrace();
  475.                 }
  476.         }*/
  477.  
  478.         /**
  479.          * Create the dialog.
  480.          */
  481.         public Heros() {
  482.                 setTitle("\u82F1\u96C4\u699C");
  483.                 setBounds(100, 100, 549, 430);
  484.                 getContentPane().setLayout(new BorderLayout());
  485.                 contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
  486.                 getContentPane().add(contentPanel, BorderLayout.CENTER);
  487.                 contentPanel.setLayout(null);
  488.                 {
  489.                         taheros = new JTextArea();
  490.                         taheros.setBounds(0, 0, 527, 335);
  491.                         contentPanel.add(taheros);
  492.                 }
  493.                 {
  494.                         JPanel buttonPane = new JPanel();
  495.                         buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
  496.                         getContentPane().add(buttonPane, BorderLayout.SOUTH);
  497.                         {
  498.                                 JButton okButton = new JButton("\u786E\u5B9A");
  499.                                 okButton.setActionCommand("OK");
  500.                                 buttonPane.add(okButton);
  501.                                 getRootPane().setDefaultButton(okButton);
  502.                         }
  503.                 }
  504.         }
  505.  
  506. }
  507.  
  508.  
  509. public class PlayMouse {
  510.  
  511.         /**
  512.          * @param args
  513.          */
  514.         public static void main(String[] args) {
  515.                 // TODO 自动生成方法存根
  516.         new DDS();
  517.         }
  518.  
  519. }
  520.  

回复 "打地鼠"

这儿你可以回复上面这条便签

captcha