使用MIDP2.0开发游戏(6)设计Clock

2016-02-19 13:01 4 1 收藏

下面图老师小编跟大家分享使用MIDP2.0开发游戏(6)设计Clock,一起来学习下过程究竟如何进行吧!喜欢就赶紧收藏起来哦~

【 tulaoshi.com - 编程语言 】


  Clock负责提供一个真实时间和一个虚拟时间,真实时间从0开始按ms递增,和硬件时钟是同步的;虚拟时间也从0开始按ms递增,但不一定和真实时间同步。

  要获得系统时间可以用System.currentTimeMillies(),系统硬件有一个计数器,当计算机启动时,计数器从0开始每1ms加1,System.currentTimeMillies()返回从开机到现在经过的ms。我们不需要知道时分秒,只需要一个递增的整数计时就可以了。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  Clock改自Marshall "Game Programming Gems 3"中的C++代码,主要成员变量:
  thisTime:当前硬件时间,即System.currentTimeMillies()
  systemTime:游戏的系统时间,即把thisTime转换为从0递增的时间
  virtualTime:虚拟时间,从0递增,但和真实时间不同步

  代码如下:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  

package game.engine.core;class Clock {// Clock是否运行:private boolean running;// 当前hardware clock:private int thisTime;// record the last hardware clock when calling stop():private int lastTime;// systemTime从0开始递增,和硬件时钟同步:private int systemTime;// systemOffset就是硬件时钟和systemTime的差:private int systemOffset;// 上一次停止的systemTime:private int pauseAt;// virtualTime starts from 0.private int virtualTime;// virtualOffset records how long the clock paused:private int virtualOffset;private int frameStart;private int frameEnd;private int frameCount;public Clock() {reset();}// 重置Clock:public void reset() {running = false;// get the hardware clock:thisTime = (int)System.currentTimeMillis();lastTime = thisTime;// and systemTime starts from 0:systemTime = 0;systemOffset = thisTime;pauseAt = 0;// init virtual time:virtualTime = 0;virtualOffset = 0;// init frame time:frameStart = 0;frameEnd = 0;frameCount = 0;}// 同步hardware clock:private void update() {lastTime = thisTime;thisTime = (int)System.currentTimeMillis();// increase the systemTime:systemTime += (thisTime - lastTime);}// 启动Clock:public void start() {if(!running) {running = true;update();virtualOffset += (systemTime - pauseAt);System.out.println("[start]");}}// 停止Clock:public void stop() {if(running) {running = false;update();pauseAt = systemTime;System.out.println("[stop] at " + pauseAt);}}// Clock是否运行:pu

来源:http://www.tulaoshi.com/n/20160219/1602787.html

延伸阅读
5、GameScreen.java GameScreen使用了一个低级应用编程接口Canvas屏幕,和Image、Graphics类来绘制游戏面板、棋子,以及游戏的最终结果状态。要获取更详细的信息,请参阅各种绘画方法和drawCircle、drawCross、drawPiece、drawPlayerCursor、drawBoard等方法。这个屏幕使用MIDlet的quit回调方法来指示游戏结束。 此屏幕可适应各...
3~6岁右脑TuLaoShi.com开发的亲子游戏 3~6岁右脑开发黄金期,亲子游戏分享!图老师小编 如何纠正孩子的遗尿症 调整饮食:每天下午4点后,让宝宝少饮水,晚饭最好少吃流质,宜偏咸偏干些,临睡前不要喝水(夏天除外),也不宜吃西瓜、桔子、生梨等水果及牛奶,以减少夜里膀胱...
宝宝安全科学的吃肉方法 牛肉 食用季节:一年四季均可食用。 适用人群:牛肉性微温,各种体质的宝宝都可以吃。中医认为它能补脾胃、强筋骨,对身体瘦弱、贫血的宝宝更为适宜。 营养特点:蛋白质含量高达20%,富含血红素铁,是补血的好食品。同时,锌、硒等微量元素和各种B族维生素含量也比较高。 脂肪含量:普通牛肉...
标签: Java JAVA基础
  JSP(JavaServer Pages)技术是对Servlet的进一步抽象,它由JCP(Java Community Process)开发,是用于生成动态内容的开放式的、可免费获取的规范,也是J2EE(Java 2 Enterprise Edition)规范的重要组成部分。许多商业应用服务器如BEA WebLogic、IBM WebSphere、Live Jrun和Orion都支持JSP技术。 从机票预订系统、银行系统到购物系...
J2ME(Java 2 Micro Edition)的出现把Java开发者彻底地引入了开发无线设备应用程序的广阔天地。当然,移动设备因其功能和处理能力而多种多样,但是,J2ME通过定义configurations和profiles而对这些差异性进行了逻辑抽象,然后整合两种设置为在特定移动设备上开发应用程序提供了一套完整的平台和API。 连接限制设备配置CLDC(Con...

经验教程

245

收藏

37
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部