该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

用C语言模拟下雨

#include

#include

#include

#include

#include

#include

#define LEN sizeof(struct rainDrop)

int rainDropNumber=60;

int downSpeed=20;

struct rainDrop *head;

struct rainCircle

{

int x;

int y;

int r;

int curR;

int rainCircleStep;

};

struct rainDrop

{

int startX;

int startY;

int endY;

int curX;

int curY;

int rainColor;

int rainLineStep;

int rainLineLength;

int status;

struct rainCircle water;

struct rainDrop *next;

};

void initgraphics(void)

{

int gmode,gdriver;

gdriver=DETECT;

initgraph(&gdriver,&gmode,"");

}

struct rainDrop *creatDrop(void)

{

struct rainDrop *p;

p=(struct rainDrop *)malloc(LEN);

p->startX=rand()%640;

p->startY=rand()%430;

p->endY=430+rand()%50;

p->curX=p->startX;

p->curY=p->startY;

p->rainLineStep=8;

p->rainColor=rand()%15+1;

p->rainLineLength=rand()%10+10;

p->status=0;

p->water.x=p->startX;

p->water.y=p->endY;

p->water.r=rand()%40;

p->water.curR=rand()%2;

p->water.rainCircleStep=rand()%2+1;

p->next=NULL;

return(p);

}

void recreatDrop(struct rainDrop *p)

{

p->startX=rand()%640;

p->startY=rand()%430;

p->endY=430+rand()%50;

p->curX=p->startX;

p->curY=p->startY;

p->rainLineStep=8;

p->rainColor=rand()%15+1;

p->rainLineLength=rand()%10+10;

p->status=0;

p->water.x=p->startX;

p->water.y=p->endY;

p->water.r=rand()%40;

p->water.curR=rand()%2;

p->water.rainCircleStep=rand()%2+1;

}

void creatRain(void)

{

struct rainDrop *p1,*p2;

int i;

p1=p2=creatDrop();

head=p1;

for(i=0;i

{

p2=creatDrop();

p1->next=p2;

p1=p2;

}

}

void updateRainLineData(struct rainDrop *p)

{

if(p->rainLineStep%5==0)

p->rainLineStep++;

p->curY+=p->rainLineStep;

p->startY=p->curY-p->rainLineLength;

}

void drawRainLine(struct rainDrop *p)

{

setcolor(p->rainColor);

line(p->startX,p->startY,p->curX,p->curY);

}

void clearRainLine(struct rainDrop *p)

{

setcolor(BLACK);

line(p->startX,p->startY,p->curX,p->curY);

}

void rainDropDown(struct rainDrop *p)

{

if(p->curY>=p->endY)

{

clearRainLine(p);

p->status=1;

}

else

{

clearRainLine(p);

updateRainLineData(p);

drawRainLine(p);

}

}

void updateRainCircleData(struct rainDrop *p)

{

p->water.curR+=p->water.rainCircleStep;

}

void drawRainCircle(struct rainDrop *p)

{

setcolor(p->rainColor);

circle(p->water.x,p->water.y,p->water.curR);

}

void clearRainCircle(struct rainDrop *p)

{

setcolor(BLACK);

circle(p->water.x,p->water.y,p->water.curR);

}

void fallToWater(struct rainDrop *p)

{

if(p->water.curR>=p->water.r)

{

clearRainCircle(p);

recreatDrop(p);

}

else

{

clearRainCircle(p);

updateRainCircleData(p);

drawRainCircle(p);

}

}

void rain(void)

{

struct rainDrop *p;

p=head;

while(!kbhit())

{

if(p==NULL)

p=head;

else

{

if(p->status==0)

rainDropDown(p);

else

fallToWater(p);

}

delay(downSpeed);

p=p->next;

}

}

void clearAll(void)

{

struct rainDrop *p,*pf;

p=head;

while(p!=NULL)

{

pf=p;

p=p->next;

free(pf);

}

closegraph();

}

main()

{

printf("Input rainDrop Number:");

scanf("%d",&rainDropNumber);

printf("Input down speed:");

scanf("%d",&downSpeed);

randomize();

initgraphics();

creatRain();

rain();

clearAll();

}

c语言现在正在下雨吗,用C语言模拟下雨相关推荐

  1. C语言程序设计今天下雨了吗,C语言编程模拟下雨by张田浩

    <C语言编程模拟下雨by张田浩>由会员分享,可在线阅读,更多相关<C语言编程模拟下雨by张田浩(11页珍藏版)>请在人人文库网上搜索. 1.程序设计实习报告题目:模拟下雨学院: ...

  2. C语言程序设计今天下雨了吗,C语言编程模拟下雨by张田浩.doc

    实用文档 标准 程序设计实习报告 题目: 模拟下雨 学院: 计算机与通信工程学院 专业: 计算机科学与技术 班级: 计算1402 姓名: 张田浩 学号:1407010220 一.需求分析 1.本程序要 ...

  3. C++语言学习(十二)——C++语言常见函数调用约定

    C++语言学习(十二)--C++语言常见函数调用约定 一.C++语言函数调用约定简介 C /C++开发中,程序编译没有问题,但链接的时候报告函数不存在,或程序编译和链接都没有错误,但只要调用库中的函数 ...

  4. c语言exit在哪个头文件_C语言函数执行成功时,返回1和返回0,究竟哪个好?

    基本上,没有人会将大段的C语言代码全部塞入 main() 函数,更好的做法是按照复用率高,耦合性低的原则,尽可能的将代码拆分不同的功能模块,并封装成函数.C语言代码的组合千变万化,因此函数的功能可能会 ...

  5. c语言程序与设计苏小红,c语言程序设计苏小红

    <实验教学示范中心建设教材·国家精品课程主讲教材:C语言程序设计(第2版)>是一本兼具趣味性和实用性的C语言程序设计教材.全书由13章组成,内容包括:为什么要学C语言,C数据类型,简单的算 ...

  6. char类型怎么输入 c语言_还没搞懂C语言指针?这里有最详细的纯干货讲解(附代码)...

    21ic综合自网络信息 指针对于C来说太重要.然而,想要全面理解指针,除了要对C语言有熟练的掌握外,还要有计算机硬件以及操作系统等方方面面的基本知识.所以本文尽可能的通过一篇文章完全讲解指针. 为什么 ...

  7. 英语是缺乏AOP的语言,汉语是具备AOP的语言。

    今天在看spring的网站的时候,突然意识到汉语里面有AOP的影子. 英文表达被动语态的时候用过去分词,一般是加ed,但是大量的特殊形式,这样造成英文单词的记忆量大增.相反汉语没有这个问题,被动语态就 ...

  8. C语言字符糊到了一起,C语言速成及格课.docx

    C语言速成及格课.docx 目录:1. C语言概要 2.变量 3.计算 4.判断 5.循环 6.函数 7.数组 8.指针 9.字符(串)附录1:学习C语言的方法.附录2:编程的一些技巧.附录3:使用电 ...

  9. c语言实验七 函数实验报告,C语言实验七函数实验报告.doc

    C语言实验七函数实验报告 C语言程序设计 实 验 报 告 实验题目 实验七 函数 实验目的 掌握函数定义的方法: 掌握函数实参与形参的对应关系,以及值传递的方式. 掌握函数的嵌套调用和递归调用的方法: ...

最新文章

  1. 如何用计算机玩出花样,PPT图片玩出新花样
  2. Eclipse插件安装的三种方法
  3. 高仿腾讯QQ Xplan(X计划)的H5页面(2):动画控制
  4. 教你认清MVC,MVP和MVVM
  5. redis安装 linux步骤,【linux安装redis完整步骤】
  6. 4、CSS 高级语法
  7. Android onSaveInstanceState、onRestoreInstanceState保存数据
  8. oracle定时器在项目中的应用
  9. 程序语言中基本数值类型的分类
  10. drupalchina--如何翻译及如何上传翻译的内容?
  11. 基于虚拟帐号的邮件系统extmail(1)
  12. 剖析 Vue.js 内部运行机制 (1)
  13. Python学习入门基础教程(learning Python)--5.6 Python读文件操作高级
  14. 简单的MQTT客户端工具
  15. windows下安装redis并设置开机自启动
  16. lv双肩包尺寸对照表_当红Monogram帆布LV双肩包尺寸究竟有多少?
  17. 第三章 程序的机器级表示
  18. 6.2、C++的内联函数、函数重载、局部变量和全局变量
  19. 数据结构与算法较好的视频
  20. 【无人机 学习笔记 1】无人机导航技术及其特点分析

热门文章

  1. LeetCode: Longest Consecutive Sequence [128]
  2. FreeBSD8.0搭建Apache+PHP+MySql平台
  3. Java并发 正确终止与恢复线程
  4. WPF的Clipboard.SetText()有问题
  5. Oracle 查询当前日期
  6. 示例演示数据压缩的效果
  7. 如何从复杂的货币种类中选出人民币格式的数字
  8. 软件测试成功之本:项目风险的监控
  9. BACKUP PENDING状态的解除
  10. Know more about RAC GES STATISTICS