Python:交通模拟(道路上的汽车)
我想创建一个交通模拟器,像这个一样:http://www.doobybrain.com/wp-content/uploads/2008/03/traffic-simulation.gif,不过我还没有想得很深入。
我会创建一个“车”的类。每辆车都有自己的颜色、位置等等。
然后我可以用一个数组来创建道路。
但是,怎么告诉车子该往哪里走呢?你们有什么想法吗?
编辑:向优秀程序员获取新想法是被禁止的吗?为什么有些人想要关闭这个讨论?那我该去哪里问这些问题呢?我不太理解他们。 :(
编辑2:下次我会去游戏论坛。我喜欢到目前为止的这些想法。谢谢!
7 个回答
这个模拟器背后的理论是排队理论。我在我母校的一个课程页面上找到了一些关键词,可能对你有帮助 - https://www.erasmus.cvut.cz/prospectus/FTS/11THO-E.html。模拟器本身会“简单一些”。
你不会告诉汽车该去哪儿,它会根据自己的速度自动前进。通过观察前方(比如它在几步之后会在哪里,还有没有路?),你可以判断是否需要调整速度。
而路不是一个简单的数组,它更像是一个矩阵或位图。在转弯的时候,你不能开得太快,否则就会飞出道路。
首先清楚地制定目标和范围总是个好主意。在这种情况下,你需要考虑建模的范围(涉及的物理原理)和汽车运动的复杂性(比如碰撞、沿着弯道行驶等等)。
我发现,如果你能用简单的英语(在我这儿是荷兰语)清楚地表达你的概念,写代码就会变得容易得多,有时候甚至是小菜一碟。
编辑
为了更清楚地说明,当我提到速度时,我指的是一个向量,它有大小(比如10英里每小时)和方向。你的向量会有两个元素,x和y,除非你还想考虑飞机,或者想建模山丘等(你不想要山丘,因为那样还得考虑重力:) 在这种情况下,就需要用到z位置和速度。
有一个基于Java的工具叫做processing,它主要是为艺术家和初学者设计的。这个工具有很多很棒的可视化功能,而且它的开发环境也很简单,比如说不需要写“public static void main(String[] args)”这样的复杂代码。你可以看看一些演示,特别是粒子系统的例子,这样可以帮助你理解如何模拟你的汽车。
还有一个Python版本的这个工具,叫做pyprocessing,它的编程方式也很简单,和Java版的差不多。
这是我做的一个小"tesla" 小程序 - 你可以在两个球形电极之间移动鼠标。