简单模拟:快进和正常定时器

时间:2012-03-16 13:37:04

标签: c# timer simulation

简单的绘制和移动模拟使用以下内容:

时钟计时器。间隔: 200ms 移动计时器。间隔: 1ms 移动常数。值: 2。

每次移动计时器勾选时,图片会根据移动常数加上移动。 (即picture.X = picture.X +运动常数)

问题是快进。用户可以随时快速进行模拟。

如何更改这三个值(时钟计时器,移动计时器,运动常数),以便在快速转发运行期间更快地模拟速度而不牺牲完整性?

3 个答案:

答案 0 :(得分:2)

如果用于快进的整数倍(1x,2x,3x,...)足够,则可以在定时器处理函数期间多次运行模拟函数。

我不知道你在使用时钟计时器做了什么,但同样的原则也适用于它正在做的事情。

答案 1 :(得分:1)

你可以拥有一个独立于“实时”的“内部时间”。当系统以基本速度运行时,这两个同步增加(定时器的每个滴答 - 设置为1毫秒 - 内部时间增加1毫秒。
如果你有一个2倍的加速乘数,那么每个定时器滴答的内部时间加2ms。

接下来,你必须根据内部时间计算位置,可能还有像

这样的函数
newposition = startposition + speed * time

答案 2 :(得分:1)

汉斯暗示,在大多数模拟中,时间和空间都有“粒度”。然后通过跳过时间间隔('滴答')来安排代理。但是,如果您需要更灵活且经过良好测试的调度,您可能希望从ABM仿真包借用调度程序,例如Mason(用于Java)或Repast(Java或C ++),或查看其开源调度程序类代码并翻译成另一种语言。