Key-Value 자료구조
·
내배캠/C++
DAT(Direct Adress Table)는 데이터 값을 직접적으로 키 값(Index)으로 사용해 데이터 정보를 저장하는 구조인데,이와 같은 방식은 데이터가 음수이거나 엄청 큰 수일 경우 활용할 수 없다는 단점이 있다. 이를 보완한 것이 Key-Value 자료구조이다. 내부 원리는 Hash 와 BST로 나뉘게 되는데 Hash를 먼저 직접 구현해볼 것이다.Hash-Table은 요소 값을 Key(Index)로 바로 사용하는 것이 아닌, HashFunction을 거쳐 만들어진 HashCode를 바탕으로 새로운 Key를 만들어 Bucket에 요소를 배치한다. 이때 요소들은 특정한 순서로 정렬되지 않는다. 동일한 HashCode를 가진 요소는 동일한 Bucket에 저장되며, 이로인해 요소를 검색, 삽입, 제거 ..
24.12.20 (금)
·
내배캠/TIL
특정 액터 콜리전에 플레이어 캐릭터가 충돌하면 게임이 종료되는 로직을 짜던 중 막히는 부분이 있었다. 게임을 종료시키는 액터 클래스 블루프린트에서 레벨 블루프린트에 있는 이벤트 함수를 호출하려고 했는데, 액터 블루프린트에서 레벨 블루프린트에 있는 이벤트 함수를 호출할 수 가 없었던 것이다. 하연 튜터님게서 이벤트 디스패처에 관해 공부해보면 해결할 수 있을 거라고 하셔서 이벤트 디스패처를 조사하고 문제를 해결하였다.  *Event DisPatcher에 관한 정리https://dong-grae.tistory.com/44 Event DispatcherEvent DisPatcher역할:객체 내부에서 특정 이벤트가 발생했을 때, 이를 외부에 알리는 시스템이다.객체 간의 상호작용을 캡슐화 하여, 이벤트를 발생시킨 ..
24.12.19 (목)
·
내배캠/TIL
레벨 디자인유튜버들 사이에서 가끔씩 즐기는 항아리게임, 사슬게임과 같은 플랫폼 게임을 만들기 위해 레벨 디자인을 하였다. 처음 생각으론 간단할 거라고 생각했지만 각 플랫폼을 배치할 때마다 플레이어가 이동이 실질적으로 가능할지, 장애요소가 어느 정도의 난이도인지, 세이브 포인트는 어느 지점이 적절할지 등등 많은 요소들을 생각하고 설계해야했다.  추후 기능을 구현하고 테스트해보면서 미세 조정이 굉장히 많이 들어가야할 것 같고, 플랫폼 게임 역시 플레이어와 굉장히 많은 상호작용을 한다는 것을 이번 레벨 디자인을 해보면서 많이 느꼈다.
std::string::substr
·
공부/Code Cata
std::string substr(size_t pos = 0, size_t len = npos) const; pos:부분 문자열이 시작될 Index이다.기본값은 0이며, 해당 Index부터 값이 추출된다.len:추출할 문자열의 길이다.기본값은 npos로, 이 경우 pos부터 문자열 끝까지 추출한다.주어진 위치와 길이에 해당하는 부분 문자열을 반환하고 반환 값은 새롭게 생성된 std::string이다. #include #include using namespace std;string solution(string s) { string answer = ""; int StringLength = s.size(); if(StringLength % 2 == 0) { int Ta..
std::min_element
·
공부/Code Cata
vector 안의 최소 값을 탐색하는 방법에 대해 연구하다가 min_element 함수를 알게 되었다.ForwardIterator min_element( ForwardIterator first, ForwardIterator last ); 최소값을 가리키는 iterator를 반환한다.만약 주어진 범위가 비어 있다면, last 값을 반환한다. 헤더에 정의되어있다.ForwardIterator max_element( ForwardIterator first, ForwardIterator last );반대로 최대 값을 가리키는 iterator를 반환하는 함수   #include #include #include using namespace std;vector solution(vector arr) { if..
24.12.18 (수)
·
내배캠/TIL
블루프린트 이용한 비주얼 스크립팅 처음에 Branch를 Return Node에 연결만 했는데 AI가 공격을 아에 하지 않았다.어떤 문제가 발생한 것인지 찾아보니 Branch에 True핀과 False핀이라고 명시되어있어서 Branch가 해당 Bool값을 반환한다고 착각하고 있었다.Branch는 C++에서 if문과 동일하다. 그래서 각 핀은 데이터를 반환하는 것이 아닌 단순한 실행 흐름으로 나누어 놓은 것이란 걸 알 수 있었다.따라서 Make Literal Bool 노드와 Not Boolean 노드를 사용해 명시적으로 Bool 값을 Return Node에 전달해 반환할 수 있게 하였다. 이로써 해결이 되는 듯하게 보였으나 AI가 난수를 적용 받지 않고 계속해서 나를 공격해왔다...무엇이 잘못된건지 한참을 살..