我想在C#中执行离散事件模拟。我想在随机行走模式下同时在屏幕上滚动三个球。在时间1球1应出现并开始滚动,在时间5,球2和时间10,应出现球3。当任何两个球足够接近时,球的颜色应该改变(只要它们保持接近)。
我对离散事件模拟非常陌生,我想了解,我们如何在C#编程中做到这一点?创建模型需要哪些步骤。我知道图形和其他东西。
答案 0 :(得分:4)
建议新来者:
使用操作系统计时器或线程不是离散事件模拟应该起作用的方式。使用其中一个作为构建块可能会产生误导或明显错误。
首先阅读维基百科文章Discrete Event Simulation(DES)
有“模型”所谓的“形式主义”,在数学上证明可用于事件模拟。您需要实现一个(例如DEVS)。
您可能希望在维基百科上查看一些列出的DES List of discrete event simulation软件。
您也可以找到有关DES的有用sigmawiki(程序,示例,教程)。 SharpSim和React.NET是C#中的DES实现。
答案 1 :(得分:3)
使用计时器(将工具箱中的一个拖到设计器中的表单,或者如果您愿意,可以在代码中实例化)。双击计时器在代码中设置_Tick
事件,该事件将每N毫秒触发一次(计时器的.Interval
属性控制此事件)。将.Interval
设置为1000(1秒),并使用跟踪X和Y坐标中自己位置的对象。
使用Random
对象生成球的下一个位置变化的方向,并在计时器的_Tick
事件内,更新每个球的位置变量。
使用原始线程也是可能的,但是Timer可以为您提供一些功能而无需自己管理所有内容。