BFS在Roguelike游戏中生成房间的应用
RogLike游戏中,生成房间后,我们可以使用广度优先遍历的思想,利用队列实现找到最远距离的房间并返回,这种方法对各种生成的地牢的兼容性较好,但也较为复杂。
解决了一些如“:U字形地牢”(起点道终点的距离不是最远但玩家到达终点的路程最长)不能很好的选择终点的问题,如图:
下面附上 C#中 广度优先遍历的代码(BFS):
private void RoomColor()
{
roomList[0].GetComponent<SpriteRenderer>().color = startColor;
GameObject endRoom = GetFarthestRoom();
endRoom.GetComponent<SpriteRenderer>().color = endColor;
}
private GameObject GetFarthestRoom()
{
GameObject endRoom = roomList[0].gameObject;
//foreach (var room in roomList)
//{
// if (RoomDistance(room.gameObject) > RoomDistance(endRoom))
// {