zoukankan      html  css  js  c++  java
  • C++彩色数据流动界面

    一个数据流动界面

     

    #include <windows.h>
    #include <time.h>
    #include <cstdio>
    #include <string.h>
    #include <conio.h>
    #include <iostream>
    
    using namespace std ;
    
    #define MAX 20
    #define LEN 5
    
    char tu()
    {
        //选择的字符的ASCII值的范围在 33--126
        char x ;
     k:
    
        x = (rand()%93)+33 ;
        if (48==x)
        {
            goto k ;
        }
        return x ;
    }
    
    int main()
    {
      //  system("1.mp3");
        int i ;
        int j ;
        int k ;
        int m ;
        int n ;
        int di = 19 ;
        srand(time(NULL));
        char x_y[MAX][MAX]  ;
        for (i=0;i<MAX;i++)
        {
            for (j=0;j<MAX;j++)
            {
                x_y[i][j] = '0' ;
            }
        }
        //  初始化 :随机产生
        for(i=0;i<MAX;i++)
        {
            j = rand()%MAX ;
            if(j>=LEN)
            {
                for (k=1;k<=LEN;k++)
                {
                    x_y[i][j] = tu() ;
                    j-- ;
                }
            }
            else if(j<LEN)
            {
                n = j ;
                m = LEN-j ;  // 5 - 4 = 1
                for(k=1;k<=n;k++)
                {
                    j-- ;
                    x_y[i][j] = tu() ;
                }
                for (k=1;k<=m;k++)
                {
                    x_y[i][di] = tu() ;
                    di -- ;
                }
                di = 19 ;
            }
        }
        printf("
    
    
    			");
        for (j=0;j<MAX;j++)
        {
            for (i=0;i<MAX;i++)
            {
    
                if ('0'!=x_y[i][j])
                {
                    HANDLE hConsole = GetStdHandle((STD_OUTPUT_HANDLE)) ;
                    SetConsoleTextAttribute(hConsole,rand()%9) ;
                    printf("%c  ",x_y[i][j]);
                }
                else
                printf("   ");
    
            }
            printf("
    			");
        }
    
            ka :
         while(1)
         {
            Sleep(20);
            system("cls");
    
            /*
                此处需要注意的地方 ;
                    1 . 应该从后往前对二维数组进行操作,如果从前向后,会导致一种死循环 ,flag会永远触发之类的
                    2 . 取色函数最好的范围 在个位就差不多了  过大会导致背景变色
            */
              //  动起来
            for (i=MAX-1;i>=0;i--)
            {
                for (j=MAX-1;j>=0;j--)
                {
                    if (j<=18&&j>=4)
                    {
                        if (x_y[i][j]!='0'&&x_y[i][j+1]=='0')
                        {
                            x_y[i][j+1] = tu() ;
                            x_y[i][j-4] = '0' ;
                        }
                    }
                    else if (j==19)
                    {
                        if (x_y[i][19]!='0'&&x_y[i][0]=='0')
                        {
                            x_y[i][0] = tu() ;
                            x_y[i][j-4] = '0' ;
                        }
                    }
                    else if (j==0)
                    {
                        if (x_y[i][j]=='0'&&x_y[i][19]!='0')
                        {
                            x_y[i][0] = tu() ;
                            x_y[i][15] = '0' ;
                        }
                        else if (x_y[i][0]=='0'&&x_y[i][19]=='0')
                        {
                            ;
                        }
                        else if (x_y[i][0]!='0'&&x_y[i][1]=='0')
                        {
                            x_y[i][1] = tu() ;
                            x_y[i][16] = '0' ;
                        }
                    }
                    else if (j<=3)
                    {
                        if (x_y[i][j]!='0'&&x_y[i][j+1]=='0')
                        {
                            x_y[i][j+1] = tu() ;
                            x_y[i][16+j] = '0' ;
                        }
                    }
                }
            }
            printf("
    
    
    			");
            for (j=0;j<MAX;j++)
            {
                for (i=0;i<MAX;i++)
                {
    
                    if ('0'!=x_y[i][j])
                    {
                        HANDLE hConsole = GetStdHandle((STD_OUTPUT_HANDLE)) ;
                        SetConsoleTextAttribute(hConsole,rand()%10) ;
                        printf("%c  ",x_y[i][j]);
                    }
                    else
                    printf("   ");
    
                }
                printf("
    			");
            }
        goto ka ;
         }
    
        return 0;
    }
  • 相关阅读:
    Java 下载网络资源
    Java11 ThreadLocal的remove()方法源码分析
    软件测试的术语SRS,HLD,LLD,BD,FD,DD意义
    2020年12月2日
    20201129
    2020年11月28日
    程序员的三门课
    中间件到底是个什么鬼东西?
    接口测试框架的形成过程
    一个字符到底等于多少字节
  • 原文地址:https://www.cnblogs.com/LexMoon/p/hConsole.html
Copyright © 2011-2022 走看看