⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 snowdown.c

📁 计算机图形学的一个课程设计 里面有word版 (里面包含源代码)
💻 C
字号:
/*简单的下雪场景*/
#include "Conio.h"
#define closegr closegraph 
#include <stdlib.h> 
#include <stdio.h> 
#include<graphics.h> 
struct Snow/*设置雪的一些参数*/ 
{ 
int x; 
int y; 
int speed; 
}snow[100]; 
int snownum=0;/*雪的个数*/ 
int size;/*保存区域的大小*/ 
int change=100;/*变颜色*/
void *save1,*save2;/*保存空间*/ 
void Copy();/*保存区域*/ 
void DrawSnow();/*实现下雪*/
void Pr();/*输出图形*/
void main(void) 
{
int gd=DETECT,gm; 
initgraph(&gd,&gm,"c:\\tc"); /*图形初始化*/
Copy(); 
DrawSnow(); 
getch(); 
closegraph();/*关闭图形*/ 
} 
void Copy() 
{ 
setcolor(0);/*设置颜色*/ 
setfillstyle(SOLID_FILL,15);/*以实填充设置颜色为白色*/ 
fillellipse(200,200,4,4);/*画椭圆并填充*/ 
size=imagesize(196,196,204,204);/*求图形的大小 */
save1=malloc(size); /*开辟空间*/
save2=malloc(size);
getimage(196,196,204,204,save1);/*保存*/ 
getimage(96,96,104,104,save2); 
} 
void Pr() 
{ 
setcolor(change/12);/*设置路的颜色*/
/*在屏幕上显示马路*/
line(310,4,230,610);
line(360,4,430,610);
setcolor(change/50);/*设置树的颜色*/
/*在屏幕上显示树*/
line(261,222,277,252);
line(268,211,280,232);
line(231,167,240,211);
line(240,211,266,184);
line(266,184,231,167);
line(250,200,247,236);
line(257,195,279,197);
line(247,236,279,197);
/*在屏幕上显示树*/
line(260,83,261,116);
line(261,116,284,87);
line(284,87,260,83);
line(268,109,269,134);
line(269,134,294,96);
line(294,96,276,98);
line(277,123,291,142);
line(294,123,285,110);
/*在屏幕上显示树*/
line(196,302,198,356);
line(198,356,232,322);
line(232,322,196,302);
line(210,346,205,387);
line(205,387,257,340);
line(257,340,220,334);
line(226,371,257,422);
line(261,395,237,358);
/*在屏幕上显示树*/
line(404,56,386,51);
line(386,51,397,75);
line(397,75, 404,56);
line(387,57,375,50);
line(375,50,392,92);
line(392,92,394,71);
line(382,67,371,79);
line(387,77,373,94);
/*在屏幕上显示树*/
line(441,181,412,173);
line(412,173,436,219);
line(436,219,441,181);
line(420,192,396,171);
line(396,171,427,244);
line(427,244,428,211);
line(409,206,387,233);
line(390,250,416,222);
/*在屏幕上显示树*/
line(476,296,440,280);
line(440,280,474,343);
line(474,343,476,296);
line(452,304,413,277);
line(413,277,466,381);
line(466,381,460,321);
line(438,327,402,375);
line(407,394,445,341);
setcolor(change/7);/*设置人的颜色*/
/*在屏幕上显示人*/
circle(313,257,7);
line(313,263,312,287);
line(312,287,298,304);
line(312,287,323,301);
line(312,273,300,283);
line(312,273,329,282);
/*在屏幕上显示人*/
circle(345,251,8);
line(345,258,346,284);
line(346,284,335,305);
line(346,284,358,307);
line(346,270,329,282);
line(346,270,366,282);
setbkcolor(change/11);/*屏幕的背景颜色*/
}
void DrawSnow() 
{int i; 
int sx[62]; 
randomize(); /*初始化随机数发生器*/
for(i=0;i<62;i++) 
sx[i]=(i+2)*10; 
cleardevice(); /*清除图形屏幕*/
while(!kbhit()) /*按任意键退出*/
{ 
Pr();
if(snownum!=100) 
{ 
snow[snownum].speed=2+random(5);/*产生雪的速度为2~7个*/ 
i=random(62); 
snow[snownum].x=sx[i]; 
snow[snownum].y=10-random(100); 
} 
for(i=0;i<snownum;i++)/*去雪*/ 
putimage(snow[i].x,snow[i].y,save2,COPY_PUT);/*在屏幕上输出图形*/  
Pr();
if(snownum!=100) 
snownum++ ; 
delay(300);/*将程序的执行暂停300毫秒*/
setfillstyle(SOLID_FILL,15);/*画雪*/ 
for(i=0;i<snownum;i++) 
{ 
snow[i].y+=snow[i].speed; 
putimage(snow[i].x,snow[i].y,save1,COPY_PUT);/*在屏幕上输出图形*/ 
if(snow[i].y>500) 
snow[i].y=10-random(200); 
} 
} 
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -