本文由搞代码网为大家展示了《java实现游戏打地鼠代码实例》的代码案例,请各位coder不吝赐教,也欢迎coder点赞收藏转发,感谢
import java.applet.Applet; import java.applet.AudioClip; import javax.swing.JPanel; import javax.swing.JFrame; import java.awt.Rectangle; import javax.swing.JLabel; import javax.swing.ImageIcon; import java.awt.Cursor; import java.awt.Dimension; import java.awt.Point; import java.awt.Toolkit; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.OutputStream; import java.io.Serializable; import javax.swing.JMenuBar; import javax.swing.JMenu; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import javax.swing.JProgressBar; import javax.swing.Timer; import javax.swing.border.TitledBorder; import java.awt.Color; public class DDS extends JFrame implements Runnable, MouseListener, ActionListener { private static final long serialVersionUID = 1L; private JPanel jContentPane = null; private JLabel lback = null; private JLabel lm1 = null; private JLabel lm2 = null; private JLabel lm3 = null; private JLabel lm4 = null; private JLabel lm5 = null; private JLabel lm6 = null; private JLabel lm7 = null; private JLabel lm8 = null; private JLabel []lm; private Thread t; private JLabel lscore; private int score=0; private Cursor c1,c2; private Timer timer; private JMenuItem mon,moff; private JProgressBar progressBar; private boolean threadstarted=false,findhero=false; private Score[]sc; private File file; private JMenuItem mstart,mstop,mresume,mexit; private AudioClip clip1,clip2; // @jve:decl-index=0: private JMenuItem mhero; /** * This is the default constructor */ static class Score implements Serializable{ String id; int score; Score(){ id="匿名" ; score=0; } } public DDS() { super(); initialize(); } /** * This method initializes this * * @return void */ private void initialize() { JMenuBar menuBar = new JMenuBar(); setJMenuBar(menuBar); JMenu mcontrol = new JMenu("\u6E38\u620F\u63A7\u5236"); menuBar.add(mcontrol); mstart = new JMenuItem("\u5F00\u59CB"); mstart.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if(threadstarted==false) { t.start(); } else { t.resume(); } timer.start(); mstart.setEnabled(false); mstop.setEnabled(true); mresume.setEnabled(true); progressBar.setString(null); } }); mcontrol.add(mstart); mstop = new JMenuItem("\u6682\u505C"); mstop.setEnabled(false); mstop.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { t.suspend(); timer.stop(); mstop.setEnabled(false); mresume.setEnabled(true); } }); mcontrol.add(mstop); mresume = new JMenuItem("\u7EE7\u7EED"); mresume.setEnabled(false); mresume.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { t.resume(); timer.start(); mresume.setEnabled(false); mstop.setEnabled(true); } }); mcontrol.add(mresume); mexit = new JMenuItem("\u9000\u51FA"); mexit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { System.exit(0); } }); mcontrol.add(mexit); JMenu menu = new JMenu("\u80CC\u666F\u97F3\u4E50"); menuBar.add(menu); mon = new JMenuItem("ON"); mon.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { clip1.loop(); mon.setEnabled(false); moff.setEnabled(true); } }); menu.add(mon); moff = new JMenuItem("OFF"); moff.setEnabled(false); moff.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { clip1.stop(); mon.setEnabled(true); moff.setEnabled(false); } }); menu.add(moff); JMenu mhelp = new JMenu("\u5E2E\u52A9"); menuBar.add(mhelp); mhero = new JMenuItem("\u82F1\u96C4\u699C"); mhero.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { Heros heros=new Heros(); for(int i=0;i<DDS.this.sc.length;i++) { heros.taheros.append("英雄大名:"+sc[i].id+"得分:"+sc[i].score+"\n"); } heros.setModal(true); heros.show(); } }); mhelp.add(mhero); this.setContentPane(getJContentPane()); this.setTitle("打地鼠游戏"); this.setBounds(new Rectangle(300, 100, 511, 546)); this.setVisible(true); lm=new JLabel[8]; lm[0]=lm1; lm[1]=lm2; lm[2]=lm3; lm[3]=lm4; lm[4]=lm5; lm[5]=lm6; lm[6]=lm7; lm[7]=lm8; for(int i=0;i<lm.length;i++){ lm[i].setVisible(false); lm[i].addMouseListener(this); } lscore.setText("你的得分是0分"); t=new Thread(this); timer=new Timer(1000,this); //t.start(); c1=Toolkit.getDefaultToolkit().createCustomCursor(Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("icon.png")),new Point(20,20),"c1"); c2=Toolkit.getDefaultToolkit().createCustomCursor(Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("icon1.png")),new Point(20,20),"c2"); clip1=Applet.newAudioClip(this.getClass().getResource("背景音乐.wav")); clip2=Applet.newAudioClip(this.getClass().getResource("响声.wav")); file=new File(".//hero.data"); if(!file.exists()) { try { file.createNewFile(); sc=new Score[6]; for(int i=0;i<sc.length;i++) sc[i]=new Score(); OutputStream os=new FileOutputStream(file); ObjectOutputStream oos=new ObjectOutputStream(os); oos.writeObject(sc); oos.close(); os.close(); } catch (Exception e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } else { try { InputStream is=new FileInputStream(file); ObjectInputStream ois=new ObjectInputStream(is); sc=(Score[])ois.readObject(); //for(int i=0;i<sc.length;i++) // System.out.println(sc[i].id+":"+sc[i].score); ois.close(); is.close(); }catch(Exception e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } /** * This method initializes jContentPane * * @return javax.swing.JPanel */ private JPanel getJContentPane() { if (jContentPane == null) { lscore = new JLabel(); lscore.setBounds(new Rectangle(281, 35, 222, 32)); lscore.setText(""); lm8 = new JLabel(); lm8.setBounds(new Rectangle(364, 340, 62, 78)); lm8.setText(""); lm8.setIcon(new ImageIcon(getClass().getResource("/img/mouse.png"))); lm7 = new JLabel(); lm7.setBounds(new Rectangle(100, 303, 67, 82)); lm7.setText(""); lm7.setIcon(new ImageIcon(getClass().getResource("/img/mouse.png"))); lm6 = new JLabel(); lm6.setBounds(new Rectangle(237, 384, 74, 78)); lm6.setText(""); lm6.setIcon(new ImageIcon(getClass().getResource("/img/mouse.png"))); lm5 = new JLabel(); lm5.setBounds(new Rectangle(191, 324, 68, 89)); lm5.setText(""); lm5.setIcon(new ImageIcon(getClass().getResource("/img/mouse.png"))); lm4 = new JLabel(); lm4.setBounds(new Rectangle(389, 268, 60, 87)); lm4.setText(""); lm4.setIcon(new ImageIcon(getClass().getResource("/img/mouse.png"))); lm3 = new JLabel(); lm3.setBounds(new Rectangle(251, 279, 64, 80)); lm3.setText(""); lm3.setIcon(new ImageIcon(getClass().getResource("/img/mouse.png"))); lm2 = new JLabel(); lm2.setBounds(new Rectangle(337, 226, 65, 75)); lm2.setText(""); lm2.setIcon(new ImageIcon(getClass().getResource("/img/mouse.png"))); lm1 = new JLabel(); lm1.setBounds(new Rectangle(240, 228, 60, 86)); lm1.setIcon(new ImageIcon(getClass().getResource("/img/mouse.png"))); lm1.setText(""); jContentPane = new JPanel(); jContentPane.setLayout(null); jContentPane.add(lm1, null); jContentPane.add(lm2, null); jContentPane.add(lm3, null); jContentPane.add(lm4, null); jContentPane.add(lm5, null); jContentPane.add(lm6, null); jContentPane.add(lm7, null); jContentPane.add(lm8, null); jContentPane.add(lscore, null); progressBar = new JProgressBar(); progressBar.setMaximum(10); progressBar.setBorder(new TitledBorder(null, "\u6E38\u620F\u8FDB\u5EA6", TitledBorder.CENTER, TitledBorder.ABOVE_TOP, null, Color.RED)); progressBar.setStringPainted(true); progressBar.setBounds(28, 53, 171, 55); jContentPane.add(progressBar); lback = new JLabel(); lback.setText(""); lback.setSize(new Dimension(491, 500)); lback.setLocation(new Point(0, -1)); lback.setIcon(new ImageIcon(getClass().getResource("/img/background.jpg"))); jContentPane.add(lback, java.awt.BorderLayout.NORTH); } return jContentPane; } public void run() { // TODO 自动生成方法存根 while(true){ try { Thread.sleep(800); int index=(int)(Math.random()*8); if(!lm[index].isShowing()){ lm[index].setVisible(true); Thread.sleep(800); lm[index].setVisible(false); } } catch (InterruptedException e) { // TODO 自动生成 catch 块 e.printStackTrace(); } } } public void mouseClicked(MouseEvent e) { // TODO 自动生成方法存根); JLabel l=(JLabel)e.getSource(); if(l.isShowing()){ t.interrupt(); l.setVisible(false); lscore.setText("你的得分是"+(++score)+"分"); } clip2.play(); } public void mouseEntered(MouseEvent e) { // TODO 自动生成方法存根 } public void mouseExited(MouseEvent e) { // TODO 自动生成方法存根 } public void mousePressed(MouseEvent e) { // TODO 自动生成方法存根 this.setCursor(c2); } public void mouseReleased(MouseEvent e) { // TODO 自动生成方法存根 this.setCursor(c1); } @Override public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub int value=progressBar.getValue(); //System.out.println(value); if(value<10) this.progressBar.setValue(++value); else { JOptionPane.showMessageDialog(this,"时间到 ! 你的分数是:"+score+"分! ","游戏提示! ",JOptionPane.WARNING_MESSAGE); mstart.setEnabled(true); progressBar.setValue(0); progressBar.setString("游戏结束了!"); timer.stop(); t.suspend(); score=0; threadstarted=true; int heroid=0; for(int i=0;i<sc.length;i++) { if(score>sc[i].score) { findhero=true; heroid=1; for(int j=sc.length-1;j>i;j--) { sc[j].id=sc[j-1].id; sc[j].score=sc[j-1].score; } sc[i].id="匿名"; sc[i].score=score; break; } } if(findhero) { for(int j=sc.length-1;j>heroid;j--) { sc[j].id=sc[j-1].id; sc[j].score=sc[j-1].score; } sc[heroid].id="匿名"; sc[heroid].score=score; String str=JOptionPane.showInputDialog(this,"英雄请留下大名吧!" ,JOptionPane.PLAIN_MESSAGE); //if(heroname!=null) sc[heroid].id=heroname; //sc[heroid].id=str; OutputStream os; try { os=new FileOutputStream(file); ObjectOutputStream oos=new ObjectOutputStream(os); oos.writeObject(sc); oos.close(); os.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } } // @jve:decl-index=0:visual-constraint="10,10" import java.awt.BorderLayout; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.JTextArea; public class Heros extends JDialog { public JTextArea taheros; private final JPanel contentPanel = new JPanel(); /** * Launch the application. */ /* public static void main(String[] args) { try { Heros dialog = new Heros(); dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); dialog.setVisible(true); } catch (Exception e) { e.printStackTrace(); } }*/ /** * Create the dialog. */ public Heros() { setTitle("\u82F1\u96C4\u699C"); setBounds(100, 100, 549, 430); getContentPane().setLayout(new BorderLayout()); contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5)); getContentPane().add(contentPanel, BorderLayout.CENTER); contentPanel.setLayout(null); { taheros = new JTextArea(); taheros.setBounds(0, 0, 527, 335); contentPanel.add(taheros); } { JPanel buttonPane = new JPanel(); buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT)); getContentPane().add(buttonPane, BorderLayout.SOUTH); { JButton okButton = new JButton("\u786E\u5B9A"); okButton.setActionCommand("OK"); buttonPane.add(okButton); getRootPane().setDefaultButton(okButton); } } } } public class PlayMouse { /** * @param args */ public static void main(String[] args) { // TODO 自动生成方法存根 new DDS(); } }