黑客数字雨

绛橘色の日落 的博客 / 2023-08-04 / 原文

#include<stdio.h>
#include<time.h>
#include<windows.h>
//数字雨
typedef struct {
    int x, y;
    char ch;
} STU;
STU st[5000];
//出现位置


void gotoxy(int x, int y) {
    HANDLE hout;
    COORD pos;
    pos.X = x;
    pos.Y = y;


    hout = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleCursorPosition(hout, pos);
}


/*隐藏光标*/
void show_cursor(int hide) {
    CONSOLE_CURSOR_INFO cciCursor;
    HANDLE hout;


    hout = GetStdHandle(STD_OUTPUT_HANDLE);
    if (GetConsoleCursorInfo(hout, &cciCursor)) {
        cciCursor.bVisible = hide;
        SetConsoleCursorInfo(hout, &cciCursor);
    }
}


/*设置颜色*/
void set_color(int color) {


    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color);
}




main() {
    int i, j;
    show_cursor(0);
    srand(time(NULL));
//初始化结构体
    for (i = 0; i < 100; i++) {
        st[i].x = rand() % 80;
        st[i].y = rand() % 20;
        st[i].ch = rand() % (49 - 47) + 48;
    }
    while (1) {
        for (i = 0; i < 100; i++) {
            gotoxy(st[i].x, st[i].y);
            set_color(0x2);
            putchar(st[i].ch);
            gotoxy(st[i].x, st[i].y - 5);
            putchar(' ');
            st[i].y++;
            st[i].ch = rand() % (49 - 29) + 48;
            if (st[i].y - 5 >= 18) {
                gotoxy(st[i].x, st[i].y - 1);
                putchar(' ');
                gotoxy(st[i].x, st[i].y - 2);
                putchar(' ');
                gotoxy(st[i].x, st[i].y - 3);
                putchar(' ');
                gotoxy(st[i].x, st[i].y - 4);
                putchar(' ');
                gotoxy(st[i].x, st[i].y - 4);
                putchar(' ');
            }
            if (st[i].y > 23) {
                st[i].x = rand() % 80;
                st[i].y = rand() % 20;
            }
            gotoxy(st[i].x, st[i].y);
            set_color(0xA);
            putchar(st[i].ch);
        }
        Sleep(20);
    }
}

 

本文转载:https://www.topscoding.com/discuss/6270ac852e0ba74128895b06#1667285345