1. 窗体的构建
对于游戏来说,需要构建一个桌面窗体,建立MyFrame类,继承Frame类,专用用于游戏窗体的构建。在MyFrame类中建立launchFrame()方法,用于实现窗口的生成。
这三行代码分别用于设置窗体大小,位置和可见的,这三个方法继承自Frame类。
setSize(Constant.GAME_HEIGHT,Constant.GAME_WIDTH);
setLocation(100, 100);
setVisible(true);
定义内部类PaintThread继承Thread,重写Runnable接口方法run(),一直执行 repaint()函数,Thread.sleep(40)是让线程停止40ms。PaintThread().start()让线程的run()方法执行,可以实现窗口的动态更新。
new PaintThread().start();
class PaintThread extends Thread{
public void run(){
while(true){
repaint();
try {
Thread.sleep(40);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
在addWindowListener方法中定义内部类WindowAdapter,内部内重写了windowClosing()方法,用于窗体的退出(如果没有这个方法,窗体将无法退出)
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
窗体构建类MyFrame 的完整代码如下:
package com.zhong.util;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class MyFrame extends Frame {
/**
* 加载窗口
*/
public void launchFrame(){
setSize(Constant.GAME_HEIGHT,Constant.GAME_WIDTH);
setLocation(100, 100);
setVisible(true);
new PaintThread().start();
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
class PaintThread extends Thread{
public void run(){
while(true){
repaint();
try {
Thread.sleep(40);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
2. 工具类
定义常量类Constant,用于保存项目中的所有常量。代码如下:
package com.zhong.util;
/**
* 常量
* @author lenovo
*
*/
public class Constant<