728x90
반응형
개요
C++ 언어를 사용하여 콘솔 화면에서 별표(’*’)를 위에서 아래로 이동시키는 프로그램을 작성한다. 이 프로그램은 일정 시간 간격으로 화면을 지우고, 별의 위치를 한 칸씩 아래로 이동하는 방식으로 동작한다. 이를 통해 시간 제어 및 콘솔 입출력 기능의 기본적인 활용 방법을 학습할 수 있다.
원리
본 프로그램의 핵심 동작은 다음과 같이 구성된다.
- 화면 출력 및 지우기: 화면에 출력된 기존 문자를 지우기 위해 윈도우 환경에서는 system("cls")를, 리눅스/유닉스 환경에서는 ANSI escape 코드를 사용한다.
- 시간 제어: 별이 일정 시간(1초) 간격으로 한 줄씩 아래로 이동하도록 std::this_thread::sleep_for 함수를 활용한다.
- 반복을 통한 위치 이동: 반복문(for)을 사용하여 별이 위에서 아래로 이동하며 출력되도록 설계한다. 이때 별의 위치는 줄 바꿈 개수를 조정함으로써 변경된다.
코드 구현
#include <iostream>
#include <thread> // sleep_for 사용을 위해 필요
#include <chrono> // 시간 지연을 위한 라이브러리
#ifdef _WIN32
#include <windows.h> // Windows용 화면 지우기
#else
#include <unistd.h>
#endif
void clearScreen() {
#ifdef _WIN32
system("cls"); // Windows에서 콘솔 화면 지우기
#else
std::cout << "\033[2J\033[H"; // Unix/Linux용 화면 지우기
#endif
}
int main() {
const int height = 10; // 출력 화면 높이 설정
for (int i = 0; i < height; ++i) {
clearScreen(); // 기존 화면 지우기
// 별의 현재 위치에 따라 줄 바꿈 수행
for (int j = 0; j < i; ++j) {
std::cout << std::endl;
}
std::cout << "*" << std::endl;
// 1초 대기
std::this_thread::sleep_for(std::chrono::seconds(1));
}
return 0;
}
결과
프로그램이 실행되면 콘솔 화면에서 다음과 같은 형태의 출력이 나타난다.
- 처음에는 별이 맨 위에 위치한다.
*
- 이후 1초마다 한 줄씩 아래로 이동한다.
*
*
- 반복문이 종료될 때까지 이 과정이 계속된다.
참고문헌
• ISO/IEC 14882:2020: C++ 언어 표준
• cppreference.com: std::this_thread::sleep_for 및 콘솔 출력 관련 참고자료
• ANSI escape 코드: https://en.wikipedia.org/wiki/ANSI_escape_code
728x90
반응형
'Programming > C++' 카테고리의 다른 글
C++로 익히는 DFS (깊이 우선 탐색) (0) | 2025.04.07 |
---|---|
string::compare의 개념과 활용 (0) | 2025.02.12 |
std::find 함수의 개념과 활용 (0) | 2025.02.11 |
std::move의 개념과 활용 (0) | 2025.02.05 |
Vector 최대값, 최소값, 인덱스 구하기 (2) | 2025.02.04 |