一个数据流动界面
#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()%)+ ;
if (==x)
{
goto k ;
}
return x ;
} int main()
{
// system("1.mp3");
int i ;
int j ;
int k ;
int m ;
int n ;
int di = ;
srand(time(NULL));
char x_y[MAX][MAX] ;
for (i=;i<MAX;i++)
{
for (j=;j<MAX;j++)
{
x_y[i][j] = '' ;
}
}
// 初始化 :随机产生
for(i=;i<MAX;i++)
{
j = rand()%MAX ;
if(j>=LEN)
{
for (k=;k<=LEN;k++)
{
x_y[i][j] = tu() ;
j-- ;
}
}
else if(j<LEN)
{
n = j ;
m = LEN-j ; // 5 - 4 = 1
for(k=;k<=n;k++)
{
j-- ;
x_y[i][j] = tu() ;
}
for (k=;k<=m;k++)
{
x_y[i][di] = tu() ;
di -- ;
}
di = ;
}
}
printf("\n\n\n\t\t\t");
for (j=;j<MAX;j++)
{
for (i=;i<MAX;i++)
{ if (''!=x_y[i][j])
{
HANDLE hConsole = GetStdHandle((STD_OUTPUT_HANDLE)) ;
SetConsoleTextAttribute(hConsole,rand()%) ;
printf("%c ",x_y[i][j]);
}
else
printf(" "); }
printf("\n\t\t\t");
} ka :
while()
{
Sleep();
system("cls"); /*
此处需要注意的地方 ;
1 . 应该从后往前对二维数组进行操作,如果从前向后,会导致一种死循环 ,flag会永远触发之类的
2 . 取色函数最好的范围 在个位就差不多了 过大会导致背景变色
*/
// 动起来
for (i=MAX-;i>=;i--)
{
for (j=MAX-;j>=;j--)
{
if (j<=&&j>=)
{
if (x_y[i][j]!=''&&x_y[i][j+]=='')
{
x_y[i][j+] = tu() ;
x_y[i][j-] = '' ;
}
}
else if (j==)
{
if (x_y[i][]!=''&&x_y[i][]=='')
{
x_y[i][] = tu() ;
x_y[i][j-] = '' ;
}
}
else if (j==)
{
if (x_y[i][j]==''&&x_y[i][]!='')
{
x_y[i][] = tu() ;
x_y[i][] = '' ;
}
else if (x_y[i][]==''&&x_y[i][]=='')
{
;
}
else if (x_y[i][]!=''&&x_y[i][]=='')
{
x_y[i][] = tu() ;
x_y[i][] = '' ;
}
}
else if (j<=)
{
if (x_y[i][j]!=''&&x_y[i][j+]=='')
{
x_y[i][j+] = tu() ;
x_y[i][+j] = '' ;
}
}
}
}
printf("\n\n\n\t\t\t");
for (j=;j<MAX;j++)
{
for (i=;i<MAX;i++)
{ if (''!=x_y[i][j])
{
HANDLE hConsole = GetStdHandle((STD_OUTPUT_HANDLE)) ;
SetConsoleTextAttribute(hConsole,rand()%) ;
printf("%c ",x_y[i][j]);
}
else
printf(" "); }
printf("\n\t\t\t");
}
goto ka ;
} return ;
}