“Frogger”游戏算法

时间:2012-08-25 10:02:26

标签: algorithm

这是一个面试问题。设计一个算法来玩“Frogger”。也就是说,你指挥一只必须穿过繁忙道路的青蛙。青蛙可以向前/向后和向左/向右移动,汽车只能向左移动,青蛙和汽车一次只能移动一个位置。

我想知道如何减少到一些基本的众所周知的算法。如果游戏中没有“时间”,我会建立一个安全位置图并找到通往青蛙目的地的路径。但是,我无法使用这种方法。

如何将减少“Frogger”解决一个众所周知的问题?

2 个答案:

答案 0 :(得分:1)

假设汽车和青蛙谨慎地移动,一次一个'方形',让我们用青蛙垂直移动(穿过马路)V的次数和青蛙水平移动的次数(如果你说5条车道,1-5,那么青蛙可以在T = X + 2 * V + H的时刻出现在X车道上。到目前为止,很好。

由于时刻T的每条车道上的车辆状态是确定性的,我们可以在未来合理的时间内生成整条道路的状态:L(1,T)L(2,T )... L(5,T)。我建议你产生形式为L(1,1 + 2 * V + H)L(2,2 + 2 * V + H)...... L(5,5 + 2 * V + H)的虚拟道路状态并寻找一种状态,在这种状态下,你有一条开放的直线到另一边,因此消除了时间成分。

实际上,你是强制性的,但没有理由你不应该假设合理数量的车道和允许的行动。

答案 1 :(得分:1)

我猜这样的事情会以简单的形式发挥作用。 (假设这是一个如何运行游戏,而不是如何解决它)

1) build array to store all tiles on map (each segment of road / water / log)
2) build list to store car / log locations
3) Set up a timer
4) on timer tick, update array of locations with full/empty tiles for each car / log in list (2)
5) check whether the current locaiton of the frog is in the same location as a log / car
6) repeat 4/5 while frog can move

类似的东西?