简易打地鼠游戏

  1 import java.util.Random;
  2 import java.util.Timer;
  3 import java.util.TimerTask;
  4 
  5 import org.eclipse.swt.graphics.Image;
  6 import org.eclipse.swt.layout.GridData;
  7 import org.eclipse.swt.widgets.Display;
  8 import org.eclipse.swt.widgets.Label;
  9 import org.eclipse.swt.widgets.Shell;
 10 import org.eclipse.swt.widgets.Label;
 11 import org.eclipse.swt.SWT;
 12 import org.eclipse.swt.events.MouseEvent;
 13 import org.eclipse.swt.events.MouseListener;
 14 import org.eclipse.swt.widgets.Button;
 15 import org.eclipse.swt.events.SelectionAdapter;
 16 import org.eclipse.swt.events.SelectionEvent;
 17 
 18 public class PlayMouse {
 19     public static int sorce = 0;
 20     private Display display = Display.getDefault();;
 21     private Shell shell = new Shell(display);
 22     public Label[] labels = { new Label(shell, SWT.NONE), new Label(shell, SWT.NONE), new Label(shell, SWT.NONE),
 23             new Label(shell, SWT.NONE), new Label(shell, SWT.NONE), new Label(shell, SWT.NONE),
 24             new Label(shell, SWT.NONE), new Label(shell, SWT.NONE), new Label(shell, SWT.NONE) };
 25 //    private Thread thread = null;
 26     private Runnable runnable;
 27     private boolean exit = true;
 28     public static void main(String[] args) {
 29         PlayMouse playMouse = new PlayMouse();
 30 
 31     }
 32 
 33     public PlayMouse() {
 34 
 35         shell.setSize(800, 600);
 36         shell.setText("PlayMouse");
 37         shell.setLayout(null);
 38 
 39         shell.setBackgroundImage(new Image(display, "Image\3.jpg"));
 40         Image image = new Image(display, "Image\11.jpg");
 41 
 42         labels[0].setBounds(38, 147, 111, 74);
 43         labels[1].setBounds(291, 147, 111, 74);
 44         labels[2].setBounds(603, 147, 111, 74);
 45         labels[3].setBounds(38, 318, 111, 74);
 46         labels[4].setBounds(291, 318, 111, 74);
 47         labels[5].setBounds(603, 318, 111, 74);
 48         labels[6].setBounds(38, 445, 111, 74);
 49         labels[7].setBounds(291, 445, 111, 74);
 50         labels[8].setBounds(603, 445, 111, 74);
 51 
 52         Label label = new Label(shell, SWT.NONE);
 53         label.setBounds(539, 29, 123, 20);
 54         label.setText("您的分数为:" + sorce + " 分");
 55 
 56         Button btnNewButton = new Button(shell, SWT.NONE);
 57         btnNewButton.setBounds(0, 44, 98, 30);
 58         btnNewButton.setText("开始");
 59         Button btnNewButton_1 = new Button(shell, SWT.NONE);
 60         btnNewButton_1.setBounds(126, 44, 98, 30);
 61         btnNewButton_1.setText("停止");
 62         btnNewButton_1.setEnabled(false);
 63         btnNewButton.addSelectionListener(new SelectionAdapter() {
 64             @Override
 65             public void widgetSelected(SelectionEvent e) {
 66                 Thread thread = null;
 67                 display.asyncExec(thread);
 68                 thread = new Thread() {
 69                     public void run() {
 70                         exit = true;//用于停止时跳出循环
 71                         while (exit) {
 72                             display.asyncExec(runnable = new Runnable() {
 73                                 @Override
 74                                 public void run() {
 75                                     for (Label l : labels) {
 76                                         l.setVisible(false);
 77                                     }
 78                                     int mousenum = (int) (Math.random() * 9);
 79                                     System.out.println(mousenum);
 80                                     labels[mousenum].setVisible(true);
 81                                 }
 82                             });
 83                             try {                            
 84                                 thread.sleep(1000);
 85                             } catch (InterruptedException e) {
 86                                 // TODO Auto-generated catch block
 87                                 e.printStackTrace();
 88                             }
 89                         }
 90                     }
 91                 };
 92                 thread.start();
 93                 btnNewButton.setEnabled(!btnNewButton.isEnabled());
 94                 btnNewButton_1.setEnabled(!btnNewButton_1.isEnabled());
 95             }
 96         });
 97 
 98         btnNewButton_1.addSelectionListener(new SelectionAdapter() {
 99             @Override
100             public void widgetSelected(SelectionEvent e) {
101                 exit = false;//跳出循环线程终止
102                 btnNewButton.setEnabled(!btnNewButton.isEnabled());
103                 btnNewButton_1.setEnabled(!btnNewButton_1.isEnabled());
104             }
105         });
106 
107         for (Label l : labels) {
108             l.setText("");
109             l.setBackgroundImage(image);
110             // l.setVisible(false);
111             l.addMouseListener(new org.eclipse.swt.events.MouseAdapter() {
112                 @Override
113                 public void mouseDown(MouseEvent e) {
114                     PlayMouse.sorce++;
115                     label.setText("您的分数为:" + sorce + " 分");
116                     l.setVisible(false);
117                 }
118             });
119         }
120         shell.open();
121         shell.layout();
122         while (!shell.isDisposed()) {
123             if (!display.readAndDispatch()) {
124                 display.sleep();
125             }
126         }
127 
128     }
129 }
原文地址:https://www.cnblogs.com/the-wang/p/7133160.html