`
无量
  • 浏览: 1132377 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Java游戏开发基本知识二

阅读更多
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语言挖雷游戏开发

    掌握Java的基本知识后,希望通过此次的课程设计来巩固和提高Java编程技术,从整体上了解使用Java语言在应用系统开发和网络开发中的技巧。进一步巩固课堂上所学到的知识,深刻把握Java语言的重要概念及其面向对象的...

    Fundamental 2D Game Programming with Java by Timothy M. Wright

    学习2D游戏开发基础,是快速积累游戏开发经验的关键。理解了2D环境的要素,将能够为游戏开发打下坚实的基础。本书使用Java教授基础知识,包括应用编程、全屏游戏、输入处理、矩阵变换、基础物理、相交测试、碰撞检测...

    计算机程序设计(Java)-教案--单元二--Java语言开发基础.docx.docx

    课程名称 Java程序设计 教师姓名 专业班级 授课时间 授课地点 学时数 8 授课题目 §2Java语言开发基础 教学目标及要求 知识目标 掌握Java语言的基本组成; :・掌握数据类型、变量、运算符及表达式; :・掌握三种...

    java编写扫雷游戏

    运用java图形化开发,结合java基本知识,编写的扫雷游戏

    java基本的知识结构

    JavaME,用于开发嵌入式应用(例如手机游戏);JavaEE,用于开发企业级WEB应用。国内公司对Java的需求多数集中在J2EE(Java企业级应用)方面,即用Java、JSP结合数据库进行B/S结构的Web应用开发。故要想能更好地去...

    从零开始学Java ME手机开发光盘

    从零开始学Java ME手机开发光盘,该书系统地介绍了Java ME在...本书适合于具有基本Java编程知识并对开发移动应用程序有兴趣的读者,对读者的移动应用程序开发经验没有任何前提要求,可以从零开始学会Java ME手机开发。

    Java游戏设计打飞机程序源代码

    使用本系统需掌握Java语言编程的基础知识,需要了解基本面向对象编程,掌握JavaFX的基础开发知识等。在使用本系统时,请遵循相关的规则,并保护良好的网络安全,不得进行不良行为、违规操作、或任何形式的恶意。

    飞机大战 - Java FX入门级小游戏 - 帮你快速熟悉Java FX

    你能学到什么:1.canvas画布的基础知识,canvas是Java FX做游戏的必备知识。2.游戏的基本逻辑:碰撞体积的检测,上下左右的移动,接收键盘的信息,游戏的刷新率帧数,游戏的开始结束逻辑等。3.Java FX的基础知识:...

    Java典型应用彻查1000例 图形与网络游戏开发

    Java典型应用彻查1000例 图形与网络游戏开发. 北京市:科学出版社 【内容提要】 本书是丛书第三册,内容涵盖Java基础动画到网络在线游戏,循序渐进地介绍了基础图文动画、事件处理、在线游戏、2D绘图设计、3D绘图...

    Beginning Android Games( Android 游戏开发入门)

    作者: Mario Zechner 资源格式: PDF 出版社: Apress 2011....这本书是为具有基本的Java知识的人谁想要写在Android平台上的游戏。它还提供了有关的缺陷和平台的特殊性,经验丰富的游戏开发人员的信息。

    Java毕业设计-java手机游戏(堡垒)的设计与开发(源代码+论文).rar

    该项目旨在通过毕业设计的实践,使学生能够综合运用Java编程知识,掌握游戏设计的基本原理和开发流程。 **项目简介** “堡垒”是一款策略类游戏,玩家需要利用有限的资源建造和升级防御工事,抵御敌人的进攻。游戏...

    Java实现的贪吃蛇游戏代码

    实践游戏开发:贪吃蛇游戏是一个经典的游戏,通过实现它可以了解游戏开发的基本流程和技巧。 拓展和定制:大家可以根据自己的需求对代码进行修改和扩展,增加更多的功能,如增加障碍物、实现多个关卡等。 代码中...

    java课程设计报告贪吃蛇游戏设计.doc

    基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行 软件开发、并在实践应用方面打下一定基础。 2.1工程概况 2.1.1案例提出及工程用时 经过两天在图书馆以及网络上查阅的资料,然后提出这次课程设计的...

    JAVA上百实例源码以及开源项目

    内容索引:JAVA源码,游戏娱乐,JAVA游戏源码  JAVA编写的吃豆子游戏,类似疯狂坦克一样,至少界面有点像。大家可以看截图。 Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 Java...

    JAVA上百实例源码以及开源项目源代码

    内容索引:JAVA源码,游戏娱乐,JAVA游戏源码  JAVA编写的吃豆子游戏,类似疯狂坦克一样,至少界面有点像。大家可以看截图。 Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 Java...

    Java网上五子棋游戏设计(代码+设计文档)

    【作者】 傅伟,吴希忠 【来源】JavaThinker.org 本程序是一个基于网络协议为... 通过本程序,我们初步熟悉并掌握java语言的基本知识,掌握服务器-客户端的网络架构模式,为以后学习高级web开发课程做准备。

Global site tag (gtag.js) - Google Analytics