📁 MonsterEncounter + 퀴즈 전투 → 단일 클래스 통합
✅ 등장 애니메이션 (PointerLich 4프레임)
✅ 몬스터 정보 타이핑 효과
✅ 퀴즈 전투 시스템 (문제+선택지)
✅ 깔끔한 레이아웃 구성
🐛 애니메이션 속도 조절 버그 해결
// ❌ 틀린 방법 (Render에서 매번 업데이트)
void Render() {
animTimer += 0.016f; // 매 프레임 리셋 → 속도 조절 불가!
}
// ✅ 올바른 방법 (Update에서만)
void Update(float dt) {
animTimer += dt; // 실제 경과시간만 누적
monsterFrame = (int)(animTimer / FRAME_DURATION) % 4;
}
// BattleService에서 문제 작성
"포인터는?\n1) 값\n2) 주소\n3) 타입"
// 자동 파싱
std::vector<std::string> lines;
for (char c : fullText) {
if (c == '\n') {
lines.push_back(line);
line.clear();
}
}
// lines[0] = 문제, lines[1-3] = 선택지

퀴즈로 보스전이 진행되는데 첫 라운드에는 Round출력과 문제 출력이 함께되었는데 두번째 라운드부터는 라운드만 출력되고 꼭 엔터를 눌러야 문제가 출력이 되었다.
별거 아닌 부분이지만 고치려고 했는데 도무지 원인파악이 안되었다
ai한테 물어봐도 cout버퍼 문제인것같다고만 한다
해결?
std::string UIManager::askQuizAnswer(const std::string& question) {
std::cin.clear();
std::cin.ignore((std::numeric_limits<std::streamsize>::max)(), '\n');
// 위 두 코드가 문제
std::cout << "\n";
std::cout << "╔════════════════════════════════════════════════════════════╗\n";
std::cout << " " << question << "\n"; // 질문: 스페이스 3개
std::cout << "╚════════════════════════════════════════════════════════════╝\n";
std::cout << "💭 답변: ";
std::string answer;
std::getline(std::cin, answer);
size_t start = answer.find_first_not_of(" \t\n\r\f\v");
if (start == std::string::npos) return "";
size_t end = answer.find_last_not_of(" \t\n\r\f\v");
answer = answer.substr(start, end - start + 1);
return answer.empty() ? "pass" : answer;
}
#include <string>
#include <vector>
#include <cmath>
using namespace std;
int prime(int num){
int ans = 0;
for (int i = 1; i <= sqrt(num); i++){
if (num % i == 0){
ans++;
}
}
return ans+1;
}
int solution(int number, int limit, int power) {
int answer = 0;
for (int i = 1; i <= number; i++){
int res = prime(i);
if (res > limit){
answer+=power;
} else {
answer += res;
}
}
return answer;
}
#include <string>
#include <vector>
using namespace std;
int solution(int number, int limit, int power) {
vector<int> CountPrime(number+1, 0);
for (int i = 1; i <= number; i++){
for (int j = i; j <= number; j+=i){
CountPrime[j]++;
}
}
int answer = 0;
for (int i = 1; i <= number; i++){
if (CountPrime[i] > limit){
answer += power;
} else {
answer += CountPrime[i];
}
}
return answer;
}