MakeLayout(LAYOUT_TYPE::STAT, 0, 2, 8, 25);
// 랜덤 방 종류 결정
RandomManager::GetInstance()->setRange(1.f, 100.f);
double randomValue = RandomManager::GetInstance()->getRandom 메인 함수void Scene2F::makeLayout() {
// Title Layout (2층 제목 설정)
WriteManager::GetInstance()->MakeLayout(LAYOUT_TYPE::TITLE, 0, 0, 1, 100);
WriteManager::GetInstance()->AddLine(FMessageParam(LAYOUT_TYPE::TITLE, "주황 욕망의 층", false, 0, TEXT_COLOR_TYPE::WHITE, BACKGROUND_COLOR_TYPE::ORANGE));
// Stat Layout
WriteManager::GetInstance()->MakeLayout(LAYOUT_TYPE::STAT, 0, 2, 8, 25);
// 랜덤 방 종류 결정
RandomManager::GetInstance()->setRange(1.f, 100.f);
double randomValue = RandomManager::GetInstance()->getRandom<double>(); // 1~100 사이의 랜덤 값
if (randomValue <= 60) {
setupBattleRoom(); // 전투 방 설정
}
else if (randomValue <= 20) {
setupAltarRoom(); // 제단 방 설정
}
else {
setupShopRoom(); // 상점 방 설정
}
}
void Scene2F::setupBattleRoom() {
// Map Layout
WriteManager::GetInstance()->MakeLayout(LAYOUT_TYPE::MAP, 104, 2, 9, 9);
WriteManager::GetInstance()->AddLine(FMessageParam(LAYOUT_TYPE::MAP, "02 [⚔️]", false, 7, TEXT_COLOR_TYPE::ORANGE));
// Story Layout
WriteManager::GetInstance()->MakeLayout(LAYOUT_TYPE::STORY, 0, 12, 9, 60);
WriteManager::GetInstance()->AddLine(FMessageParam(LAYOUT_TYPE::STORY, "🟠 이곳은 주황 욕망의 층입니다.", false, 0, TEXT_COLOR_TYPE::ORANGE));
WriteManager::GetInstance()->AddLine(FMessageParam(LAYOUT_TYPE::STORY, "🦎 황금 도마뱀이 당신의 장비를 탐내고 있습니다.", false, 1, TEXT_COLOR_TYPE::WHITE));
// Select Layout (전투 선택지)
WriteManager::GetInstance()->MakeLayout(LAYOUT_TYPE::SELECT, 0, 23, 5, 60);
WriteManager::GetInstance()->AddLine(FMessageParam(LAYOUT_TYPE::SELECT, "1. 공격", false, 0, TEXT_COLOR_TYPE::WHITE));
WriteManager::GetInstance()->AddLine(FMessageParam(LAYOUT_TYPE::SELECT, "2. 방어", false, 1, TEXT_COLOR_TYPE::WHITE));
WriteManager::GetInstance()->AddLine(FMessageParam(LAYOUT_TYPE::SELECT, "3. 스킬", false, 2, TEXT_COLOR_TYPE::WHITE));
WriteManager::GetInstance()->AddLine(FMessageParam(LAYOUT_TYPE::SELECT, "4. 아이템 사용", false, 3, TEXT_COLOR_TYPE::WHITE));
}
void Scene2F::setupAltarRoom() {
// Map Layout
WriteManager::GetInstance()->MakeLayout(LAYOUT_TYPE::MAP, 104, 2, 9, 9);
WriteManager::GetInstance()->AddLine(FMessageParam(LAYOUT_TYPE::MAP, "02 [⛲]", false, 7, TEXT_COLOR_TYPE::ORANGE));
// Story Layout
WriteManager::GetInstance()->MakeLayout(LAYOUT_TYPE::STORY, 0, 12, 9, 60);
WriteManager::GetInstance()->AddLine(FMessageParam(LAYOUT_TYPE::STORY, "🟠 신성한 기운이 느껴집니다.", false, 0, TEXT_COLOR_TYPE::ORANGE));
WriteManager::GetInstance()->AddLine(FMessageParam(LAYOUT_TYPE::STORY, "🙏 제단에서 선택을 해야 합니다.", false, 1, TEXT_COLOR_TYPE::WHITE));
// Select Layout (제단 선택지)
WriteManager::GetInstance()->MakeLayout(LAYOUT_TYPE::SELECT, 0, 23, 5, 60);
WriteManager::GetInstance()->AddLine(FMessageParam(LAYOUT_TYPE::SELECT, "1. 골드 봉헌", false, 0, TEXT_COLOR_TYPE::WHITE));
WriteManager::GetInstance()->AddLine(FMessageParam(LAYOUT_TYPE::SELECT, "2. 제단 떠나기", false, 1, TEXT_COLOR_TYPE::WHITE));
}
void Scene2F::setupShopRoom() {
// Map Layout
WriteManager::GetInstance()->MakeLayout(LAYOUT_TYPE::MAP, 104, 2, 9, 9);
WriteManager::GetInstance()->AddLine(FMessageParam(LAYOUT_TYPE::MAP, "02 [🏪]", false, 7, TEXT_COLOR_TYPE::ORANGE));
// Story Layout
WriteManager::GetInstance()->MakeLayout(LAYOUT_TYPE::STORY, 0, 12, 9, 60);
WriteManager::GetInstance()->AddLine(FMessageParam(LAYOUT_TYPE::STORY, "🟠 이곳은 상점입니다.", false, 0, TEXT_COLOR_TYPE::ORANGE));
WriteManager::GetInstance()->AddLine(FMessageParam(LAYOUT_TYPE::STORY, "🛒 필요한 아이템을 구매하세요.", false, 1, TEXT_COLOR_TYPE::WHITE));
// Select Layout (상점 선택지)
WriteManager::GetInstance()->MakeLayout(LAYOUT_TYPE::SELECT, 0, 23, 5, 60);
WriteManager::GetInstance()->AddLine(FMessageParam(LAYOUT_TYPE::SELECT, "1. 아이템 구매", false, 0, TEXT_COLOR_TYPE::WHITE));
WriteManager::GetInstance()->AddLine(FMessageParam(LAYOUT_TYPE::SELECT, "2. 상점 나가기", false, 1, TEXT_COLOR_TYPE::WHITE));
}
// main.cpp
#include "pch.h"
#include "ConsoleLayout.h"
#include "GameManager.h"
#include "SceneManager.h"
int main()
{
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
// 게임 매니저 초기화
GameManager::GetInstance()->Initialize();
// 씬 매니저 초기화 (1층 위치 설정)
SceneManager::GetInstance()->Initialize();
/*while (true)
{
WriteManager::GetInstance()->AddLine(FMessageParam(LAYOUT_TYPE::TITLE, "붉은 방", 0, TEXT_COLOR_TYPE::WHITE, BACKGROUND_COLOR_TYPE::RED));
WriteManager::GetInstance()->render();
WriteManager::GetInstance()->ClearScreen();
WriteManager::GetInstance()->SwapBuffer();
}*/
bool is_enter = false;
while (!GameManager::GetInstance()->IsGameEnd()) // 게임 메인 루프
{
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); // 메모리 누수 검사
GameManager::GetInstance()->tick();
SceneManager::GetInstance()->displayCurrentScene(); // 현재 층 정보 출력
//ScriptManager::GetInstance()->ClearScreen();
WriteManager::GetInstance()->AddLine(FMessageParam(LAYOUT_TYPE::TITLE, "붉은 방", 0, TEXT_COLOR_TYPE::WHITE, BACKGROUND_COLOR_TYPE::RED));
FMessageParam MessageParam;
MessageParam.TargetLayout = LAYOUT_TYPE::STAT;
MessageParam.Message = "최강노루";
MessageParam.LineIndex = 0;
MessageParam.TextColor = TEXT_COLOR_TYPE::WHITE;
MessageParam.BackGroundColor = BACKGROUND_COLOR_TYPE::BLACK;
MessageParam.bDeleteLine = false;
// 플레이어 스테이터스!
WriteManager::GetInstance()->AddLine(MessageParam);
WriteManager::GetInstance()->AddLine(FMessageParam(LAYOUT_TYPE::STAT, "HP : 100 / 100", 1, TEXT_COLOR_TYPE::GREEN));
WriteManager::GetInstance()->AddLine(FMessageParam(LAYOUT_TYPE::STAT, "EXP : 1200 / 3000", 2, TEXT_COLOR_TYPE::SKY));
WriteManager::GetInstance()->AddLine(FMessageParam(LAYOUT_TYPE::STAT, "ATK/SKD : 10 / 5", 3, TEXT_COLOR_TYPE::RED));
WriteManager::GetInstance()->AddLine(FMessageParam(LAYOUT_TYPE::STAT, "SDE/DEF : 5% / 8", 4, TEXT_COLOR_TYPE::BLUE_INENSITY));
WriteManager::GetInstance()->AddLine(FMessageParam(LAYOUT_TYPE::STAT, "LUK : 10%", 5, TEXT_COLOR_TYPE::ORANGE));
// 층 표시!
WriteManager::GetInstance()->AddLine(FMessageParam(LAYOUT_TYPE::MAP, "06 [ψ]", 0, TEXT_COLOR_TYPE::GRAY));
WriteManager::GetInstance()->AddLine(FMessageParam(LAYOUT_TYPE::MAP, "05 [δ]", 1, TEXT_COLOR_TYPE::GRAY));
WriteManager::GetInstance()->AddLine(FMessageParam(LAYOUT_TYPE::MAP, "04 [θ]", 2, TEXT_COLOR_TYPE::GRAY));
WriteManager::GetInstance()->AddLine(FMessageParam(LAYOUT_TYPE::MAP, "03 [ξ]", 3, TEXT_COLOR_TYPE::GRAY));
WriteManager::GetInstance()->AddLine(FMessageParam(LAYOUT_TYPE::MAP, "02 [π]", 4, TEXT_COLOR_TYPE::GRAY));
WriteManager::GetInstance()->AddLine(FMessageParam(LAYOUT_TYPE::MAP, "01 [χ]", 5, TEXT_COLOR_TYPE::RED));
// 스토리
SceneManager::GetInstance()->moveToNextFloor(); // 다음 층으로 이동
// 선택지
WriteManager::GetInstance()->AddLine(FMessageParam(LAYOUT_TYPE::SELECT, "[1. 기본 공격]", 0, TEXT_COLOR_TYPE::ORANGE));
WriteManager::GetInstance()->AddLine(FMessageParam(LAYOUT_TYPE::SELECT, "[2. 스킬]", 1, TEXT_COLOR_TYPE::ORANGE));
WriteManager::GetInstance()->AddLine(FMessageParam(LAYOUT_TYPE::SELECT, "[3. 아이템]", 2, TEXT_COLOR_TYPE::ORANGE));
GameManager::GetInstance()->render();
}
return 0;
}