C语言精细绘图及动画
2008-02-23 05:25:50来源:互联网 阅读 ()
时背景被繁星填充,此时必须按住任意键不放,否则飞机将不会发射。发射完成后,即飞机坐标小于0,将出现一句话:"successfully!!!,press ESC to quit",若中途按ESC退出,则飞机Y坐标不小于0,将出现"failue,..."这句话。
#include<graphics.h>
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<alloc.h>
#define ESC 0x1b/*ESC的ASCII码,十六进制*/
void InstallGraph(void);/*图像程式加载函数的说名语句*/
void DrawGun(void); /*画发射架函数的说明语句*/
void DrawPlan(void); /*画飞机函数的说明语句*/
void DrawStar(void); /*画星函数的说明语句*/
void *buf; /*全局变量,用于存储飞机的图像*/
int x0=300; /*以下是飞机的位置初始化参数*/
int y0=340;
int width1=5;
int width2=20;
int height=25;
int y1=8;
int y2=15;
int y3=23;
int y4=38;
/*主函数开始*/
main()
{
int size;
int i=0;
int key;
int station;
InstallGraph();
setbkcolor(BLACK);
cleardevice();/*图像驱动程式和屏幕初始化工作完成*/
setcolor(BLUE);/*配置字的颜色*/
settextstyle(TRIPLEX_FONT,0,4);/*配置字体*/
outtextxy(80,100,"Ready!...Any key to SET OFF !!!");
DrawGun(); /*画出发射架*/
getch(); /*if press key,clear the words and start*/
cleardevice();
DrawGun();
DrawPlan();
DrawStar();
setcolor(LIGHTRED);/*define result words color*/
do{ /*程式主循环开始,用于运动飞机,方法是用异或的方式在屏幕上连续画出飞机 的图像,每画一次,新图像和来的位置相差两个像素点。
这个值是可调的,值越大,飞机飞行的速度越快*/
putimage(x0-width2,y0-height-3*width1-i,buf,XOR_PUT);
i =2;
putimage(x0-width2,y0-height-3*width1-i,buf,XOR_PUT);
key=getch();
if(y0-height-3*width1-i==0)
outtextxy(60,100,"Successfully!!! Press ESC to quit");
if(key==ESC){
if(y0-height-3*width1-i>0){
cleardevice();
outtextxy(100,100,"Failue. What did you do?");
outtextxy(130,300,"Press any key to quit.");
getch();
}
}
}while(key!=ESC);
free(buf);
closegraph();
return 0;
}
/*****************Install the graphics library***********************/
void InstallGraph(void)
{
int grdriver=DETECT;
int grmode;
int errorcode;
char *errormsg;
registerbgidriver(EGAVGA_driver);
registerbgifont(triplex_font);
initgraph(&grdriver,&grmode,"");
errorcode=graphresult();
errormsg=grapherrormsg(errorcode);
if(errorcode!=grOk){
printf("Graphics error: %s\n",errormsg);
printf("Press any key to exit.\n");
getch();
exit(1);
}
}
/************************Draw the star ********************************/
void DrawStar(void)
{
int seed=2000;
int i,dotx,doty,height,width,color,maxcolor;
maxcolor=getmaxcolor();
width=getmaxx();
height=getmaxy();
srand(seed);
for(i=0;i<250;i ){
dotx=i random(width-1);
doty=i random(height-1);
color=random(maxcolor);
setcolor(color);
putpixel(dotx,doty,color);
circle(dotx 1,doty 1,1);
}
srand(seed);
}
/****************Draw the bottom gun********************/
void DrawGun(void)
{
int x0=300;
int y0=430;
int height=45;
int rx=20;
int ry=5;
int rightx,righty,leftx,lefty;
int centery1=30;
rightx=righty=leftx=lefty=12;
setcolor(LIGHTGREEN);
ellipse(x0,y0,180,360,rx,ry);
ellipse(x0,y0-height,0,360,rx,ry);
line(x0 rx,y0,x0 rx,y0-height);
line(x0-rx,y0,x0-rx,y0-height);
moveto(x0 rx,y0);
lineto(x0 rx rightx,y0 righty);
moveto(x0 rx rightx,y0 righty);
lineto(x0 rx rightx 10,y0 righty 10);
circle(x0 rx rightx 10,y0 righty 10,4);
moveto(x0,y0 ry);
lineto(x0,y0 centery1);
moveto(x0,y0 centery1);
lineto(x0,y0 centery1 10);
circle(x0,y0 centery1 10,4);
moveto(x0-rx,y0);
lineto(x0-rx-leftx,y0 lefty);
moveto(x0-rx-leftx,y0 lefty);
lineto(x0-rx-leftx-10,y0 lefty 10);
circle(x0-rx-leftx-10,y0 lefty 10,4);
line(x0-rx-leftx,y0 lefty,x0,y0 centery1);
line(x0,y0 centery1,x0 rx rightx,y0 righty);
}
/*****************Draw the plan fly to the sky***********************/
void DrawPlan(void)
{
int size;
setcolor(LIGHTRED);
setfillstyle(1,BLUE);
ellipse(x0,y0-height,0,180,width1,3*width1);
moveto(x0 width1,y0); /*moveto center right side*/
lineto(x0 width1,y0-height);
moveto(x0 width1,y0);
lineto(x0 width2,y0 y2);
moveto(x0-width1,y0); /*moveto center left side*/
lineto(x0-width1,y0-height);
moveto(x0-width1,y0);
lineto(x0-width2,y0 y2);
moveto(x0 width2,y0 y3);/*moveto right bottom side*/
lineto(x0 width2,y0 y1);
moveto(x0 width2,y0 y3);
lineto(x0 width1,y0 y2);
moveto(x0-width2,y0 y3);/*moveto left bottom side*/
lineto(x0-width2,y0 y1);
moveto(x0-width2,y0 y3);
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇: 用C语言实现艺术清屏
下一篇: C语言字符串查找
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash