规格:
代理位于(最大)80x80 2D文本文本环境中。它可以移动
向前,向左旋转90度或向右旋转90度
转。
每次回合后,游戏客户端会向代理提供5x5阵列
紧邻代理商的世界(代理商位于
位于索引[2] [2]的中间)。
相对于提供的5x5阵列,代理始终朝北,
因此,如果他进行枢轴旋转,则整个5x5阵列将具有相同的
元素,但将在适当的位置旋转90度
方向。
我正在尝试通过世界的这些5x5片段构造一个全局地图数组,但是不确定如何进行此操作。我可以通过我编写的函数轻松确定相对方向(N,S,E,W),所以这不是问题。
到目前为止,我最好的想法是保留四个80x80数组,每个数组分别用于N,S,E,W。在朝特定方向前进时,我将在已定向的数组顶部添加一行,其中包含收到的新信息关于世界的信息,并将其适当地转换为剩余的3个数组。这里的主要问题是在已探查过的区域上进行重读时如何表现,以及如果数组中的行数和列数不相同,从而在未探查区域的拐角处存在小间隙,会发生什么情况,等等。 。
有任何想法吗?
最佳答案
假设世界总是那么小,而您对地形一无所知,那么我将制作一个足够大的数组以应对您可能处于任何起始位置(159x159)。让您的角色开始死在中间(在80、80),并假设他的开始姿势是前进意味着向前移动到79、80。将位置作为单元格坐标进行跟踪,并在进行任何移动时将每个动作映射到新位置(实际上是移动或只是旋转)。