일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- topdownmove
- Harvard
- c++ 베이직
- 언리얼엔진5 #언리얼 클라이언트 프로그래밍
- 메테리얼
- 백준
- CS50
- Module
- 언리얼 엔진5 #언리얼 클라이언트 프로그래밍
- Toon Shading
- Unreal
- Console
- leetcode
- build.cs
- STL
- A* Algorithm
- 순환 리스트
- 툰쉐이딩
- CS
- C++
- 브론즈
- UE_5
- 네트워크 기초
- 언리얼
- 폭설 #미친 날씨
- 코드리뷰
- Gas
- 오늘밤 세계에서 이 사랑이 사라진다 해도 #독후감 #오열
- 헤더 경로
- 원카페#무인카페#카페추천#카페맛집
- Today
- Total
목록A* Algorithm (3)
WN_인생기록

이제는 본격적인 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..

https://youtu.be/icZj67PTFhc?si=qGwdtC5PYNqeaHSr 이분의 영상 자료와 C++ 콘솔로 그래픽 엔진을 제공해줘서 이분의 코드를 분석해볼 예정이다. (이 분이 제작하신 콘솔 게임 엔진에 대한 코드 리뷰도 따로 진행할 예정) 코드 분석을 위한 간단한 양식을 생각해봤다. 코드의 목적 코드의 구조 파악 핵심 로직 분석 함수, 클래스 계층 구조 파악 성능구조 및 리팩토링 부족한 문서화 보충 이런식으로 진행할 예정이다. 코드의 목적 -> A* 알고리즘을 가시적으로 보이게 하고, 그 원리를 이해할 수 있도록 구현. 코드의 구조 파악 클래스 PathFinding -> 콘솔 게임 엔진 헤더 상속받음 virtual로 상속받은 UserCreate 와 UserUpdate 안에서 배경 및 UI..