新年好礼玫瑰花和祝福卡.docx

上传人:b****7 文档编号:10863257 上传时间:2023-02-23 格式:DOCX 页数:22 大小:64.56KB
下载 相关 举报
新年好礼玫瑰花和祝福卡.docx_第1页
第1页 / 共22页
新年好礼玫瑰花和祝福卡.docx_第2页
第2页 / 共22页
新年好礼玫瑰花和祝福卡.docx_第3页
第3页 / 共22页
新年好礼玫瑰花和祝福卡.docx_第4页
第4页 / 共22页
新年好礼玫瑰花和祝福卡.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

新年好礼玫瑰花和祝福卡.docx

《新年好礼玫瑰花和祝福卡.docx》由会员分享,可在线阅读,更多相关《新年好礼玫瑰花和祝福卡.docx(22页珍藏版)》请在冰豆网上搜索。

新年好礼玫瑰花和祝福卡.docx

新年好礼玫瑰花和祝福卡

计算机技术基础课程设计

C语言

设计报告

题目:

新年好礼:

玫瑰花和祝福卡

学院:

化学工程学院

专业:

制药工程

班级:

050607

姓名:

黄晶

指导老师:

顾煜新

日期:

2007年1月10日

 

题目:

新年好礼:

玫瑰花和祝福卡

一、选题背景

新年将至,送一份祝福给爱你的人和你爱的人,让他(她)们感受到虽然相隔很远,但是我们依然牵挂着他(她)们。

玫瑰花是美丽的代表,贺卡是我们发送祝福的最好表现形式。

所以我将画图的程序来实现玫瑰花以及贺卡的图像。

二、设计思想

本程序将利用图形库函数、数学函数和标准I/O函数并初始化图形系统来实现函数的运行。

图形中玫瑰花的形状是利用画图函数并根据其坐标来实现的,图形中的弧线

是利用曲线函数实现的。

贺卡中对月亮升起的实现,引进库函数,利用调用函数的形式,用一个随机函数产生天空中闪烁的星星,并用随机函数产生烟火。

用setcolor填充各图形的颜色。

用circle函数画圆。

用lineto画直线。

程序中的的调用函数大多是我们没有学过的。

initgraph/*初始化图形系统*/

cleardevice/*清除图形屏幕*/

hua/*自己定义的函数*/

;setcolor/*设置当前画图颜色*/

rectangle/*话矩形边框*/

getch/*输入字符*/

closegraph/*关闭图形系统*/

floodfill/*填充一个有界区域*/

三、主要解决问题:

1、主要问题及解决方法:

(1)一个简单的玫瑰在这个语句(rc(x+64,y-57,300,490,17);)中出现了颜色外泻。

解决办法:

利用floodfill函数实现填充一个有界函数。

(2)图形的绘制

用while(!

kbhit())来实现循环,用预编译命令引进库函数并通过initgraph初始化图形系统。

利用circle函数画圆。

(3)颜色的设置:

 多次调用函数

2、技术关键

✓       升起的月亮的实现

✓       图形的绘制

✓       灵活调用函数

 

 

 

四、程序流程图:

 

 

start函数

调用say

调用dmoon

调用dstar

调用dstar,

调用fire函数

结束

 

五、程序清单:

#include

#include

#include

#include35

#include"stdlib.h"

#include"stdio.h"

#include"conio.h"

#include"graphics.h"

#defineFNX(x)(int)(xo+(x)*1.0)

#defineFNY(y)(int)(getmaxy()-(yo+(y)*1.0))

#defineFNX2(phi)cos(phi)*ac-sin(phi)*bs

#defineFNY2(phi)cos(phi)*as+sin(phi)*bc

#definePI3.1415926

structmoon

{

intx;

inty;

}moon;

structdramnstar

{

intx;

inty;

intcolor;

}star[200];

voidstart();

voidbgroud();

voiddtree();

voidboy();

voidgirl();

voidsay();

voiddstar();

voidfire();

voiddmoon();

voiddtext();

 

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,"Madebyjing.");

do

{

setcolor(a);

settextstyle(0,0,2);

outtextxy(20,420,"Happynewyear!

");

setcolor(a+1);

settextstyle(0,0,1);

outtextxy(400,110,"Mydarlingguy:

");

outtextxy(405,120,"Iwillloveyouforever!

");

setcolor(a-1);

outtextxy(450,460,"Madebyjing.");

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);

}

/*画旋转的椭圆*/

voidelli(intxo,intyo,inta,intb,doubletheta)

{

inti;

doubleda,c,s,ac,as,bc,bs,xf,yf,phi,x,y;

theta=theta*0.01745;

da=3*0.1745;

c=cos(theta);s=sin(theta);

ac=a*c;as=a*s;bc=b*c;bs=b*s;

x=FNX2(0);y=FNY2(0);

moveto(FNX(x),FNY(y));

for(i=1;i<=360;i++)

{

phi=i*da;xf=x*cos(phi)*0.1;yf=b*sin(phi)*0.1;

x=FNX2(phi);y=FNY2(phi);

lineto(FNX(x),FNY(y));

}

}

/*花*/

voidhua(intx,inty)

{

registeri;

/*画粉红色玫瑰*/

setcolor(12);

arc(x+65,y-60,150,350,8);

arc(x+66,y-54,300,470,8);

arc(x+65,y-56,30,230,10);

arc(x+64,y-57,300,490,17);

ellipse(x+73,y-30,250,450,27,40);

ellipse(x+59,y-30,100,290,27,40);

ellipse(x+65,y-40,140,270,20,30);

setfillstyle(SOLID_FILL,5);

floodfill(x+65,y-20,12);

/*画红色玫瑰*/

arc(x,y,150,350,12);

arc(x+1,y+8,280,470,12);

arc(x,y+2,30,230,16);

arc(x,y+3,80,240,28);

arc(x+2,y+8,180,330,22);

arc(x-2,y+2,310,460,25);

ellipse(x-12,y+30,120,300,30,40);

ellipse(x+10,y+28,250,423,30,42);

ellipse(x-4,y+10,290,393,30,40);

setfillstyle(SOLID_FILL,4);

floodfill(x+5,y+31,12);

/*画紫色花骨朵*/

ellipse(x+120,y+5,0,360,15,25);

setfillstyle(SOLID_FILL,1);

floodfill(x+120,y,12);

/*画黄色花骨朵*/

ellipse(x-70,y+10,0,360,14,20);

setfillstyle(SOLID_FILL,14);

floodfill(x-70,y+10,12);

setcolor(10);

/*画红花花萼*/

ellipse(x-15,y+32,190,310,30,35);

ellipse(x+16,y+32,235,355,26,35);

ellipse(x,y+35,190,350,43,50);

arc(x,y+82,190,350,6);

setfillstyle(SOLID_FILL,2);

floodfill(x,y+75,10);

/*画粉花花萼*/

ellipse(x+50,y-48,190,320,22,50);

ellipse(x+80,y-48,220,350,22,50);

ellipse(x+65,y-28,180,360,36,50);

floodfill(x+65,y+18,10);

/*画主枝*/

for(i=0;i<3;i++)

{

ellipse(x-98,y+100+i,255,371,100,80);

ellipse(x-20,y+30+i,260,358,140,140);

ellipse(x+224,y+20+i,180,218,160,140);

}

/*画侧枝*/

ellipse(x+70,y+34,180,233,140,140);

ellipse(x,y+40,205,255,100,120);

ellipse(x+135,y-30,209,249,72,120);

ellipse(x,y+20,263,301,100,120);

ellipse(x+85,y-10,278,305,100,120);

ellipse(x+100,y-62,282,308,90,120);

ellipse(x-50,y-10,277,314,30,120);

ellipse(x+70,y+80,222,266,52,120);

ellipse(x-60,y-45,229,266,52,120);

ellipse(x+79,y-45,229,266,52,120);

ellipse(x+84,y,224,273,52,120);

ellipse(x+110,y+40,240,282,100,120);

/*画紫花骨朵花萼*/

ellipse(x+120,y-6,200,340,17,25);

ellipse(x+120,y+7,160,380,17,27);

floodfill(x+122,y+30,10);

/*画黄花骨朵花萼*/

ellipse(x-70,y+15,140,390,17,20);

ellipse(x-75,y-10,205,340,10,30);

ellipse(x-60,y-10,195,340,5,30);

floodfill(x-70,y+32,10);

/*画叶*/

/*画右边的叶子*/

elli(x+168,y+282,10,20,-40);

elli(x+160,y+252,8,16,260);

elli(x+145,y+270,8,16,-15);

elli(x+156,y+224,10,20,-45);

elli(x+150,y+200,8,16,270);

elli(x+135,y+220,8,16,-10);

elli(x+146,y+144,8,16,-80);

elli(x+130,y+130,6,12,235);

elli(x+125,y+154,7,14,-10);

elli(x+78,y+98,6,12,-90);

elli(x+60,y+90,5,10,180);

elli(x+70,y+109,5,10,-45);

/*画左边的叶子*/

elli(x-125,y+270,12,24,60);

elli(x-95,y+270,10,20,10);

elli(x-110,y+245,10,20,90);

elli(x-105,y+220,10,20,45);

elli(x-100,y+190,8,16,135);

elli(x-75,y+210,8,16,-45);

/*画中间的叶子*/

elli(x+65,y+190,10,20,-45);

elli(x+40,y+185,8,16,0);

elli(x+55,y+165,8,16,90);

}

/*主程序*/

main()

{

intdriver=VGA,mode=VGAHI;

initgraph(&driver,&mode,"C:

\\TC");

cleardevice();

hua(450,90);

;setcolor(10);

rectangle(0,0,639,479);

getch();

closegraph();

start();

getch();

bgroud();

dstar();

dtree();

boy();

girl();

dmoon();

say();

dtext();

getch();

}

 

六、程序设计说明

1、设计优点:

实现了根据给定的坐标及函数完成了玫瑰花及其枝、叶的绘图。

并根据指定的颜色填色,运用了函数调用及for循环知识,达到了巩固和提高C语言运用能力的目的。

图形比较优美,富有动感,且程序简单。

多个函数的调用使

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1