尚学堂JAVA最全教程 

                                                                    配合JAVA300集视频课程,一集一个文档

                                                                       本文档配合:java300集第一季084集  

                                                                 【最新文档更新请加入尚学堂www.bjsxt.cn】

                                                              【专业JAVA培训机构,真正零首付入学www.bjsxt.com

一,太阳系游戏的主要Frame代码如下:

    

package com.bjsxt.solar;

import com.bjsxt.util.MyFrame;

import java.awt.Graphics;
import java.awt.Image;

import com.bjsxt.util.Constant;
import com.bjsxt.util.GameUtil;

/**
 * 太阳系的主窗口
 * 
 * @author Administrator
 *
 */
public class SolarFrame extends MyFrame {
	Image bg = GameUtil.getImage("images/bg.jpg");
	Star sun = new Star("images/sun.jpg", Constant.GAME_WIDTH / 2, Constant.GAME_HEIGTH / 2);

	@Override
	public void paint(Graphics g) {
		g.drawImage(bg, 0, 0, null);
		sun.drawImage(g);
	}

	public static void main(String[] args) {
		new SolarFrame().launchFrame();

	}
}

 

二,封装类Star代码如下:



package com.bjsxt.solar;

import java.awt.Graphics;
import java.awt.Image;

import com.bjsxt.util.GameUtil;

public class Star {
	Image img;
	double x, y;

	public void drawImage(Graphics g) {
		g.drawImage(img, (int) x, (int) y, null);

	}

	public Star(Image img, double x, double y) {
		this.img = img;
		this.x = x;
		this.y = y;
	}
	public Star(String imgpath,double x,double y){
		this.img=GameUtil.getImage(imgpath);
		this.x=x;
		this.y=y;
	}
}

 

三,太阳系的赋值工具类的com.bjsxt.util包下的代码如下:



package com.bjsxt.util;

/**
 * 游戏中的常量类的封装:
 * 	游戏当中的常量都可以封装到这个类中,方便使用,后期可能使用配置文件,
 * 	目前先这样用着再说。
 * @author Administrator
 *
 */
public class Constant {
	public static final int GAME_WIDTH = 800;
	public static final int GAME_HEIGTH = 600;

}

  尝试一下  

    .MyFrame类的封装代码如下:



package com.bjsxt.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_WIDTH,Constant.GAME_HEIGTH);
		setLocation(100, 100);
		setVisible(true);

		new PaintThread().start();// 启动重画线程
		/**
		 * 关闭窗口
		 * 
		 */
		addWindowListener(new WindowAdapter() {
			@Override
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});

	}

	/**
	 * 定一个重画窗口的线程的类,还是一个内部类,方便访问外部类的属于。
	 * 
	 * @author Administrator
	 *
	 */
	class PaintThread extends Thread {
		public void run() {
			while (true) {
				repaint();
				try {
					Thread.sleep(40);// 1s=1000ms
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		}
	}

}

 

    .GameUtil类的封装代码如下:



package com.bjsxt.util;

import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;

import javax.imageio.ImageIO;

public class GameUtil {

	private GameUtil() {// 工具类一般构造器私有。

	};

	public static Image getImage(String path) {
		URL u = GameUtil.class.getClassLoader().getResource(path);
		BufferedImage img = null;
		try {
			img = ImageIO.read(u);
		} catch (IOException e) {
			e.printStackTrace();
		}
		return img;
	}

}

  尝试一下  


北京总部地址:北京市海淀区西三旗桥东建材城西路85号神州科技园B座三层尚学堂 咨询电话:400-009-1906 010-56233821
Copyright 2007-2014 北京尚学堂科技有限公司 京ICP备13018289号-1 京公网安备11010802015183