| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 975 人关注过本帖
标题:是关于链表的,请各路高手帮帮忙
只看楼主 加入收藏
章鱼哈哈
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2005-12-19
收藏
 问题点数:0 回复次数:1 
是关于链表的,请各路高手帮帮忙
是关于链表的,请各路高手帮帮忙
池塘夜降彩色雨
要求:雨点颜色随机,数目随机,雨点落在池塘上涟漪随机,有风效果,最好配上随机的闪电
请大家一定帮帮忙,小妹感激不尽
搜索更多相关主题的帖子: 随机 链表 雨点 池塘 
2005-12-21 10:50
sanjin
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2005-12-14
收藏
得分:0 
彩色雨和风的效果我没写,你自己可以想一想。只要在初始化模块中改写再加一个处理功能的模块。偷懒没有用链表做,用的是顺序表。以下代码可供参考。
/*按照严书的要求写了一个雨的效果*/
/*在运行前将第26行initgraph(&gdrive,&gmode,"c:\\turboc2");中的"C:\\turboc2" 改成你自己的TC的根目录就可以运行*/
#include "stdio.h"
#include "graphics.h"
#include "bios.h"
#include "dos.h"
#include "time.h"
struct yu /*雨结构*/
{
int flag;/*雨的状态:0为出现下落过程,1为落水过程,2为画微波过程,3为结束状态*/
int x;/*雨出现的横坐标*/
int y;/*雨出现的纵坐标*/
int x1;/*雨消失的横坐标*/
int y1;/*雨消失的纵坐标*/
int time;/*雨出现的时间*/
int time1;/*当前时间,用于判断是否出现雨*/
int speed;
int bo1;
int bo2;
};
struct yu a[1000];/*定义一个能存储1000个雨点信息的数组*/
int yn;/*定义处理雨点的个数*/
/*初始化图形界面*/
void inittu()
{
int gdrive,gmode;
gdrive=DETECT;
initgraph(&gdrive,&gmode,"c:\\turboc2");
setbkcolor(BLACK);/*将背景图象设置为黑色*/
}
/*雨点信息扫描函数对雨做出处理*/
ysm()
{
int i;
void ran(int);/*对ran函数的原形声明*/
for(i=0;i<yn;i++)/*重头到尾扫描数组信息*/
{
if(a[i].flag==3) ran(i); /*如果有完成所有过程的就调用ran()函数*/
else
{if ((a[i].time1)>=a[i].time)/*如果到了雨点的出现时间就出现雨点*/
cly(a[i].flag,a[i].x,a[i].y,a[i].x1,a[i].y1,a[i].speed,a[i].bo1,a[i].bo2,i);/*如果没有就调用雨处理过程*/
else /*否则的话就增加a[i].time1的值*/
a[i].time1++;}
}
}
/*随机处理雨信息函数*/
void ran(int i)
{int x,y,leng,x1,y1,spi,spi1,zjy,time,u;
u=getmaxx();
x=30+rand()%u;/*随机生成雨点的下落的x坐标*/
y=rand()%10;/*随机生成雨点的下落y坐标*/
zjy=getmaxy()-rand()%250+50;/*随机生成下落的增量,用来计算y的终点位子*/
y1=y+zjy;
time=50+rand()%100;/*随机生成雨点出现的时间*/
a[i].x=x;
a[i].y=y;
a[i].x1=x;
a[i].y1=y1;
a[i].flag=0;
a[i].time=time;
a[i].time1=0;
a[i].speed=1+rand()%2;
a[i].bo1=1;
a[i].bo2=15+rand()%10;
}
/*雨过程处理函数,通过对三个过程的判断决定调用的处理过程模块*/
cly(int flag,int x,int y,int x1,int y1,int speed,int bo1,int bo2,int i)
{
int n;
void xialuo(int,int,int,int,int,int);/*函数原形声明*/
/* void luoshui(int,int); 落水过程原形声明*/
/* void weibo(int,int,int,int);微波过程声明*/
switch (flag) /*因为首先对信息数组进行了扫描所以不存在flag=3的情况*/
{
case 0: xialuo(x,y,x1,y1,speed,i);break;
/* case 1: luoshui(x1,y1);break;可以加声音留以后处理*/
case 2: weibo(x1,y1,bo1,bo2,i);break;
}
}
/*雨下落过程*/
void xialuo(int x,int y,int x1,int y1,int speed,int i)
{
if(a[i].y>=a[i].y1) a[i].flag=2; /*(调试阶段)如果到了指定位置,雨消失(现在不处理具体的雨落水阶段)*/
else
{line(x,y,x,y+20);
a[i].y=a[i].y+speed;
a[i].speed++;
if (a[i].speed>=10) a[i].speed=10;
}/*否则的话继续下落*/
}
/*雨画微波过程*/
weibo(int x1,int y1,int bo1,int bo2,int i)
{
if(a[i].bo1<=a[i].bo2)
{
ellipse(x1,y1,0,360,bo1+20,bo1);
a[i].bo1++;
}
else
{
a[i].flag=3;
}
}
main()
{
int key,i,j=0;
printf("INPUT HOWMANY:");
scanf("%d",&yn);
/*初始化图型界面*/
inittu();
/*调用雨信息扫描:判断处理是否要随机生成雨信息"if a[i].flag=3" 调用生成雨函数*/
for(i=0;i<=yn;i++)
ran(i);
while(!kbhit())
{
cleardevice();
ysm();
if(j==getmaxx()) j=0;
delay(5000);
}
/*对雨信息处理函数*/
closegraph();
}

”我游啊游”,“那边才是C边啊”,“哦”
2005-12-25 15:43
快速回复:是关于链表的,请各路高手帮帮忙
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014658 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved