背景故事:我正在做一个简单的迷宫游戏,其中迷宫是程序生成的。我将迷宫表示为房间的2D阵列,其中4个布尔值存储房间的每个角是否都具有墙。(如果Room.south_wall == false,则表示该房间连接到其南部的房间。)每个房间都可以具有任意长度和宽度。为简单起见,我将其设置为在生成开始时就确定其长度和宽度,并将其应用于所有房间。播放器的位置使用2个浮点数存储,一个是其x坐标,一个是其y坐标。迷宫看起来像这样(黑色粗线是可见的墙,红色细线表示2d数组):
如您所见,每个房间的长度和宽度为3。我想做的就是根据玩家的位置确定玩家所在的房间。因此,例如,在这种情况下:
播放器在房间(1,0)中(我已标记房间的原点和中心(1,0)以帮助查看)
我知道这应该是一个简单的问题,但是几天来我一直无法提出任何建议。任何建议将不胜感激。让我知道这是否还不够。
如果您具有玩家位置px
,py
并且您的房间对齐,从而将room(0,0)居中于(0.0,0.0),则房间的索引为
#include<cmath>
ix = int(std::round(px / room_width));
iy = int(std::round(py / room_height));
此外,作为一般规则,这是最好的做room_width
和room_height
恒定的,而不是使用“裸装”(又名魔术)号码,以防万一以后要改变它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句