项目的GitHub地址:https://github.com/KeneathGuo/PlaneGame
v0.1
1.画一个主窗口 MyGameFrame 继承自 JFrame用于初始化主窗口
2.设置title、大小、位置。
使用匿名内部类,重写windowClosing方法,通过点击右上角的×来真关闭窗口(进程)。
在main方法创建一个主窗口对象f测试。
//匿名内部类,使得可以通过右上角关闭窗口
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);//0表示正常关闭
}
});
v0.2
1.在MyGameFrame类中加入重写的 paint方法(自动被调用,当首次显示窗口或者需要修理时自动调用),变量g相当于一支画笔,在f这个窗口实例中画各种各类图形。
游戏中所有物体都可以看成矩形。查看API Graphics。可以设置g这支画笔颜色
2.提供一个GameUtil类,提供静态方法以加载图像。
import java.awt.Image;
import java.awt.image.*;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;;
public class GameUtil {
//工具类最好将构造器私有化,都是static方法,没必要去new一个对象
private GameUtil() {
}
//返回指定路径文件的图片对象
public static Image getImage(String path) {
BufferedImage bi = null;
try {
URL u = GameUtil.class.getClassLoader().getResource(path);
bi=ImageIO.read(u);
}catch(IOException e) {
e.printStackTrace();
}
return bi;
}
}
3.建立两个Image实例,放入两张图片,然后调用g.drawImage方法,在窗口里画出两张图,注意顺序。
v0.3
1.利用多线程让图片动起来。定义一个内部类PaintThread,因为内部类可以使用外部类的属性和方法。
//内部类可以直接使用外部类的属性和方法很方便
class PaintThread extends Thread{
@Override
public void run() {
while(true