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

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

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

【 tulaoshi.com - 编程语言 】


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

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

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

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

(本文来源于图老师网站,更多请访问https://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

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

延伸阅读
介绍 本文通过一个简单的MIDlet游戏程序示例,简要介绍了MIDlet图形编程,以期能对开发者深入理解MIDP图形编程和开发复杂的移动游戏有所帮助。 一. MIDLET图形 1、MIDlet 图形简述 移动信息设备描述(Mobile Information Device Profile ,MIDP)定义了一套应用编程接口(API),用于运行在MIDP容器中的MIDlet应用程序...
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技术。 从机票预订系统、银行系统到购物系...
一.简介 今天我们要接触到令人敬畏的DirectX。它比Windows GDI要快好几倍,可用于不同的语言和多种平台,支持从绘制象素到高级3D图象,从播放简单声音到数字音乐,从键盘控制到反震手柄……它给你游戏编程所需的一切(有点夸张)。         当然了,它是巨大的,需要好几本书才能含盖它的全部。先不要去担心...

经验教程

110

收藏

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