1 /*
2 * Main.java3 **/
4
5 importjava.awt.Color;6 importjava.awt.Graphics;7 importjava.awt.event.KeyAdapter;8 importjava.awt.event.KeyEvent;9 importjava.awt.event.MouseAdapter;10 importjava.awt.event.MouseEvent;11 importjava.awt.event.WindowAdapter;12 importjava.awt.event.WindowEvent;13 importjava.text.DateFormat;14 importjava.text.ParseException;15 importjava.text.SimpleDateFormat;16 importjava.util.Date;17
18 importjavax.swing.JFrame;19
20 public class Main extendsJFrame {21 /**
22 * 过关移动顺序 3、4、5、3、2、1 4、5、6、3、2、1 5、6、123 */
24 public static final int GAME_WIDTH = 420; //界面宽
25 public static final int GAME_HEIGTH = 150; //界面高
26 public static final int GAME_X = 400; //界面位置
27 public static final int GAME_Y = 250;28 public DateFormat format = new SimpleDateFormat("mm:ss"); //时间格式
29 public String StartDate = new String(); //起始时间
30 public String EndtDate = new String(); //当前时间
31 public longtimes;32 Frog f = new Frog(this); //青蛙类
33
34 public static voidmain(String[] args) {35 Main m = newMain();36 m.lauchFrame(); //初始化界面
37 }38
39 private voidlauchFrame() {40 //TODO Auto-generated method stub
41 Date date = newDate();42 StartDate =format.format(date);43 EndtDate =format.format(date);44 this.setLocation(GAME_X, GAME_Y); //窗口初始坐标点
45 this.setSize(GAME_WIDTH, GAME_HEIGTH); //窗口初始大小
46 this.setTitle("Frog"); //窗口名称
47 /*窗口监听*/
48 this.addWindowListener(newWindowAdapter() {49 @Override50 /*点退出叉之后运行*/
51 public voidwindowClosing(WindowEvent e) {52 //TODO Auto-generated method stub
53 System.exit(0); //退出
54 }55 });56 this.addMouseListener(new Mouse()); //添加鼠标监听事件
57 this.addKeyListener(new Key()); //添加键盘监听事件
58 this.setVisible(true); //设置窗口显现
59 this.setResizable(false); //设置窗口不可改变大小
60 this.getContentPane().setBackground(Color.white); //界面背景白色
61 new Thread(new PaintThread()).start(); //开始运行PaintThread类run->repaint->paint
62 }63
64 public voidpaint(Graphics g) {65 super.paint(g);66 for (int i = 1; i < 8; i++) {67 g.drawRect(i * 50 - 5, 45, 30, 30);//画出方框
68 }69 f.Draw(g); //画方块
70 /*显示时间以及提示说明*/
71 try{72 times = format.parse(EndtDate).getTime() -format.parse(StartDate).getTime();73 g.drawString("时间:" + format.format(new Date(times)).toString(), 250, 40);74 } catch(ParseException e) {75 //TODO Auto-generated catch block
76 e.printStackTrace();77 }78 g.drawString("F2键重新开始", 100, 40);79 g.drawString("规则:1、点击方块跳动", 85, 100);80 g.drawString("2、方块不能向后跳,最多只能跳过1个方块", 120, 115);81 g.drawString("3、使左右两边方块交换位置即可胜利", 120, 130);82 }83
84 /*线程主要做时间和界面刷新*/
85 private class PaintThread implementsRunnable {86
87 @Override88 public voidrun() {89 //TODO Auto-generated method stub
90 while (true) {91 repaint(); //刷新界面
92 Date date = newDate();93 EndtDate = format.format(date); //重新获取当前时间
94 try{95 Thread.sleep(1000); //时隔1s
96 } catch(Exception e) {97 e.printStackTrace();98 }99 }100 }101 }102
103 /*键盘监听;调用方块类的键盘释放监听*/
104 public class Key extendsKeyAdapter {105
106 @Override107 public voidkeyReleased(KeyEvent e) {108 //TODO Auto-generated method stub
109 super.keyReleased(e);110 f.keyReleased(e);111 }112
113 }114
115 /*鼠标监听;调用方块类的鼠标单击监听*/
116 public class Mouse extendsMouseAdapter {117
118 @Override119 public voidmouseClicked(MouseEvent e) {120 //TODO Auto-generated method stub
121 super.mouseClicked(e);122 f.mouseClicked(e);123 }124 }125 }