`
无量
  • 浏览: 1148460 次
  • 性别: 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游戏开发中,你需要熟悉类、对象、封装、继承和多态等基本概念。同时...

    Java游戏开发入门源码合集

    Java游戏开发是一个涵盖众多技术领域的综合实践,这个“Java游戏开发入门源码合集”提供了15款游戏的源代码,对于初学者来说是极好的学习资源。通过这些游戏源码,我们可以深入理解Java在游戏开发中的应用,以及游戏...

    JAVA游戏开发实践

    1. **Java基础知识**:对于初学者,书会介绍Java的基本语法,包括类、对象、继承、接口等概念,这是所有编程的基础。此外,还会讲解多线程,因为游戏通常需要同时处理多个任务,如游戏逻辑、用户输入和渲染。 2. **...

    Java游戏开发ppt

    下面将详细探讨Java游戏开发中的关键知识点。 1. **Java基础**:在开始游戏开发之前,必须熟悉Java的基本语法,包括类、对象、继承、多态和接口等核心概念。理解面向对象编程是Java游戏开发的基础。 2. **JavaFX和...

    Java游戏编程小手册

    本资源是一个Java游戏编程的小手册,涵盖了Java游戏开发的基本概念、技术和框架。下面是从该资源中提炼出的知识点: 一、Java游戏开发概述 Java游戏开发是使用Java语言创建游戏的过程。Java语言可以用于开发2D和...

    Java游戏编程(游戏开发与编程序列).rar

    Java游戏编程是软件开发领域中的一个分支,它...这个“Java游戏编程(游戏开发与编程序列).rar”可能包含了这些知识点的讲解和实践,通过学习,开发者能够逐步掌握Java游戏开发的各个方面,从而创建出自己的游戏作品。

    java游戏开发高级教程

    《Java游戏开发高级教程》是一本面向有一定Java基础并希望深入学习Java游戏开发的书籍,主要基于JDK1.4版本进行讲解。虽然这个版本现在看来相对较旧,但其核心概念和原理对于理解Java游戏编程仍然是非常有价值的。...

    Java游戏开发

    总的来说,Java游戏开发涵盖了广泛的技能和知识,包括编程基础、图形渲染、物理模拟、网络通信、音频处理、性能优化以及游戏设计。通过学习和实践这个“Java游戏开发.rar”中的资源,你可以逐步掌握这些技能,成为一...

    Java游戏开发入门:构建飞机大战游戏框架

    在Java中开发飞机大战游戏是一个令人兴奋的项目,它不仅能够锻炼编程技能,还能让你深入了解游戏开发的各个方面。...希望本文能够帮助读者了解Java游戏开发的基础知识,并激发他们进一步探索和实践。

    游戏开发必学知识(入门步骤)

    ### 游戏开发必学知识(入门步骤) 在游戏开发领域,成为一名优秀的开发者不仅需要对游戏充满热爱,更需要掌握一系列必备的技术与理论知识。本文将详细介绍游戏开发的基础知识、编程语言选择、操作系统及API的学习...

    java手机游戏开发教程

    游戏引擎是开发过程中的重要工具,例如LibGDX是一个流行的Java游戏开发框架,它提供了一整套工具和库,包括图形渲染、物理模拟、音频处理、资源管理等功能。使用游戏引擎可以大大提高开发效率,让开发者专注于游戏的...

    手机JAVA游戏开发必备书下载

    《手机JAVA游戏开发必备书》是一本专注于微Java游戏开发的专业书籍,对于想要涉足或深入理解手机Java游戏开发的读者来说,它提供了丰富的知识和实践经验。Micro Java Game Development这一主题涵盖了移动设备上的...

    java网络游戏开发

    总之,Java网络游戏开发是一个综合性的技术挑战,需要开发者具备扎实的Java基础知识,良好的网络编程能力,以及对游戏设计的理解。通过不断学习和实践,可以开发出引人入胜、稳定可靠的网络游戏。

    Java手机游戏开发专辑

    它会讨论不同平台如J2ME(Java 2 Micro Edition)在手机游戏开发中的重要性,因为J2ME是Java在移动设备上运行的一个关键框架,尤其适用于功能手机和早期智能手机。这部分内容可能还会涵盖跨平台开发的重要性,以及...

    用Java开发的一些经典游戏源码

    总的来说,这个Java游戏源码集合提供了一个宝贵的实践平台,对于想要提升编程技能,尤其是对游戏开发感兴趣的开发者来说,这是一个不可多得的学习资源。通过深入研究这些源码,你不仅可以学会如何在Java环境中构建...

    java游戏开发之射击游戏

    总的来说,"java游戏开发之射击游戏"涵盖了Java编程、图形界面设计、游戏逻辑构建、用户输入响应、动画制作、状态管理以及音频处理等多个方面的知识点。通过这样的项目实践,开发者可以深入了解Java在游戏开发中的...

    Java游戏开发 Java游戏体验.pdf

    3. **学习Java基础知识**:这包括Java语言的基本语法、面向对象编程的概念(封装、继承和多态性),以及如何在Java平台上安装和使用开发工具。 4. **实践操作**:安装Java开发工具包(JDK),配置环境变量,如PATH...

    Java手机游戏开发专辑教程chm

    本教程涵盖了Java语言基础、手机游戏开发环境搭建、游戏设计理论、JavaME平台以及具体的手机游戏开发实例等多个方面,旨在帮助读者深入理解并掌握Java手机游戏开发的核心技术。 1. **Java语言基础**:Java是一种跨...

    java游戏编程入门

    ### Java游戏编程入门知识点 #### 一、Java游戏编程概述 Java作为一种广泛使用的编程语言,在游戏开发领域同样占据着重要的地位。对于初学者而言,掌握Java游戏编程的基础知识至关重要。 #### 二、Java游戏编程...

Global site tag (gtag.js) - Google Analytics