通常使用计数器进行计时、会使用系统时间或者游戏时间而得出、比如windows有从windows启动到现在的时间函数、而SDL也有从游戏启动到现在的时间函数、但莪们使用计数器能使用的条件就是据此来计算出莪们需要的游戏时间、

下面先让莪介绍一下这些变量含意

getSDL: 游戏从开始到现在的时间

start:开始的时间点

pause: 暂停的时间点

used: 使用时间

wait: 等待时间

绿色条:使用时间

蓝色条:等待时间

假设游戏开始马上开始计数、赋值start当前秒数为游戏开始时间、也就是0(实际上这不大可能、然后游戏初始化肯定会花费些时间、大概会花几十毫秒的时间吧)、所以时间使用时间就是used = getSDL - start

玩家按下暂停时间键、此时出现暂停点、所用时间固定为当前的uesd = getSDL - start、

玩家按下暂停后、使用时间停止、使用时间一直停留为当时按下暂停前停留的那一刻、而游戏启动时间的getSDL仍然在持续增加、但不会增加使用时间

玩家再次按下暂停键、重启计数器、这时、重置开始点Start、这时置换等待时间和使用时间轴、把等待时间放置在Start之后、从而保证Start之前始终为无用的等待时间、Start之前为使用时间、非暂停状态下、公式再次适用、 used = getSDL - start

经过了一段时间的使用、玩家再次按下暂停键、pause重新设定为当前getSDL获得的时间点、如之前所说、暂停后、使用时间不再增加、使用时间总是固定为按下暂停那刻的时间点减去开始点、也就是 used = getSDL - start

再次重复之前的样子、使用时间不再增长、等待时间不断的再增长、请记住、以下公式总是成立 getSDL = wait + used、 也就是游戏启动时间总是恒等于等待时间加上游戏使用时间、由于游戏启动时间是不断增长的状态、所以不是游戏使用时间增加了就是等待时间增加了

然后玩家再按下暂停键、重开游戏、开始时间点被重设、 start = getSDL - used、等待时间被合并、并且与游戏使用时间置换、从而保证start始终在等待时间之后、现在游戏使用时间再次等于used = getSDL -start

关于游戏的实现的源代码、可以去http://lazyfoo.net/SDL_tutorials/lesson13/index.php这里下载、注意那里把used使用时间叫做pause、与这时的描述不同

计数器的代码的原理分析相关推荐

  1. HRNet代码及原理分析(一)-- 网络结构

    HRNet代码及原理分析(一)-- 网络结构 通常来说,目前市场上主流物体关键点的方法一般分两类:基于坐标回归,热力图.而后者主要是由高到低分辨率网络然后由低分辨率网络再转到高分辨率网络中(high- ...

  2. 编译原理语义分析代码_Pix2Pix原理分析与代码解读

    原理分析: 图像.视觉中很多问题都涉及到将一副图像转换为另一幅图像(Image-to-Image Translation Problem),这些问题通常都使用特定的方法来解决,不存在一个通用的方法.但 ...

  3. tensorflow: deep_dream代码及原理分析

    deep_dream: tensorflow_inception_graph.pb 下载地址:https://storage.googleapis.com/download.tensorflow.or ...

  4. tensorflow——openpose代码和原理分析

    做openpose已经做了两个月了,精度和速度都还没有提上去,但是还是要总结一下. 人体姿态估计(pose estimation)的目标 实时地对图片中每个人的姿态进行精准的估计.总结起来,就是实时的 ...

  5. matlab中运用demod解调程序,matlab调制解调源码有代码解释原理分析

    解调程序\am\am模拟信号调制解调\am.m .............\..\..................\am_demod.m .............\..\............ ...

  6. 2021SC@SDUSC-PALISADE(三)BGV原理分析与python实现

    2021SC@SDUSC 目录 BGV原理分析 1 符号说明 2 多项式运算 3 Learning With Error 与 Ring Learning With Error 4 构建一个全同态体系 ...

  7. BSV智能合约(二):计数器合约代码分析

    为了实现上一篇文章中说的"计数器合约",需要介绍BSV上的高级语言sCrypt,并解释如何用sCrypt实现这个合约. sCrypt和BSV脚本的关系就像C语言和汇编语言的关系.通 ...

  8. 后门BROOTKIT代码学习和原理分析

    周末闲来无事,想找点东西学习一下,随手翻到了之前看到的一篇关于brootkit的文章,知道它是用Bash写的一个后门程序.刚好最近在做Bash相关的工作,就想着学习一下这方面的知识,稍作整理之后就有了 ...

  9. Adaboost算法原理分析和实例+代码(简明易懂)

    Adaboost算法原理分析和实例+代码(简明易懂) [尊重原创,转载请注明出处] http://blog.csdn.net/guyuealian/article/details/70995333   ...

最新文章

  1. linux avahi-daemon进程 网络服务 简介
  2. Apache 2配置域名绑定的步骤
  3. flash cs3 代码提示 应该加强
  4. 使用Hibernate和Spring设置分布式Infinispan缓存
  5. html如何让图片跟字体重叠,CSS设置图片与文字的间距
  6. 计算机二级vb操作题如何给分,计算机二级vb操作题.docx
  7. java数组的初始化方式
  8. SSO单点登录Spring-Security+CAS+使用手册.doc
  9. python画椭圆的逻辑_在Python中绘制椭圆轨道(使用numpy,matplotlib)
  10. Java线程与Android线程,Android线程篇(三):深入理解Java线程池(一)
  11. zk监控集群几点变化 给管理员发邮件
  12. Qt QLabel实现自动换行 字符断行 自适应
  13. Cognos report studio 清单表优化实录
  14. 5V升压充电12.6V锂电池方案
  15. 美颜滤镜API算法代码解析
  16. gitLab私服-转帖记录
  17. vscode远程连接与控制使用
  18. react学习笔记(二)
  19. 多年后再回头看那海市蜃楼
  20. 爬虫技巧-西瓜视频MP4地址获取

热门文章

  1. Go/Goland 开发笔记
  2. 最全的硬盘修复专题帖(转贴)
  3. 【JavaEE】TCP的五层协议栈之应用层与传输层的UDP协议
  4. 大白菜U盘启动盘制作工具完整使用教程
  5. 浏览器插件:脚本注入插件Tampermonkey(油猴)
  6. HashMap的树化门槛为什么是8
  7. Apache Doris1.0版本集群搭建、负载均衡与参数调优
  8. 见过贪婪的,没见过这么贪婪的
  9. HTML+CSS实现一个淡显淡隐轮播图
  10. 6个小众口碑却非常好的APP,收藏起来,变身手机达人!