목록전체 글 (42)
발전하는 춘배
이제는 로그라이크 느낌이 나도록 제대로 된 맵을 만들어보려고 한다.맵을 만드는 데에는 여러 방법이 있겠지만 잘 알려진 알고리즘인 BSP를 이용하여 만들어보고자 한다.BSP 알고리즘: https://nowitzki.tistory.com/9구현: https://nowitzki.tistory.com/10이 두 글을 잘 참고했다. 1. BSP 알고리즘BSP는 Binary Space Partitioning의 약자이다.즉, 전체 공간을 두 부분으로 재귀적으로 나누는 알고리즘이다.공간을 두 부분으로 나누며 트리 형태로 저장한다. 시작할 때의 전체 공간은 0번 노드이며, 그를 분할해 나온 두 공간은 0번 노드의 자식인 1, 2번 노드가 된다.n번 재귀적으로 반복하여 트리를 만든다.리프 공간들에 대해 각 공간을 초과하지..
1. 공격이동이 가능해졌으므로 이제 전투를 해보자.플레이어가 이동한 곳에 적이 있다면, 서로 맞딜하여 피를 깎아본다.이를 위해 tryMoveEntity 로직에 공격 로직을 추가해준다.때려보고 잡았으면 그 자리로 이동하고, 못 잡았으면 원래 자리에서 한대 맞는다. int newX = entity->getX() + x; int newY = entity->getY() + y; if (currentMap->getTile(newX, newY).props.walkable) { entity->move(x, y); Entity *target = getEntityAt(newX, newY); if (target != nullptr && target->getState() != EntityState::D..
1. 플레이어 이동 함수 호출에 대한 고민플레이어 이동을 구현해보자.큰 틀은 이렇다.1) 플레이어는 자신을 이동시키는 API를 갖고있다. 입력은 변화시킬 x와 y이며 자기 자신의 좌표를 그만큼 업데이트한다. 2) 생각해보면 플레이어뿐 아니라 다른 적(Entity)들도 이동은 가능하므로 이 API는 Entity라는 클래스에 넣는다. 일단 플레이어와 적 말고 다른 엔티티는 구현하지 않을 것이므로 따로 MovingEntity같은 클래스는 만들지 않는다.3) 이 API는 Game이라는 클래스에서 호출할 것이다. 이렇게 만들면 지금은 콘솔 input기반으로 moving API가 호출되겠지만, 나중에 UI 등 다른 input으로 변경할 때 호출되도록 변경하기 용이할 것이다. 여기서 이런 고민이 생겼다. map의 범..