[英]How to animate snowman without third party libraries?
我有以下代碼,它只是一些 cout 語句,output 一個酷雪人的圖像 這是我想向新手程序員展示的東西,向他們展示編程有多酷。 我想更進一步,展示一些 animation,但經過一些研究,我意識到我需要下載一些外部程序,如 turboc++ 用於 c++ 中的動畫。
有沒有辦法在不下載任何東西的情況下使雪動畫落下? 如果需要一些高級頭文件,我可以在 C++17 中運行它,只要我不需要下載任何東西。
#include <iostream>
int main() {
std::cout << " * * \n";
std::cout << "* * \n";
std::cout << " * * * \n";
std::cout << " * * \n";
std::cout << " * \n";
std::cout << "* * * \n";
std::cout << " * * * \n";
std::cout << " HHHHHHH * \n";
std::cout << " * HHHHHHH \n";
std::cout << " * HHHHHHHHHHH * * \n";
std::cout << " * @ @ * \n";
std::cout << " * ^ * \n";
std::cout << " * * * * \n";
std::cout << " ||| * * ||| \n";
std::cout << " * ======== * \n";
std::cout << " * O * \n";
std::cout << " * O * \n";
std::cout << " * O * \n";
std::cout << " * * \n";
std::cout << " * * * \n";
return 0;
這是我寫的一個快速程序,我認為它可以滿足您的需求:
#include <iostream>
#include <fstream>
#include <cmath>
#include <algorithm>
#include <vector>
#include <thread>
using namespace std;
bool update(vector <string> &snowman){
bool ret = false;
int row_len = snowman[0].size();
for(int i = 0; i < row_len; ++i){
if(snowman.back()[i] == '*'){ret = true; snowman.back()[i] = ' ';}
}
for(int i = snowman.size()-2; i >= 0; --i){
for(int j = 0; j < row_len; ++j){
if(snowman[i][j] == '*'){
char temp = snowman[i+1][j];
if(temp == 'H' || temp == '0'){
snowman[i][j] = ' ';
continue;
}
swap(snowman[i][j], snowman[i+1][j]);
ret = true;
}
}
}
return ret;
}
int main()
{
vector <string> snowman = {
" * * ",
"* * ",
" * * * ",
" * * ",
" * ",
"* * * ",
" * * * ",
" HHHHHHH * ",
" * HHHHHHH ",
" * HHHHHHHHHHH * * ",
" 0 @ @ 0 ",
" 0 ^ 0 ",
" * 0 0 * ",
" ||| 0 0 ||| ",
" 0 ======== 0 ",
" 0 O 0 ",
" 0 O 0 ",
" 0 O 0 ",
" 0 0 ",
" 0 0 0 ",
};
do{
this_thread::sleep_for(0.5s);
system("clear");
for(string &item : snowman){
cout << item << endl;
}
cout << endl;
}
while(update(snowman));
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.