《池塘夜降彩色雨代码数据结构优质课程设计》由会员分享,可在线阅读,更多相关《池塘夜降彩色雨代码数据结构优质课程设计(22页珍藏版)》请在金锄头文库上搜索。
1、/*包涵到头文献*/#include #include #include #include #include #include #include /*宏定义*/*键盘控制 键盘扫描码*/#define LEFT 0x4b00#define RIGHT 0x4d00#define DOWN 0x5000#define UP 0x4800#define ESC 0x011b#define L_SHEFT 0x01#define SPACE 0x3920#define LOWERF 0x2166#define UPPERF 0x2146#define LOWERA 0x1e61#define UPP
2、ERA 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 0x4d36#define SEVEN 0x4737#define EIGHT 0x4838#define NINE 0x4939#define O 0x5230#define PLUS 0x4e2b#define JIAN 0x4a2d /*
3、全局变量*/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;/*雨滴 雨圈 雷电数据 构造体链表*/struct rainDrop int startX,curX,startY,curY; int flag; int endX; int endY; int rainColor; int status;
4、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; initgraph(&gdriver,&gmode,);/*创立初始化头结点*/*返回指针p*/struct rainDrop *creatDrop(void) struct rainDrop *p; p=(struct rainD
5、rop *)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-curY=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; ret
6、urn(p);/*重新生成链表数据*/void recreatDrop(struct rainDrop *p) p-startX=random(640); p-startY=random(430); 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 *
7、p1,*p2;/*定义两个指针*/ int i; p1=p2=creatDrop(); head=p1;/*赋值头指针*/ for(i=0;inext=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=p-curX; p-startY=p-curY; p-c
8、urX=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+rain_len; p-startX=p-curX; p-startY=p-curY;else /*正常速度下落*/p-startX=p-curX; p-startY=p-curY;p-curX=p-startX
9、-(rain_wind*5); p-curY=p-startY+rain_len;/*雨雪选择函数*/selectWinter() m=1;selectSumm() m=6;/*分屏函数*/splitScreen(struct rainDrop *p)curx=p-curX/200;cury=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: sw
10、itch(cury) case 0: case 1:selectWinter();break; case 2:selectSumm();break; case 3:selectWinter();break; break; case 2: switch(cury) case 0: 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);/*将雨滴赋予颜色*/ if (m=3&mstartX,p-startY,p-curX,p-curY);/*画雨滴*/ else /*雪*/ setcolor(WHITE); setfillpattern(2,WHITE); sector(p-cur