2014-05-15 3 views
0

저는 libtcod/C++ roguelike에서 일해 왔으며 작은 문제가 발생했습니다.아이템 및 몬스터 위치 추적

플레이어가 바닥을 통과하면 이전 층의 항목이 새지도에 머물러 벽에 올라가고 바닥에 갈 때마다지도가 습격 될 때까지 더 많은 항목이 생성됩니다.

액터의 현재 x/y가 나중에 다시로드되도록 보존되도록 특정 바닥 (시드가있는 경우)을 저장할 수있는 방법이 있습니까?

+0

지도와 그 내용을 어떻게 저장하고 있습니까? – PomfCaster

+0

지금은 PRNG에 따라 아이템을 놓은 다음 플레이어가 레벨을 내려 갔을 때 아이템을 삭제하는 것입니다. 나는 내지도 -> 저장 (지도의 FOV 유지)에 저장하려고 시도했지만 해결할 수없는 12 가지 오류가 발생합니다. –

답변

1

지도 세부 정보 (벽, 계단 등), 바닥에있는 항목 및 모든 괴물을 저장하는 Map 클래스를 만듭니다. 그런 다음 키가 바닥 번호 인 std::map<int, Map>을 만들 수 있습니다.

바닥을 변경할 때마다 std::map을 확인하여 해당 바닥의 Map 개체가 있는지 확인합니다.로드하지 않으면 새로 입력하지 않고 Map 개체를 만듭니다.

+0

나는 aleady가 bool을 사용하여 맵에있는 타일을 조사한 타일 구조체를 가지고 있기 때문에 withActors bool을 추가하여 타일에 액터가 있는지 확인할 수 있습니까? –

+0

당신은 할 수 있겠지만, 왜 당신이 그것을 '타일'구조에 저장하고자하는지 볼 수는 없습니다. – PomfCaster

+0

지도를 생성하는 BSP function은 맵을 생성 한 다음 isExplored가 true인지 여부를 확인하여 맵을 생성합니다. 나는 배우를 위해 똑같이 할 수 있다고 생각했다. (지도를 만든 다음, 배우 중 어느 것이 위치를 바꿨는지 확인한다.) –