您好,欢迎来到年旅网。
搜索
您的当前位置:首页C语言课程设计流星雨

C语言课程设计流星雨

来源:年旅网
C语言课程设计

流星雨的设计

功能说明:程序模拟一组流星飞向地面的情景。地面用多行#来表示,流星用大写字母不表示。程序产生一组流星(比如10个),从屏幕顶部下降飞向地面。一组流星中,每个流星的字符颜色是随机的,下降的位置是随机的,下降的速度也是随机的。一个流星下落只能去掉一个#号,当最后一行地面有#被去掉时,程序终止。

C语言程序源代码:

#include

#include

#include

#include

int main()

{

void load(char liuxin[25][80],char ground[5][80],int heng[10],int lie[10]);

void echo(char out[25][80],int lie[10],int color[10]);

void make(char out[25][80],char liuxin[25][80],char mark[10],int lie[10],int heng[10],int color[10],int speed[10],int exist[10]);

void fall(char out[25][80],char liuxin[25][80],int speed[10],char

ground[5][80],int exist[10],int heng[10],int lie[10]);

void panduan(char ground[5][80]);

void con(char out[25][80],char liuxin[25][80],char ground[5][80]);

int exist_or(char liuxin[25][80]);

char out[25][80],liuxin[25][80],ground[5][80],mark[10];

int exist[10],lie[10],heng[10],color[10],speed[10];

load(liuxin,ground,heng,lie);

srand((int)time(0));

con(out,liuxin,ground);

echo(out,lie,color);

while(1)

{

make(out,liuxin,mark,lie,heng,color,speed,exist);//产生一组10个不同颜色不同字母不同下落速度的流星雨

while(1)

{

con(out,liuxin,ground);

echo(out,lie,color);

panduan(ground);

Sleep(1);

fall(out,liuxin,speed,ground,exist,heng,lie);

if(exist_or(liuxin)==0) break;

}

}

return 0;

}

void load(char liuxin[25][80],char ground[5][80],int heng[10],int lie[10]) //初始化流行数组和地面

{

int i1,i2;

for(i1=0;i1<25;i1++)

for(i2=0;i2<80;i2++)

liuxin[i1][i2]=' ';

for(i1=0;i1<5;i1++)

for(i2=0;i2<80;i2++)

ground[i1][i2]='#';

for(i1=0;i1<10;i1++)

{

heng[i1]=0;

lie[i1]=i1;

}

}

void echo(char out[25][80],int lie[10],int color[10]) //将out数组输出到屏幕上

{

int i1,i2,i3=0;

COORD coord;

coord.X=0;

coord.Y=0;

SetConsoleCursorPosition( coord );

GetStdHandle( STD_OUTPUT_HANDLE ),

for(i1=0;i1<25;i1++)

{

i3=0;

for(i2=0;i2<80;i2++)

{

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY);

if(i2==lie[i3])

{

if(out[i1][i2]!=' ' && out[i1][i2]!='#')

switch(color[i3])

{

case 0:

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED);break;

case 1:

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN);break;

case 2:

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_BLUE);break;

}

i3+=1;

}

printf(\"%c\

}

}

}

void make(char out[25][80],char liuxin[25][80],char heng[10],int color[10],int speed[10],int exist[10])

{

int i1,i2,t,change,base=1;

lie[10],int mark[10],int

for(i1=0;i1<10;i1++)

{

heng[i1]=0;

mark[i1]=(abs(rand())%26+65);

color[i1]=abs(rand())%3;

while(1)

{

base=0;

t=(abs(rand())%80);

for(i2=0;i2<10;i2++)

if(t==lie[i2]) base=1;

if(base==0) break;

}

lie[i1]=t;

speed[i1]=(abs(rand())%4)+1;

liuxin[0][lie[i1]]=mark[i1];

exist[i1]=1;

}

for(i1=0;i1<10;i1++)

for(i2=0;i2<9;i2++)

{

if(lie[i2]>lie[i2+1])

{

change=lie[i2];

lie[i2]=lie[i2+1];

lie[i2+1]=change;

}

}

}

void fall(char out[25][80],char liuxin[25][80],int ground[5][80],int exist[10],int heng[10],int lie[10])

{

int i1,i2;

for(i1=0;i1<10;i1++)

{

if(exist[i1]==1)

{

for(i2=1;i2<=speed[i1];i2++)

speed[10],char

{

liuxin[heng[i1]+1][lie[i1]]=liuxin[heng[i1]][lie[i1]];

liuxin[heng[i1]][lie[i1]]=' ';

heng[i1]+=1;

if(heng[i1]>=20)

{

if(ground[heng[i1]-20][lie[i1]]=='#')

{

liuxin[heng[i1]][lie[i1]]=' ';

ground[heng[i1]-20][lie[i1]]=' ';

exist[i1]=0;

break;

}

}

}

}

}

}

int exist_or(char liuxin[25][80]) //判断是否还有流星,如果没有就开始新的make函数

{

int i1,i2,t=0;

for(i1=0;i1<25;i1++)

for(i2=0;i2<80;i2++)

{

if(liuxin[i1][i2]!=' ')

{

t=1;

break;

}

}

return t;

}

void panduan(char ground[5][80]) //判断最后一行是否有空格

{

int i,a=0;

for(i=0;i<80;i++)

{

if(ground[4][i]==' ') getchar();

}

}

void con(char out[25][80],char liuxin[25][80],char ground[5][80]) //将流行数组与地面数组整合到out数组中

{

int i1,i2;

for(i1=0;i1<25;i1++)

for(i2=0;i2<80;i2++)

out[i1][i2]=liuxin[i1][i2];

for(i1=20;i1<25;i1++)

for(i2=0;i2<80;i2++)

if(ground[i1-20][i2]=='#')

out[i1][i2]=ground[i1-20][i2];

}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务