#include "utils/json.hpp" #include <iostream> #include <fstream>이를 포함한 헤더파일의 예제는 다음과 같다.
- config.h
#pragma once #ifndef __CONFIG__ #define __CONFIG__ #include "utils/json.hpp" #include <iostream> #include <fstream> // 로고, 메인메뉴, 게임 화면 등 각각의 씬 enum class Scene { logo = 0, titleMenu, game, scoreScene, settingScreen }; // 전역적으로 사용할 싱글톤 클래스 class SceneManager { private: SceneManager() {} static SceneManager* instance; public: static SceneManager* GetInstance() { if (instance != nullptr) { return instance; }else { instance = new SceneManager(); return instance; } } bool SaveJson(); bool LoadJson(); bool gameExit; Scene scene; Scene lastSce; float volume = 1.0f; bool isLog = false; }; #endif
- config.cpp
#include "config.h" // Save Setting to json file bool SceneManager::SaveJson() { using namespace nlohmann; json j; j["Name"] = "DK Flappy Bird!"; j["SoundVolume"] = volume; j["bLog"] = isLog; // write prettified JSON to another file std::ofstream o("settings.json"); if (o.bad()) { return false; } o << std::setw(4) << j << std::endl; o.close(); return true; } bool SceneManager::LoadJson() { using namespace nlohmann; std::ifstream f("settings.json"); if (f.bad()) { return false; } json data = json::parse(f); volume = data["SoundVolume"]; isLog = data["bLog"]; f.close(); return true; }
{ "Name": "DK Flappy Bird!", "SoundVolume": 0.5074999928474426, "bLog": true }파일을 읽는 것 역시 위 예제를 참고하자 ===== 함수 호출 ====== ==== 1. Setting Screen에서 호출 ==== JSON으로 파일 입출력이 되면 Setting Screen에서 성공 혹은 실패 문구가 나오게 만들었다.
// Save Settings void SettingScreen::Save() { if(menuManager->SaveJson()) { isDisplayTimer = true; DisplayTimer = 180; DisplayString = "Successfully Saved!\n" ; }else { isDisplayTimer = true; DisplayTimer = 180; DisplayString = "Save Failed!\n"; } } // Load Settings void SettingScreen::Load() { if(menuManager->LoadJson()) { isDisplayTimer = true; DisplayTimer = 180; DisplayString = "Successfully Loaded!\n"; }else { isDisplayTimer = true; DisplayTimer = 180; DisplayString = "Load Failed!\n"; } }==== 2. main.cpp에서 호출 ===== 프로그램을 시작할 때 이전에 저장한 JSON파일을 불러와서 환경 설정을 하도록 하였다.
// InitWIndow() 이후에 선언해 줘야 한다. Logo logo = Logo(); Game game = Game(); Menu menu = Menu(); SettingScreen setting = SettingScreen(); menuManager->LoadJson();===== 결론 ===== 이런 식으로 하면 사람이 읽어보기 편한 JSON파일이 프로그램 실행 폴더에 만들어짐을 알 수 있다.

로그인