雄狮酒庄干红葡萄酒:c语言实现池塘夜降彩色雨的问题(加急)

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/29 23:50:34
现在做课程设计,在这个程序遇到n多问题。
现列出来望各位高手能给小弟解惑thx!
目前我只能实现一个雨点的效果,程序如下(turboc2.0调试)
若要多个雨点的话需要手动在while语句里面输入line函数,但这不符合课程设计的要求(题目要求随机产生n多雨点)
#include "stdio.h"
#include "graphics.h"
#include "stdlib.h"

void rain()
{
int x1,x2,y1,y2;
int i,m;
while(!kbhit())
{
m=random(15);
setcolor(m);
x1=random(640);
y1=random(50);
x2=x1-20;
y2=y1+60;
setlinestyle(0,0,1);
line(x1,y1,x2,y2);
while(y2<400)
{
cleardevice();
x1=x2;
y1=y2;
x2=x1-20;
y2=y1+60;
line(x1,y1,x2,y2);
delay(3000);
}
if(y2>=400)
{
for(i=0;i<=5;i++)
{
cleardevice();
x1=x2;
y1=y2;
ellipse(x1,y1,0,360,10+i*5,5);
delay(5000);
}
}
}
}

main()
{
int gdriver,gmode,i;
gdriver=DETECT;
initgraph(&gdriver,&gmode,"c:\\turboc2");
setbkcolor(BLACK);
cleardevice();
rain();
closegraph();
}

下面这段是我写的多个雨点的,想通过setviewport()函数设置多窗口来分开屏幕分别显示雨点,但是这样做(程序如下)倒什么也不输出了!!昏!

是不是有什么函数可以实现多个雨点呢?我查过graphics的函数,但是没有啊!!!!
英雄们救救我啊!
#include "stdio.h"
#include "graphics.h"
#include "stdlib.h"

#define MAXSIZE 100

typedef struct
{
int x,y;
}RAINDROP;

void initial()
{
int gdriver,gmode;
gdriver=DETECT;
initgraph(&gdriver,&gmode,"d:\\turboc2");
setbkcolor(BLACK);
cleardevice();
}

void rain(int x,int y)
{
int x1,x2,y1,y2;
int i,m;
x1=x;
y1=y;
while(!kbhit())
{
m=random(15);
setcolor(m);
x2=x1-20;
y2=y1+60;
setlinestyle(0,0,1);
line(x1,y1,x2,y2);
while(y2<400)
{
clearviewport();
x1=x2;
y1=y2;
x2=x1-20;
y2=y1+60;
line(x1,y1,x2,y2);
delay(10000);
}
if(y2>=400)
{
for(i=0;i<=5;i++)
{
clearviewport();
x1=x2;
y1=y2;
ellipse(x1,y1,0,360,10+i*5,5);
delay(80000);
}
}
}
}

void drops()
{
RAINDROP rd;
int m,i;
m=random(100);
views(m);
rd.x=6;
rd.y=40;
rain(rd.x,rd.y);
}

views(int m)
{
int i,j;
j=639/m;
setviewport(1,639/m,439,639/m,0);
for(i=1;i<m;i++)
{
setviewport(j+1,j+639/m,439,j+639/m,0);
j+=639/m;
}
}

main()
{
initial();
drops();
closegraph();
}

cleardevice后加一个循环循环的次数是随机数循环体里面是line函数,不过参数要求在随机生成一组,否则雨点就重合在一起了