当前位置:首页 > 开发 > 编程语言 > Java > 正文

Java游戏开发基本知识二

发表于: 2014-03-24   作者:无量   来源:转载   浏览:
摘要: Java游戏开发基本知识二 1、抽象公共的窗口类,负责完成窗口的公共功能,如关闭窗口,建立窗口,重画线程 2、建立公共类Constant,放置项目中的常量 3、运用公共类来运行一个项目 4、轨迹的一些实现方式,定义弧度,通过弧度改变x,y值来实现任意估计 基础窗口类(父类) package com.hank.game; import java.awt.Frame; imp
Java游戏开发基本知识二
1、抽象公共的窗口类,负责完成窗口的公共功能,如关闭窗口,建立窗口,重画线程
2、建立公共类Constant,放置项目中的常量
3、运用公共类来运行一个项目
4、轨迹的一些实现方式,定义弧度,通过弧度改变x,y值来实现任意估计

基础窗口类(父类)
package com.hank.game;

import java.awt.Frame;
import java.awt.Image;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import com.hank.util.Constant;
import com.hank.util.GameUtil;
/**
 * 游戏基本知识学习类
 * 游戏窗口类
 */
public class BaseFrame extends Frame{      //GUI编程,awt,swing,jframe等
	private static final long serialVersionUID = -8342342546611528706L;

	Image image = GameUtil.getImage("images/95501.jpg");
	
	/**
	 * 启动主窗口
	 */
	public void launchFrame() {
		//如果更标准些,宽度和高度都应该从配置文件中读取
		this.setSize(Constant.GAME_WIDTH, Constant.GAME_HEIGHT);    //设置窗体大小
		this.setLocation(100, 100);        //设置窗体在屏幕显示的位置
		this.setVisible(true);             //设置窗体是否可见
		
		//启动重画线程,可以产生动态效果
		new Thread(new PaintThread()).start();
		
		//加个监听器,监听器用匿名内部类,监听窗口关闭动作,来执行相应动作
		//WindowAdapter类实现了三个重要监听接口WindowListener,WindowStateListner,WindowFocusListner
		//但WindowAdapter具体方法的实现没有写,需要我们手动完成
		this.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
	}
	
	/**
	 * 定义一个重画窗口的线程类,也是一个内部类,方便访问外部类属性,方法
	 */
	class PaintThread implements Runnable {
		public void run() {
			while (true) {
				repaint();     //重画相当于反复调用paint()方法
				try {
					Thread.sleep(40);//为了不太耗cpu,大约40ms重画一次,大约1s25张图片
				} catch (InterruptedException e) {
					e.printStackTrace();
				}  
			}
		}
	}

}

游戏开发工具类
package com.hank.util;

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

import javax.imageio.ImageIO;

/**
 * 游戏开发中常用的工具类
 * 工具类:1.通常将构造方法私有
 * 		   2.工具类基本都是静态的方法,方便调用
 */
public class GameUtil {
	/**
	 * 加载图片方法
	 * @param path
	 * @return
	 */
	public static Image getImage(String path) {
		URL url = GameUtil.class.getClassLoader().getResource(path); //要搞懂这句话 FIXME
		BufferedImage image = null;
		try {
			image = ImageIO.read(url);
		} catch (IOException e) {
			e.printStackTrace();
		}
		return image;
	}
}

游戏常量类
package com.hank.util;

/**
 * 项目中用到的常量
 */
public interface Constant {
	/**
	 * 游戏窗口的宽度
	 */
	public static int GAME_WIDTH = 800;
	/**
	 * 游戏窗口的高度
	 */
	public static int GAME_HEIGHT = 800;
	
}

游戏窗口主类
package com.hank.test;

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

import com.hank.game.BaseFrame;

public class GameFrame05 extends BaseFrame{
	Image image = GameUtil.getImage("images/95501.jpg");
	private int x = 200;
	private int y = 200;
	private double speed = 10;
	private double degree = Math.PI/3;        //[0,3.14*2]
	
	//在窗体里面画东西,这个是构造函数回调自动调用的,一定会被执行
	public void paint(Graphics g) {
		System.out.println("painting!!!");
		g.drawImage(image, x, y, null);  //通过每次画不同的位置实现动态效果
		
		if (speed > 0) {
			speed -= 0.1;
		}
		
		x += speed * Math.cos(degree);
		y += speed * Math.sin(degree);
		
		if (y > 600-40 || y < 30) {
			degree = -degree;
		}
		if (x > 600-40 || x < 0) {
			degree = Math.PI - degree;
		}
	}
	
	public static void main(String[] args) {
		GameFrame05 gFrame05 = new GameFrame05();
		gFrame05.launchFrame();
	}
}

Java游戏开发基本知识二

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
该文章转自 http://blog.sina.com.cn/s/blog_92dd4e470100vhsi.html WEB标准 WEB标准不是某一个标准
该文章转自 http://blog.sina.com.cn/s/blog_92dd4e470100vhsi.html WEB标准 WEB标准不是某一个标准
近期出现一款魔性的消除类HTML5游戏《神奇的六边形》,今天我们一起来看看如何通过开源免费的青瓷引
近期出现一款魔性的消除类HTML5游戏《神奇的六边形》,今天我们一起来看看如何通过开源免费的青瓷引
近期出现一款魔性的消除类HTML5游戏《神奇的六边形》,今天我们一起来看看如何通过开源免费的青瓷引
有了游戏开发初认识(一)的认识,下面我们自己开始写个场景类。 新建一个C++的类: 按照 HelloWorld
《Pro Android Games》的第二个案例,总体来说还是比较好理解的,其游戏的逻辑与SpaceBlaster基本相
在设置好开发环境后,我们开始编写一个最简单的程序,也就是hello world,并让它在手机上跑起来。
将事物绘制到画布上并让其运动起来 在本系列文章中,HTML5 专家 David Geary 将告诉您如何一步一个
赞助商链接 创意 设计 上海 广告 宣传手册 公司品牌网站 视觉识别 平面设计 www.yaean.com 淮海中路
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号