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

📄 display.c

📁 《C程序员成长攻略》-黎陡-源代码-4282 中国水利水电出版社 程序员成长之路丛书
💻 C
字号:
/*=======================Display.c========================*/
/*=====================动画演示文件======================*/

/*------------初始化图形界面--------------------------*/
#include"head.h"
void InitGraph()	
{ 
	int gd=DETECT,gm;
	initgraph(&gd,&gm,"c:\tc\tc");
}

/*--------------画炮台--------------------------------*/
void Emplacement()
{
	int x1,y1;
	emp.x=rect.left+rect.width/2,emp.y=rect.bottom-31;  /*设置炮台中心位置*/
	emp.width=60,emp.lenth=40;  /*设置炮台大小*/
	emp.color=YELLOW;  /*炮台边框颜色*/
	setfillstyle(1,0);
	bar(emp.x-emp.width,emp.y-emp.lenth,emp.x+emp.width,emp.y+emp.lenth);
	/*先清除这片区域的背景*/
	setcolor(emp.color);
	rectangle(emp.x-emp.width,emp.y-emp.lenth,emp.x+emp.width,emp.y+emp.lenth);
	rectangle(emp.x-emp.width+10,
		emp.y-emp.lenth+10,
		emp.x+emp.width-10,
		emp.y+emp.lenth-10);
	setfillstyle(1,LIGHTGRAY);
	floodfill(emp.x-emp.width+1,emp.y-emp.lenth+1,emp.color);
	/*填充两个矩形框之间的部分*/
}

/*--------------将整型转化为字符型--------------------*/
void ShowInt(int data,int x,int y)
{ 
	char *s;
	sprintf(s,"%d",data);
	outtextxy(x,y,s);
}

/*--------------画坦克--------------------------------*/
void DrawTank(struct Target T,int Tcolor,int GunColor)
{ 
	int i,j;
	int x=T.x,y=T.y,r=T.r,d,t;
	d=r/4;t=d*0.6;
	setcolor(Tcolor);
	/*------------------*/
	line(x-r,y,x+r-t,y);
	line(x-r,y,x-r+d,y+2*d);
	line(x-r+d,y+2*d,x+3*d,y+2*d);
	line(x+3*d,y+2*d,x+r-t,y);
	/*----------------------*/
	line(x-r,y,x-r+t,y-t);
	line(x-r+t,y-t,x-2*d,y-t);
	line(x-2*d,y-t,x-2*d+t,y-d-t);
	line(x-2*d+t,y-d-t,x-3*d,y-d-t);
	line(x-3*d,y-d-t,x-3*d+t,y-2*d);
	line(x-3*d+t,y-2*d,x+r-t,y-2*d);
	line(x+r-t,y-2*d,x+r-t,y);
	/*---------------------------*/
	line(x-3*d,y-d-t,x-2*d,y-t);
	/*------------------------*/
	line(x-r+d-t,y+2*(d-t),x+3*d+r*0.04,y+2*(d-t));
	for(i=0;i<2*(r/d-1);i++)
		line(x-3*d+i*d,y+2*(d-t),x-3*d+i*d,y+2*d);
	/*---------------------------------*/
	setfillstyle(1,Tcolor);
	bar(x-d*1.2,y-d*0.6,x+d*2,y-d*0.2);
	line(x-d*1.2,y-d*0.6,x-d*0.6,y-d*1.8);
	line(x-d*0.6,y-d*1.8,x+d*2.4,y-d*1.8);
	line(x+d*2.4,y-d*1.8,x+d*2,y-d*0.6);
	line(x+d*2.4,y-d*1.8,x+d*2.4,y-d*1.4);
	line(x+d*2,y-d*0.2,x+d*2.4,y-d*1.4);
	sector(x+d*0.6,y-d,0,180,d*1.2,d*1.4);
	for(i=0;i<d*0.3;i++)
		line(x+d*0.2,y-d*1.8+i,x-d*2.5,y-d*1.8+i);
	setfillstyle(1,GunColor);  /*用颜色GunColor画炮头*/
	bar(x-d*3,y-d*1.9,x-d*2.3,y-d*1.3);
	setcolor(Tcolor);
	ShowInt(T.ID,x,y-3*d-t); /*显示该坦克的编号*/
}

/*--------------演示背景框的绘制------------------*/
void DisplayBG()
{
	int i;
	clearviewport();
	/*--------画演示矩形框----------*/
	setbkcolor(0);
	setcolor(LIGHTGRAY);
	rect.width=600;
	rect.height=450;
	rect.d=70;
	rect.left=30;
	rect.top=20;
	rect.right=rect.left+rect.width;
	rect.bottom=rect.top+rect.height;
	rectangle(rect.left,rect.top,rect.right,rect.bottom);
	rectangle(rect.left-10,rect.top-10,rect.right+10,rect.bottom+10);
	setfillstyle(1,LIGHTGRAY);
	floodfill(rect.left-1,rect.top-2,LIGHTGRAY);
	/*--------画炮台----------------*/  
	Emplacement();
}

/*--------------------初始化目标并显示-------------------*/
void InitTarget()
{
	int i,t;
	randomize();
	for(i=0;i<n;i++)  /*给n辆坦克各成员变量预先赋初值*/
	{
		Tank[i].color=color[random(3)];
		/*从预先定义的三种颜色中随机产生一种赋给该坦克*/
		Tank[i].r=20;   /*坦克半径均设为20(当然也可设为不同的值)*/
		Tank[i].x=rect.left+Tank[i].r+random(rect.width-2*Tank[i].r);
		/*坦克初始x坐标为在矩形框范围内一随机的坐标*/
		Tank[i].y=rect.top+Tank[i].r+random(rect.height-2*emp.lenth-2*Tank[i].r);
		/*坦克y坐标范围为矩形框内炮台之上的任意值*/
		Tank[i].ID=i+1;   /*坦克标识符ID值为从1号依次递增*/
		DrawTank(Tank[i],Tank[i].color,RED);   /*显示该坦克*/
	}
}

/*----------------动画演示函数--------------------------*/
void Display()
{ 
	int i;  
	DisplayBG();
	InitTarget();
}

/*---------------主函数-------------------------------*/
main()
{
	InitGraph();
	Display();
	getch();
}

⌨️ 快捷键说明

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