`

《Beginning Android Games》Chapter3给出的基本框架

阅读更多

一个游戏的基础框架大致分为这几个部分:

1 Window management

2 Input

3 File I/O

4 Graphics

5 Audio

6 Game framework

 

之后书中给出了具体每一部分接口的定义,如下:

Input接口

 

public interface Input {
	public static class KeyEvent{
		public static final int KEY_DOWN=0;
		public static final int KEY_UP=1;
	
		public int type;
		public int keyCode;
		public char keyChar;
	}
	
	public static class TouchEvent{
		public static final int TOUCH_DOWN=0;
		public static final int TOUCH_UP=1;
		public static final int TOUCH_DRAGGED=2;
		
		public int type;
		public int x,y;
		public int pointer;
	}
	
	public boolean isKeyPressed(int keyCode);
	
	public boolean isTouchDown(int pointer);
	
	public int getTouchX(int pointer);
	
	public int getTouchY(int pointer);
	
	public float getAccelX();
	
	public float getAccelY();
	
	public float getAccelZ();
	
	public List<KeyEvent> getKeyEvents();
	
	public List<TouchEvent> getTouchEvents();
}

 

 

FileIO接口

 

public interface FileIO {
	public InputStream readAsset(String fileName) throws IOException;
	
	public InputStream readFile(String fileName) throws IOException;
	
	public OutputStream writeFile(String fileName) throws IOException;
}

 

 

Audio接口 其中还包含了Music和Sound的接口定义

 

public interface Audio {
	public Music newMusic(String filename);
	
	public Sound newSound(String filename);
}
 

 

public interface Music {
	public void play();
	
	public void stop();
	
	public void pause();
	
	public void setLooping(boolean looping);
	
	public void setVolume(float volume);
	
	public boolean isPlaying();
	
	public boolean isStopped();
	
	public boolean isLooping();
	
	public void dispose();
}

 

 

 

public interface Sound {
	public void play(float volume);
	
	public void dispose();
}

 

 

Graphics接口的定义 包括Pixmap

 

public interface Graphics {
	public static enum PixmapFormat {
		ARGB8888, ARGB84444, RGB565
	}

	public Pixmap newPixmap(String fileName, PixmapFormat format);

	public void clear(int color);

	public void drawPixel(int x, int y, int color);

	public void drawLine(int x, int y, int x2, int y2, int color);

	public void drawRect(int x, int y, int width, int height, int color);

	public void drawPixmap(Pixmap pixmap, int x, int y, int srcX, int srcY,
			int srcWidth, int srcHeight);
	
	public void drawPixmap(Pixmap pixmap,int x,int y);
	
	public int getWidth();
	
	public int getHeight();
}

 

public interface Pixmap {
	public int getWidth();
	
	public PixmapFormat getFormat();
	
	public void dispose();
}

 

最后是Game接口的定义 以及抽象类Screen

public interface Game {
	public Input getInput();
	
	public FileIO getFileIO();
	
	public Graphics getGraphics();
	
	public Audio getAudio();
	
	public void setScreen(Screen screen);
	
	public Screen getCurrentScreen();
	
	public Screen getStartScreen();
}

 

public abstract class Screen {
	protected final Game game;
	
	public Screen(Game game){
		this.game=game;
	}
	//更新状态
	public abstract void update(float deltaTime);
	//刷新画面
	public abstract void present(float deltaTime);
	
	public abstract void pause();
	
	public abstract void resume();
	
	public abstract void dispose();
}

 

以上就基本实现了最简单的框架 觉得还是比较清晰的 所以照搬记录一下

 

最后Chapter3还提到了Frame Rate–Independent Movement 也就是固定帧数的问题 

例如若每次循环移动1个像素点 在60FPS的情况下 1秒就移动了60个像素 而30FPS则移动了30个像素 这样移动的速度相当于提升了2倍 作者给出的解决方案是根据deltaTime 计算应该移动的实际距离 也就是从x+=1 改成x+=30*deltaTime 30是希望的每秒移动像素值

 ————————————题外话——————————

再想到之前看到的一个介绍 游戏基本是一个循环 :  更新状态——重新绘制——休眠——更新状态

而其中的休眠时间并不是一个固定值 而是动态计算的 休眠长度=理想值-处理用去的时间 其实也跟上面的思路类似

 

0
0
分享到:
评论

相关推荐

    Beginning Android Games 3rd Edition.pdf

    Beginning Android Games, Third Edition gives you everything you need to branch out and write your own Android games for a variety of hardware. Do you have an awesome idea for the next break-through ...

    Beginning Android Games

    "Beginning Android Games, Second Edition offers everything you need to join the ranks of successful Android game developers, including Android tablet game app development considerations. You'll start...

    Beginning Android Games.pdf

    《Beginning Android Games》一书由Mario Zechner撰写,旨在为初学者提供全面的Android游戏开发指南。本书从Android平台的基础知识入手,逐步深入到游戏开发的各个环节,涵盖了从简单的2D游戏到复杂的3D游戏的开发...

    Beginning Android Games - Mario Zechner

    开始Android的游戏提供一切您需要加入Android的游戏开发成功的行列。你会开始与游戏设计基础和编程的基础,然后逐步实现建立自己的基本的游戏引擎和游戏可玩。这会给你一切你需要另辟蹊径,写自己的Andr​​oid游戏...

    Beginning Android Games [3rd Edition,2016]

    Beginning Android Games English | 6 Jan. 2017 | ISBN: 1484204735 | 636 Pages | PDF | 11.87 MB Learn all of the basics needed to join the ranks of successful Android game developers. You'll start with...

    Beginning Android Games 2012

    《Beginning Android Games 2012》这本书是一本关于Android游戏开发的专业教程书籍,由Mario Zechner和Robert Green共同撰写。该书以Android智能手机和平板电脑的游戏应用程序开发为主题,针对的是那些对Android游戏...

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

    - **书籍名称**:《Beginning Android Games》(Android游戏开发入门) - **作者**:Mario Zechner - **出版信息**:Apress出版社,2011年4月10日发行 - **ISBN**:1430230428 - **资源格式**:PDF - **语言**:英文...

    Beginning Android Games, 2nd Edition

    《Beginning Android Games, 2nd Edition》是一本深入浅出的Android游戏开发指南,由Mario Zechner与Robert Green合著。本书旨在帮助读者构建针对Android智能手机和平板电脑的游戏应用程序,涵盖了从基础知识到高级...

    Beginning Android Games(3rd) 无水印pdf 0分

    Beginning Android Games(3rd) 英文无水印pdf 第3版 pdf使用FoxitReader和PDF-XChangeViewer测试可以打开

    android.开发书籍 高清PDF Beginning Android Games

    《 Beginning Android Games》是一本专为想要学习如何在Android平台上开发游戏的开发者量身打造的专业书籍。这本书由Mark Murphy(知名Android开发者,绰号“Commons Guy”)和其他作者共同编写,提供了全面且深入的...

    Beginning Android Games,2nd Edition.pdf英文版

    《Beginning Android Games, 第二版》是一本专注于Android游戏开发的权威图书,由Mario Zechner和Robert Green共同撰写。本书旨在为读者提供一个全面的游戏开发入门教程,涵盖了从基础的游戏设计概念到高级的编程...

    Apress.Beginning Android Games.2011

    ### Apress.Beginning Android Games.2011 #### 知识点概览 - **Android游戏开发基础知识** - **Android SDK入门** - **游戏开发基础理论** - **OpenGL ES图形编程** - **2D与3D游戏编程技巧** - **Android游戏开发...

    Beginning Android Games(美)Mario.Zechner

    ### 关于《Beginning Android Games》的关键知识点 #### 一、书籍概述 本书是一本非常出色的Android游戏开发入门书籍,由Mario Zechner撰写。作者在书中深入浅出地介绍了从2D到3D游戏开发的基本原理和技术细节。...

    beginning_android_game源码和pdf版书本

    该资源可以在Google Code项目"beginning-android-games"中获取,这为开发者提供了一个实践和理论相结合的学习平台。 书本内容通常涵盖以下几个关键知识点: 1. **Android开发环境搭建**:首先,学习如何安装和配置...

    Beginning Android Games 1

    * Android平台的基础,适用于那些在游戏中基本面 * 2D和3D游戏的设计和他们在Android平台上的成功实施 你将学到什么 *如何开发你的第一个Android应用程序的设置和使用的开发工具 *在Android平台中的游戏编程的基础...

Global site tag (gtag.js) - Google Analytics