用C语言制作圣诞贺卡.docx
- 文档编号:29783801
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:13
- 大小:16.66KB
用C语言制作圣诞贺卡.docx
《用C语言制作圣诞贺卡.docx》由会员分享,可在线阅读,更多相关《用C语言制作圣诞贺卡.docx(13页珍藏版)》请在冰豆网上搜索。
用C语言制作圣诞贺卡
计算机技术基础课程设计
C语言
设计报告
学院:
机电工程学院
专业:
工业设计
班级:
060106
姓名:
王鑫
指导教师:
韩志明
设计日期:
2007年7月10日
题目:
用C语言制作圣诞贺卡
一、选题背景:
圣诞将至,同学们正为给亲人朋友准备什么样的礼物而发愁,心里琢磨,要是能亲手制作一份礼物送给老师同学那该有多好,正好我们学习了c语言,所以我设计了这张圣诞卡赠给我敬爱的老师和同学们,希望大家在新的一年里工作顺利,学业进步。
二、设计思想:
本程序主要是用图形的绘制,以及对月亮升起的实现。
引进库函数,并初始化图形系统。
才用调用函数的形式,用一个随机函数产生天空中闪烁的星星,并用随机函数产生烟火。
用setcolor填充各图形的颜色。
用circle函数画圆。
用lineto画直线。
三、程序流程图
主函数开始
说明所调用的函数
调用start函数
设置起始语句
调用bgroud函数画出地面
调用dstar函数
画出满天彩星
调用dtree函数画出绿色小树
调用boy|girl函数
画出男孩女孩
调用dmoon函数
画出升起的月亮
调用say函数
设置男孩说话内容
设置fire函数
画出绚丽的烟火
调用dtext函数
设置卡片下标
调用fire函数
结束
四、程序清单
#include"math.h"
#include"stdlib.h"
#include"stdio.h"
#include"conio.h"
#include"graphics.h"
#definePI3.1415926
structmoon
{
intx;
inty;
}moon;
structdramnstar
{
intx;
inty;
intcolor;
}star[200];
voidstart();
voidbgroud();
voiddtree();
voidboy();
voidgirl();
voidsay();
voiddstar();
voidfire();
voiddmoon();
voiddtext();
voidmain()
{
start();
getch();
bgroud();
dstar();
dtree();
boy();
girl();
dmoon();
say();
dtext();
getch();
}
voidstart()
{
intgd=DETECT,gm;
initgraph(&gd,&gm,"d:
\\tc");
randomize();
cleardevice();
setbkcolor(3);
setcolor(4);
settextstyle(0,0,2);
outtextxy(100,160,"Thereisagiftforyou.");
settextstyle(0,0,2);
outtextxy(100,240,"Pleaseinputanykeytostart.");
}
voidbgroud()
{
cleardevice();
setbkcolor(0);
setcolor(15);
setlinestyle(0,0,3);
rectangle(0,400,640,480);
setfillstyle(1,15);
floodfill(480,450,15);
}
voiddstar()
{
inti;
for(i=0;i<300;i++)
{
star[i].x=random(640);
star[i].y=random(400);
star[i].color=random(13)+1;
}
for(i=0;i<200;i++)
putpixel(star[i].x,star[i].y,star[i].color);
}
voiddtree()
{
setcolor(8);
line(150,280,150,390);
line(150,390,130,404);
line(130,404,190,404);
line(190,404,170,390);
line(170,390,170,280);
line(170,280,150,280);
setfillstyle(5,8);
floodfill(160,300,8);
setcolor
(2);
line(160,40,60,280);
line(60,280,260,280);
line(260,280,160,40);
setfillstyle(1,2);
floodfill(200,200,2);
setcolor(7);
arc(160,0,265,275,120);
arc(160,0,262,278,160);
arc(160,0,260,280,210);
}
voidboy()
{
setcolor(15);
ellipse(380,334,0,360,60,70);
setfillstyle(1,15);
floodfill(380,334,15);
setcolor(7);
circle(380,238,30);
floodfill(380,238,7);
setcolor(0);
circle(370,230,2);
circle(390,230,2);
setfillstyle(1,0);
floodfill(370,230,0);
floodfill(390,230,0);
circle(380,248,4);
floodfill(380,248,0);
setcolor(15);
circle(380,248,2);
setfillstyle(1,15);
floodfill(380,248,15);
}
voidgirl()
{
setcolor(15);
ellipse(480,340,0,360,50,64);
setfillstyle(1,15);
floodfill(480,340,15);
setcolor(7);
circle(480,256,24);
floodfill(480,256,7);
setcolor(0);
arc(472,250,30,160,4);
arc(488,250,10,140,4);
setcolor(12);
circle(470,259,5);
circle(490,259,5);
setfillstyle(1,12);
floodfill(470,259,12);
floodfill(490,259,12);
setcolor(0);
arc(480,260,250,286,10);
}
voiddmoon()
{
inti,j;
moon.x=20;
moon.y=340;
for(i=0;i<10;i++)
{
setcolor(14);
circle(moon.x,moon.y,20);
setfillstyle(1,14);
floodfill(moon.x,moon.y,14);
delay(99999999);
if(i!
=9)
{
setcolor(0);
circle(moon.x,moon.y,22);
setfillstyle(1,0);
floodfill(moon.x,moon.y,0);
for(j=0;j<5;j++)
{
star[j].x=random(40)+moon.x-20;
star[j].y=random(40)+moon.y-20;
star[j].color=random(13)+1;
putpixel(star[j].x,star[j].y,star[j].color);
}
}
moon.x+=(int)20*sin(i*PI/18);
moon.y-=35;
}
}
voidsay()
{
setcolor(15);
setfillstyle(1,15);
ellipse(410,200,0,360,10,5);
ellipse(430,170,0,360,20,10);
ellipse(488,120,0,360,100,30);
floodfill(410,200,15);
floodfill(430,170,15);
floodfill(480,120,15);
}
voidfire()
{
intb,j;
intx0,y0;
x0=random(40)+260;
y0=random(40)+30;
b=random(10);
setlinestyle(0,0,1);
j=random(200)+30;
setcolor(4);
line(x0+j,y0+b-10,x0+j,y0+b-20);
line(x0+j,y0+b+10,x0+j,y0+b+20);
setcolor(12);
line(x0+j-10,y0+b,x0+j-20,y0+b);
line(x0+j+10,y0+b,x0+j+20,y0+b);
setcolor(14);
line(x0+j-10,y0+b-10,x0+j-20,y0+b-20);
line(x0+j+10,y0+b+10,x0+j+20,y0+b+20);
setcolor
(2);
line(x0+j-10,y0+b+10,x0+j-20,y0+b+20);
line(x0+j+10,y0+b-10,x0+j+20,y0+b-20);
sleep
(1);
setcolor(0);
line(x0+j,y0+b-10,x0+j,y0+b-20);
line(x0+j,y0+b+10,x0+j,y0+b+20);
line(x0+j-10,y0+b,x0+j-20,y0+b);
line(x0+j+10,y0+b,x0+j+20,y0+b);
line(x0+j-10,y0+b-10,x0+j-20,y0+b-20);
line(x0+j+10,y0+b+10,x0+j+20,y0+b+20);
line(x0+j-10,y0+b+10,x0+j-20,y0+b+20);
line(x0+j+10,y0+b-10,x0+j+20,y0+b-20);
}
voiddtext()
{
inta=1;
inti;
setcolor(4);
ellipse(140,430,0,360,140,30);
setfillstyle(1,15);
floodfill(500,440,4);
setcolor(RED);
settextstyle(0,0,1);
outtextxy(450,460,"MadebyWangXin.");
do
{
setcolor(a);
settextstyle(0,0,2);
outtextxy(20,420,"MerryChistmas!
");
setcolor(a+1);
settextstyle(0,0,1);
outtextxy(400,110,"Mydarling:
");
outtextxy(405,120,"Iwillalwaysloveyou!
");
setcolor(a-1);
outtextxy(450,460,"MadebyWangXin.");
for(i=0;i<30;i++)
{
star[i].x=random(100)+110;
star[i].y=random(140)+140;
star[i].color=random(13)+1;
}
for(i=0;i<40;i++)
{
putpixel(star[i].x,star[i].y,star[i].color);
putpixel(star[i].x+1,star[i].y+1,star[i].color);
putpixel(star[i].x-1,star[i].y+1,star[i].color);
}
fire();
for(i=0;i<40;i++)
{
putpixel(star[i].x,star[i].y,2);
putpixel(star[i].x+1,star[i].y+1,2);
putpixel(star[i].x-1,star[i].y+1,2);
}
a++;
if(a==14)
a=1;
}while(kbhit()==0);
}
五、主要解决问题的方法及技术关键
1、主要问题及解决方法
1、图形的绘制
用while(!
kbhit())来实现循环,用预编译命令引进库函数并通过initgraph初始化图形系统。
利用circle函数画圆。
颜色的设置
2、多次调用函数
3、技术关键
ü升起的月亮的实现
ü图形的绘制
ü灵活调用函数
六、设计结果说明
1、设计优点:
图形比较优美,富有动感,且程序简单。
多个函数的调用使主函
数看起来变得非常简单。
并设计了人机对话的菜单,使得有参与的兴趣。
程序有使用价值。
2、设计不足:
由于时间关系以及水平问题,图形绘制得比较粗糙,比较简单,
不是很精美。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 制作 圣诞 贺卡