广征高手意见 关于打字的
从屏幕顶端随机掉落一些字母数字啥的 然后接收键盘信息 和哪个字符相等 则该字符不在掉落(吃掉了)这个东西在cui下到底能否实现 早年刚接触计算机时 那些打字训练软件都是纯DOS下的
[此贴子已经被作者于2017-12-25 18:31编辑过]
/* TC 2.0 XP */ #include <dos.h> #include <stdlib.h> #include <time.h> void newdelay(int limit); //延时 void SetFirstRowChar(int color); //设置第一行字符,实际上程序写完我发现可不要,不要效果会更好 void RandSetFlag(int flag[80]); //设置列随机下落数据 void ColRoll( int ColCount,int RollCount,int color); //列下落 void ColCellRoll( int ColCount,int color); //单个字母下落 int flag[80]; //随机标志 int main() { int i,k; randomize(); SetFirstRowChar(2); RandSetFlag(flag); for(i=0;i<1000;i++) { for(k=0;k<80;k++) { ColRoll( flag[k],flag[k]%25 ==0?random(25):flag[k]%25,2); newdelay(2); } RandSetFlag(flag); newdelay(10); } getch(); } void SetFirstRowChar(int color) { char far *p; int i; char c; p=(char far *)0xb8000000; for( i = 0; i < 80 ; i++) { c = random(35); if( c > 25 )*(p+i*2) =''; else *(p+i*2) =c+65; *(p+i*2+1) = color; } return ; } void newdelay(int limit) { unsigned int far *clock=(unsigned int far *)0x0000046CL; unsigned int begin; begin=*clock; while(abs(*clock-begin)<=limit*0.0182); } void RandSetFlag(int flag[80]) { int i; for(i=0;i<80;i++)flag[i] = random(80); return; } void ColCellRoll( int ColCount,int color) { char far *p; char far *p1; int i; char c; p=(char far *)0xb8000000 + ColCount*2; p1 = (char far *)0xb8000000 + ColCount*2+80*2; for( i = 24 ; i >= 0 ; i--) { *(p1+i*80*2) = *(p+i*80*2); *(p1+i*80*2+1)=color; *(p+i*80*2)=''; *(p+i*80*2+1) = color; } c = random(35); if( c > 25 )*p =''; else *p =c+65; *(p+1) = color; return; } void ColRoll( int ColCount,int RollCount,int color) { int i; for(i = 0; i < RollCount ; i++) { ColCellRoll( ColCount,color); } return; }