簡體   English   中英

如何在沒有第三方庫的情況下為雪人制作動畫?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM