池塘夜降彩色雨代码数据结构课程设计(共13页)_第1页
池塘夜降彩色雨代码数据结构课程设计(共13页)_第2页
池塘夜降彩色雨代码数据结构课程设计(共13页)_第3页
池塘夜降彩色雨代码数据结构课程设计(共13页)_第4页
池塘夜降彩色雨代码数据结构课程设计(共13页)_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上/*包涵到头文件*/#include <stdio.h>#include <stdlib.h>#include <conio.h>#include <time.h>#include <dos.h>#include <graphics.h>#include <bios.h>/*宏定义*/*键盘控制 键盘扫描码*/#define LEFT 0x4b00#define RIGHT 0x4d00#define DOWN 0x5000#define UP 0x4800#define ESC 0x

2、011b#define L_SHEFT 0x01#define SPACE 0x3920#define LOWERF 0x2166#define UPPERF 0x2146#define LOWERA 0x1e61#define UPPERA 0x1e41#define LOWERQ 0x1071#define UPPERQ 0x1051#define ENTER 0x1c0d#define ONE 0x4f31#define TWO 0x5032#define THREE 0x5133#define FOUR 0x4b34#define FIVE 0x4c35#define SIX 0x4d

3、36#define SEVEN 0x4737#define EIGHT 0x4838#define NINE 0x4939#define O 0x5230#define PLUS 0x4e2b#define JIAN 0x4a2d /*全局变量*/int rain_Num;int rain_v;int rain_wind;int rain_len;int key;int big;int m;int curx;int cury;int thunder62=10,20,-10,0,10,20,-25,-25,15,0,0,-15;/*定义结构*/struct rainDrop *head;/*雨滴

4、 雨圈 雷电数据 结构体链表*/struct rainDrop int startX,curX,startY,curY; int flag; int endX; int endY; int rainColor; int status; int flagR; int curR; int thunderX1,thunderX2,thunderY1,thunderY2; int a,b; struct rainDrop *next;/*初始化画布*/*参数void*/*return无*/void initgraphics(void) int gmode,gdriver; gdriver=DETECT

5、; initgraph(&gdriver,&gmode,"");/*创建初始化头结点*/*返回指针p*/struct rainDrop *creatDrop(void) struct rainDrop *p; p=(struct rainDrop *)malloc(sizeof(struct rainDrop); p->startX=random(640); p->startY=random(430); p->flag=430+rand()%50; p->curX=p->startX-(rain_wind*5); p->c

6、urY=p->startY+rain_len; p->rainColor=random(15); p->status=0; p->flagR=random(10); p->curR=random(2); p->thunderX1=random(300); p->thunderY1=random(20); p->next=NULL; return(p);/*重新生成链表数据*/void recreatDrop(struct rainDrop *p) p->startX=random(640); p->startY=random(430)

7、; p->flag=430+rand()%50; p->curX=p->startX-(rain_wind*5); p->curY=p->startY+rain_len; p->rainColor=random(15); p->status=0; p->flagR=random(10); p->curR=random(3);/*创建整个链表*/void creatRain(void) struct rainDrop *p1,*p2;/*定义两个指针*/ int i; p1=p2=creatDrop(); head=p1;/*赋值头指针*/

8、for(i=0;i<rain_Num;i+) /*循环创建整个雨滴链表*/ p2=creatDrop(); p1->next=p2; p1=p2; /*生成下一个雨滴的 坐标位置*/void updateRainLineData(struct rainDrop *p)if(big=2)/*加速为2个雨滴距离下落*/ p->startX=p->curX; p->startY=p->curY; p->curX=p->startX-(rain_wind*5); p->curY=p->startY+rain_len; p->startX

9、=p->curX; p->startY=p->curY; p->curX=p->startX-(rain_wind*5); p->curY=p->startY+rain_len; p->startX=p->curX; p->startY=p->curY;if(big=1)/*加速为一个雨滴的距离下落*/ p->startX=p->curX; p->startY=p->curY; p->curX=p->startX-(rain_wind*5); p->curY=p->startY+r

10、ain_len; p->startX=p->curX; p->startY=p->curY;else /*正常速度下落*/p->startX=p->curX; p->startY=p->curY;p->curX=p->startX-(rain_wind*5); p->curY=p->startY+rain_len;/*雨雪选择函数*/selectWinter() m=1;selectSumm() m=6;/*分屏函数*/splitScreen(struct rainDrop *p)curx=p->curX/200;c

11、ury=p->curY/110;switch(curx) case 0: switch(cury) case 0: case 1:selectSumm();break; case 2:selectWinter();break; case 3:selectSumm();break; break; case 1: switch(cury) case 0: case 1:selectWinter();break; case 2:selectSumm();break; case 3:selectWinter();break; break; case 2: switch(cury) case 0:

12、 case 1:selectSumm();break; case 2:selectWinter();break; case 3:selectSumm();break; break; case 3: switch(cury) case 0: case 1:selectWinter();break; case 2:selectSumm();break; case 3:selectWinter();break; break;/*画出彩色雨滴*/void drawRainLine(struct rainDrop *p,int m) setcolor(p->rainColor);/*将雨滴赋予颜色

13、*/ if (m>=3&&m<=11) /*月份*/ line(p->startX,p->startY,p->curX,p->curY);/*画雨滴*/ else /*雪*/ setcolor(WHITE); setfillpattern(2,WHITE); sector(p->curX,p->curY,0,360,5,4); /*清除上一滴的雨滴*/void clearRainLine(struct rainDrop *p,int m) setcolor(BLACK);/*将雨滴赋予黑色*/ if (m>=3&&a

14、mp;m<=11) line(p->startX,p->startY,p->curX,p->curY); else setfillpattern(2,BLACK); sector(p->curX,p->curY,0,360,5,4); /*雨滴入数的声音*/getsound()int freq;for(freq=300;freq<5000;freq+=50)sound (freq);delay(400);nosound();/*雷电声音*/thunderesound()int freq;for(freq=1000;freq<2000;fre

15、q+=50)sound (freq);delay(5000);nosound();/*下雨*/void rainDropDown(struct rainDrop *p,int m)if(p->curY>=p->flag) clearRainLine(p,m); p->status=1; getsound(); else clearRainLine(p,m); updateRainLineData(p); drawRainLine(p,m); /*雨圈生长变大*/void updateRainCircleData(struct rainDrop *p)p->curR

16、+=1;/*画出雨圈*/void drawRainCircle(struct rainDrop *p)setcolor(p->rainColor);ellipse(p->curX,p->curY,0,360,10+p->curR*3,p->curR);/*清理雨圈*/void clearRainCircle(struct rainDrop *p)setcolor(BLACK);setfillpattern(2,BLUE); sector(p->curX,p->curY,0,360,10+p->curR*3,p->curR);/*入水 水圈生

17、成结束重新刷新雨点*/void fallToWater(struct rainDrop *p)if(p->curR>=p->flagR) clearRainCircle(p); recreatDrop(p); else clearRainCircle(p); updateRainCircleData(p); drawRainCircle(p); /*画出雷电 */int drawthurder(struct rainDrop *p) int i,j,k,x,y; setbkcolor(BLACK);p->thunderX1=random(300); p->thun

18、derY1=random(20); setcolor(WHITE); for(k=0;k<2;k+) x=random(100); y=random(100); p->thunderX1+=x; p->thunderY1+=y; p->a=p->thunderX1; p->b=p->thunderY1; for(i=0;i<6;i+) for(j=0;j<2;j+) setfillpattern(0,WHITE); p->thunderX2=p->thunderX1-thunderij; j+; p->thunderY2=

19、p->thunderY1+thunderij; line(p->thunderX1,p->thunderY1,p->thunderX2,p->thunderY2); p->thunderX1=p->thunderX2;p->thunderY1=p->thunderY2; floodfill(p->a-3,p->b+12,WHITE); setfillpattern(0,0); bar(p->a-20,p->b-10,p->a+40,p->b+40); /* 函数实现释放链表收起画布 */void rain

20、free(void) char mark;struct rainDrop *p,*q;p=head;while(p!=NULL)q=p; p=p->next; free(q); closegraph();/*键盘控制*/keyboardCon(struct rainDrop *p)key=bioskey(0); if(key=LEFT) rain_wind+=1;if(key=TWO) m=1; if(key=RIGHT) rain_wind-=1; if(key=DOWN) rain_len-=1; if(key=UP) rain_len+=1; if(key=SPACE) rainf

21、ree(); exit(0); if(key=PLUS&&big<2) big+=1; if(key=JIAN) big-=1; if(key=ONE) splitScreen(p); if(key=THREE) m=6;/*软件介绍信息 */output() outtextxy(100,10,"Pond night rain fall color-thank you! "); outtextxy(500,400," "); /*河水*/river()setfillpattern(0, BLUE); bar(0,440,640,50

22、0);/*下雨 */void rain(int m)struct rainDrop *p;p=head;while(!(key=ESC) keyboardCon(p); while(!kbhit() if(p=NULL) p=head; else if(p->status=0) rainDropDown(p,m); else fallToWater(p); delay(rain_v); output(); if(key=ENTER) drawthurder(p); drawthurder(p); thunderesound(); key=NULL; p=p->next; /*软件开

23、始简介*/void Introduction()printf("*n"); printf("*n"); printf("Pond night rain fall color!n");printf("tclass:n"); printf("*n"); printf("*n");/*过滤函数*/filter()int i;i=0;while(i>=6)if(rain_Num<0&&rain_Num>50)printf("errornNo

24、te Please enter less than fifty greater than zeronrain_num: "); scanf("%d",&rain_Num);elsei+=1;if(rain_v<0&&rain_v>10)printf("errornNote Please enter less than fifty greater than zeronrain_v: "); scanf("%d",&rain_v);elsei+=1;if(rain_len<0&a

25、mp;&rain_len>50)printf("errornNote Please enter less than ten greater than zeronrain_len: "); scanf("%d",&rain_len);elsei+=1;if(rain_wind<0&&rain_wind>10)printf("errornNote Please enter less than ten greater than zeronrain_wind: "); scanf("%d",&rain_wind);elsei+=1;if(m<0&&m>10)printf("errornNote

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论