A. 미로 맵 만들기
1. 기본 틀 생성하기
플레이어가 길찾기 하는 맵을 실습
(자료구조 알고리즘에 대한 기초 쌓기)
a. types.h 생성
📁 Main > 📄 types.h
변수 사용하기 편리하려고 작성하는 것
b. pch class 구현
1) 생성
📁 Main > 📄 pch.h
🌟 "프리 컴파일 헤더" 라는 뜻
자주 사용하는 헤더 파일을 모아두는 곳
모두 작성했다면 설정해주기
2) 설정
먼저 Maze 프로젝트 속성 변경
다음으로 pch.cpp 파일 속성 변경
💥 pch.h 파일 만들기 전에 생성한 파일들은 따로 #include "pch.h" 추가해줘야 함
(이후에 만든 파일들은 없어도 되지만 가끔 오류가 나는 경우가 있음)
🧡 소스 코드를 미리 컴파일 해야 하는 경우
3) 구현
- 좌표 pos 구조체 생성
(내용이 작아서 여기다 작성, 원래는 다른 곳에 만들고 pch.h에 추가해야 함)
x, y값을 따로 작성할 수 있지만 자주 사용되니 한번 만들어주자
- 방향이동 열거체 생성
열거체로 생성한 이유 : 이동 계산하기 편하게 하기 위해 (별것 없음)
총 개수 가지고 있으면 편해서 총 개수도 구현해줌
c. 맵 폴더 및 파일 생성하기
1) Board 폴더 생성
📁 Maze > 📁 Board
2) 클래스 생성하기
Board, ConsoleHelper, Player 클래스들을 생성
d. ConsoleHelper 작성
1) 📄 Consolehelper.h
ConsoleColor란 이름으로 색상을 정해주는 enum 생성
👉 enum class 공부하기
커서의 위치, 색상, 유무등을 구현
➡ 객체없이 생성하기 위해 static으로 생성
2) 📄 ConsoleHelper.cpp
내용 구현하기
◽◽◽ ConsoleHelper.cpp
#include "pch.h"
#include "ConsoleHelper.h"
void ConsoleHelper::SetCursorPosition(int32 x, int32 y)
{
HANDLE output = ::GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos = { static_cast<SHORT>(x), static_cast<SHORT>(y) };
::SetConsoleCursorPosition(output, pos);
}
void ConsoleHelper::SetCursorColor(ConsoleColor color)
{
HANDLE output = ::GetStdHandle(STD_OUTPUT_HANDLE);
::SetConsoleTextAttribute(output, static_cast<int16>(color));
}
void ConsoleHelper::ShowConsoleCursor(bool flag)
{
HANDLE output = ::GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO cursorInfo;
::GetConsoleCursorInfo(output, &cursorInfo);
cursorInfo.bVisible = flag;
::SetConsoleCursorInfo(output, &cursorInfo);
}
e. maze.cpp 기초 작성
📁 Main> 📄 maze.cpp
- 맵과 플레이어를 전역으로 생성
- 랜덤 시드값 생성
- 기초 틀 while문 생성
2. 미로 맵 생성하기
a. 맵사이즈, 타일 타입 enum 생성
📁 Main > 📄 board.h
b. class 작성
📁 Main > 📄 board.h
- 생성자 소멸자
- 함수들
- 사용할 맵 정보 구현하기
☁ 함수 순서
Init으로 맵 사이즈를 초기화 해주고 바로
GenerateMap()으로 미로를 생성해주고
생성된 미로 2차배열을 Render()로 렌더링 해주는데
GetTileType과 GetTileColor을 사용해서 꾸며준다
여기까지 만들고 빌드하면
c. 함수들 구현하기
📁 Main > 📄 board.cpp
0) 생성, 소멸자 구현
1) Init() : 초기화하며 맵사이즈를 만들어주는 함수 로직
보드를 생성하자마자 사이즈에 따라 맵을 생성할것임
2) render() : 실제 렌더링, 콘솔기능 추가
3) GetTileType() : 갈수있는 타일인지 판단
4) GetTileColor() : 타일 컬러색상 가져오기
로직을 제외한 미로 구현부만 재현한다면 이렇게 완성됨
5) GenerateMap() : 미로 생성
Binary Tree 미로 생성 알고리즘을 사용해서 미로를 구현할 예정
💙 Binary Tree
시작지점에서 오른쪽,아래 둘중 하나를 선택해 길을 뚫고, 마지막에 도달하면 (오른쪽 끝이나 아래 끝) 무조건 미로 맵 안쪽에서 끝나는 지점쪽으로 길을 뚫어줌
- 기본 Base 맵 생성하기
👉 여기서 길을 오른쪽 아님 아래로 뚫어줄것임 (GenerateMap() 계속)
- 미로 생성하기
'자료구조와 알고리즘 > Data Structure' 카테고리의 다른 글
[게임 프로그래머 입문 올인원] 선형 자료구조 3 : 스택 & 큐 (53강) (1) | 2024.02.15 |
---|---|
[게임 프로그래머 입문 올인원] 선형 자료구조 실습 2 : 플레이어 이동하기(51강) (0) | 2024.02.15 |
[게임 프로그래머 입문 올인원] 선형 자료구조 2 : 동적배열 (48강) (0) | 2024.01.23 |
[게임 프로그래머 입문 올인원] 선형 자료구조 1 : 연결 리스트 (47강) (2) | 2024.01.23 |
[게임 프로그래머 입문 올인원] 자료구조 : 선형과 비선형 기초내용 (46강) (0) | 2024.01.23 |