C++에서 눈이 내리는 (?) CLI 애플리케이션
소개
휴일이고 C++에서 뭔가 할 수 없을까라고 생각했는데, 「프로그래밍을 학습하기 위해 기술력보다 너무 어려운 일을 한다고 단념한다」라는 말을 보았으므로, 간단하면서도 결과를 시각적으로 볼 수 있는 것 를 모색했다.
그래서 "터미널에서 눈을 내릴 수 있다"는 내용을 생각했다. *
를 눈으로 보았다.
코드
실제 눈을 내리는 프로그램은 다음과 같습니다.
snow.cpp#include <iostream>
#include <vector>
#include <thread>
#include <random>
using namespace std;
#include <color.hpp>
int snowwing(vector<vector<char> >&);
int displaySnow(vector<vector<char> >&);
int main(int argv, char **argc){
const int R = 100;
const int C = 50;
const int sleepTime = 10;
vector<vector<char> > snow (C, vector<char>(R, ' '));
while(1){
snowwing(snow);
system("clear");
displaySnow(snow);
this_thread::sleep_for(chrono::milliseconds(sleepTime));
}
return 0;
}
int snowwing(vector<vector<char> > &snow){
for(int i=1; i<snow.size(); i++){
snow[snow.size()-i] = snow[snow.size()-i-1];
}
for(int i=0; i<snow.front().size(); i++){
if(rand()%20 == 0){
snow[0][i] = '*';
}else{
snow[0][i] = ' ';
}
}
return 0;
}
int displaySnow(vector<vector<char> > &snow){
for(int i=0; i<snow.size(); i++){
for(int j=0; j<snow.front().size(); j++){
cout << CYAN << snow[i][j] << RESET;
}
cout << endl;
}
return 0;
}
color.hpp#define RESET "\033[0m"
#define BLACK "\033[30m"
#define RED "\033[31m"
#define GREEN "\033[32m"
#define YELLOW "\033[33m"
#define BLUE "\033[34m"
#define MAGENTA "\033[35m"
#define CYAN "\033[36m"
#define WHITE "\033[37m"
#define BOLDBLACK "\033[1m\033[30m"
#define BOLDRED "\033[1m\033[31m"
#define BOLDGREEN "\033[1m\033[32m"
#define BOLDYELLOW "\033[1m\033[33m"
#define BOLDBLUE "\033[1m\033[34m"
#define BOLDMAGENTA "\033[1m\033[35m"
#define BOLDCYAN "\033[1m\033[36m"
#define BOLDWHITE "\033[1m\033[37m"
color.hpp는 cout으로 출력 할 때 색상을 변경하기위한 값을 정의한 파일입니다.
snowwing () 함수는 vector> 형의 배열의 최상단에 일정 확률로 눈을 생성시키면서 눈을 하단으로 슬라이드하는 함수이다.
displaySnow () 함수는 눈 정보가 저장된 vector> 유형의 배열을 터미널에 출력하는 함수입니다.
int 형 변수 R은 눈 배열 옆의 문자 수를 지정하고 int 형 변수 C는 눈 배열의 세로 문자 수를 지정합니다. int 형 변수 sleepTime은 눈이 내리는 속도를 의미합니다.
system ( "clear")에서는 화면이 어긋나지 않기 때문에 매번 터미널 화면을 clear하고 있습니다.
this_thread::sleep_for () 함수는 눈을 내리기위한 지연을 가지고 있습니다.
실행 화면
Reference
이 문제에 관하여(C++에서 눈이 내리는 (?) CLI 애플리케이션), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ysuzuki19/items/57abfc88b673753341f9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
실제 눈을 내리는 프로그램은 다음과 같습니다.
snow.cpp
#include <iostream>
#include <vector>
#include <thread>
#include <random>
using namespace std;
#include <color.hpp>
int snowwing(vector<vector<char> >&);
int displaySnow(vector<vector<char> >&);
int main(int argv, char **argc){
const int R = 100;
const int C = 50;
const int sleepTime = 10;
vector<vector<char> > snow (C, vector<char>(R, ' '));
while(1){
snowwing(snow);
system("clear");
displaySnow(snow);
this_thread::sleep_for(chrono::milliseconds(sleepTime));
}
return 0;
}
int snowwing(vector<vector<char> > &snow){
for(int i=1; i<snow.size(); i++){
snow[snow.size()-i] = snow[snow.size()-i-1];
}
for(int i=0; i<snow.front().size(); i++){
if(rand()%20 == 0){
snow[0][i] = '*';
}else{
snow[0][i] = ' ';
}
}
return 0;
}
int displaySnow(vector<vector<char> > &snow){
for(int i=0; i<snow.size(); i++){
for(int j=0; j<snow.front().size(); j++){
cout << CYAN << snow[i][j] << RESET;
}
cout << endl;
}
return 0;
}
color.hpp
#define RESET "\033[0m"
#define BLACK "\033[30m"
#define RED "\033[31m"
#define GREEN "\033[32m"
#define YELLOW "\033[33m"
#define BLUE "\033[34m"
#define MAGENTA "\033[35m"
#define CYAN "\033[36m"
#define WHITE "\033[37m"
#define BOLDBLACK "\033[1m\033[30m"
#define BOLDRED "\033[1m\033[31m"
#define BOLDGREEN "\033[1m\033[32m"
#define BOLDYELLOW "\033[1m\033[33m"
#define BOLDBLUE "\033[1m\033[34m"
#define BOLDMAGENTA "\033[1m\033[35m"
#define BOLDCYAN "\033[1m\033[36m"
#define BOLDWHITE "\033[1m\033[37m"
color.hpp는 cout으로 출력 할 때 색상을 변경하기위한 값을 정의한 파일입니다.
snowwing () 함수는 vector> 형의 배열의 최상단에 일정 확률로 눈을 생성시키면서 눈을 하단으로 슬라이드하는 함수이다.
displaySnow () 함수는 눈 정보가 저장된 vector> 유형의 배열을 터미널에 출력하는 함수입니다.
int 형 변수 R은 눈 배열 옆의 문자 수를 지정하고 int 형 변수 C는 눈 배열의 세로 문자 수를 지정합니다. int 형 변수 sleepTime은 눈이 내리는 속도를 의미합니다.
system ( "clear")에서는 화면이 어긋나지 않기 때문에 매번 터미널 화면을 clear하고 있습니다.
this_thread::sleep_for () 함수는 눈을 내리기위한 지연을 가지고 있습니다.
실행 화면
Reference
이 문제에 관하여(C++에서 눈이 내리는 (?) CLI 애플리케이션), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ysuzuki19/items/57abfc88b673753341f9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(C++에서 눈이 내리는 (?) CLI 애플리케이션), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ysuzuki19/items/57abfc88b673753341f9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)