📄 display.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 + -