일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- Gas
- 브론즈
- 네트워크 기초
- 언리얼엔진5 #언리얼 클라이언트 프로그래밍
- A* Algorithm
- Module
- Console
- c++ 베이직
- 순환 리스트
- 언리얼 엔진5 #언리얼 클라이언트 프로그래밍
- UE_5
- 백준
- 코드리뷰
- Toon Shading
- 메테리얼
- 헤더 경로
- CS50
- Harvard
- 언리얼
- Unreal
- topdownmove
- C++
- CS
- build.cs
- 오늘밤 세계에서 이 사랑이 사라진다 해도 #독후감 #오열
- 툰쉐이딩
- leetcode
- 원카페#무인카페#카페추천#카페맛집
- STL
- 폭설 #미친 날씨
- Today
- Total
목록C++/탐구 (9)
WN_인생기록

2차원 배열에 대해서 공부하다가, 터미널 창에 일정한 크기로 배열을 출력하고 싶었다. " " 로 처음에 했으나, 10자리부터 계속 밀려서 원하는대로 출력이 안되었다. 그래서 STL을 찾아보던 중, 일정한 간격으로 출력이 가능한 기능을 찾았다. iomanip STL 자체가 입력 출력 스트림 형식을 조절하는데 사용하는 라이브러리였고 그 중에서 setw(n) 라는 기능으로 공백을 조절할 수 있었다. left,right로 정렬까지도 할 수 있고 생각보다 유용했다. 또다른 기능으로는 fixed -> setprecision(n) 이라는 기능인데 소수점을 원하는대로 출력할 수 있게 하는 기능이다.
헤더에 있는 함수이며 사전순으로 오는 순열을 생성하는 기능을 가지고 있다. 특히 완전탐색이라던가 조합의 모든 경우를 구하는 문제에서 주로 활용할 수 있을거 같다. 사용할때는 주로 do while 문과 자주 쓰이게 된다. 왜냐하면, 함수가 호출될떄마다 주어진 범위의 요소를 순열로 배치하기 때문에 모든 순열을 반복할 수 있다. (do while로 처음 상태까지 포함해서 배치) sort(numbers.begin(), numbers.end()); do { for (int j = 1; j

이제는 본격적인 A* 에 대해 진행할 예정이다. 이전의 포스트를 올리면서 코드를 분석해보니, 생각보다 이해안되었던 부분들도 하나하나 보면서 이해했다. void Solve_AStar() { //전체 노드 훑으면서 for (int x = 0; x < nMapWidth; x++) { for (int y = 0; y < nMapHeight; y++) { // 초기화 시키기 nodes[y * nMapWidth + x].bVisited = false; nodes[y * nMapWidth + x].fGlobalGoal = INFINITY; nodes[y * nMapWidth + x].fLocalGoal = INFINITY; nodes[y * nMapWidth + x].parent = nullptr; } } // 두 ..

앞에 포스트에서 기초 세팅이 끝났으니, Update를 해야한다.(아직 그려진거 없음) virtual bool OnUserUpdate(float fElaspedTime) { // 노드의 사이즈와 두께를 정해준다. int nNodeSize = 9; int nNodeBorder = 2; // 마우스 위치를 기반으로, 노드 단위의 위치 식별 int nSelectedNodeX = m_mousePosX / nNodeSize; int nSelectedNodeY = m_mousePosY / nNodeSize; // 마우스를 놓으면 if (m_mouse[0].bReleased) { // 맵의 노드 범위 안에서 if (nSelectedNodeX >= 0 && nSelectedNodeX < nMapWidth) { if (n..
맨날 나중에 배워야지 하고 넘어갔던 부분이다. 정의는 프로그램내에서 동시에 실행될 수 있는 실행 단위를 뜻한다. 멀티 스레드란 하나의 프로세스 안에서 여러 스레드를 생성하여 병렬로 작업을 처리할 수 있게 하는 기능이다. #include #include using namespace std; void makelog() { cout
프로그래밍 하다보면 은근 lvalue 에러를 흔하게 접하게 된다. 간단한 실수에서 비롯된 에러지만 정확하게 원인을 알아서 다음번에 안 생길 문제이다. 정확한 정의와 지식을 파악해보자 Lvalue : 이름(변수) 를 통해 접근할 수 있는 값. Rvaule : 값 자체. 리터럴 1 은 rvalue 임. 임시 레지스터를 제외하면 특정 메모리 주소가 없음. int a = 1; // a는 lvalue 1은 rvlaue int b = 2; // b도 lvalue 2는 rvlaue int c; 3 = c; // error 가 남. 리터럴 상수에 rvalue이기 떄문에 특정 메모리 주소가 없기에 주소를 할당시키려고 하면 에러가 나는것. 그래서 할당 연산자 = 를 기준으로 lvalue와 rvalue를 구분하는것이 외우기..
매번 while문 쓸때마다, While 조건에 대해서 고민하게 된다. 이게 true인가 false 인가 ... 맨날 헷갈렸는데 이참에 정리하도록 해보자 일단 무조건 while은 조건이 true일때 while 본문이 실행되며, 조건이 false 가 될때까지 while문이 반복되는 형태이다. 잊지 말자 #include using namespace std; int main() { int x = 0; // 본문이 시작되기 전에 조건이 먼저 평가됨 // 본문이 시작되기 전에 조건을 확인 하는지 while (x < 5) { cout