我正在制作一个类似于robocode的2D自上而下的编程游戏。 在舞台上将有多达1000个墙(线),并有多达50个机器人。 每个机器人都可以看到一个90度的弧线,而且看不到墙壁。 我需要一个有效的方法来计算每个机器人可以看到的(其他机器人和墙壁)。 我已经有一个网格的实施。 我想知道什么是解决这个问题最有效的方法。
如果该方法还包含绘制阴影以进行可视化的方法,那将是非常好的,但这不是必需的。
我正在使用C ++和Qt框架。
总结:主要问题是如何生成每个机器人可以看到的机器人和墙壁列表。 例如:
Robot 1 can see: Robot 6 Robot 15 A wall from (50,60) to (70,80) Robot 2 can see: ...
那么我建议把它们存储在某种场景图中,这样你只需要画出你能看到的东西,并且很容易计算出你能看到的东西。 而对于他们可以看到的,我建议光线投射或简化版本