📄 第3题_运动图像程序.txt
字号:
#include"stdio.h"
#include"graphics.h"
#include"dos.h"
void main()
{
int gd=DETECT,i=0,j,k=0;
initgraph(&gd,&gd,"\\tc\\bgi");
while(!kbhit())/*不按键返回0 */
{
for( j=0;j<2;j++)
{
for(i=0;i<500;i+=5)
{
setcolor(RED);
line(118+i,65+j*300,160+i,65+j*300);
line(120+i,70+j*300,160+i,70+j*300);
line(60+i,100+j*300,220+i,100+j*300);
line(200+i,100+j*300,160+i,70+j*300);
line(205+i,100+j*300,160+i,65+j*300);
line(80+i,100+j*300,120+i,70+j*300);
line(75+i,100+j*300,118+i,65+j*300);
setfillstyle(SOLID_FILL,RED);
floodfill(77+i,99+j*300,RED);
line(135+i,70+j*300,135+i,100+j*300);
line(145+i,70+j*300,145+i,100+j*300);
setfillstyle(SOLID_FILL,RED);
floodfill(137+i,75+j*300,RED);
setfillstyle(SOLID_FILL,WHITE);
floodfill(130+i,75+j*300,RED);
setfillstyle(SOLID_FILL,WHITE);
floodfill(150+i,75+j*300,RED);
/*rectangle(left,top,right,bottom); */
/* rectangle(80+i,90+j*300,100+i,110+j*300);
*/
line(150+i,90+j*300,160+i,80+j*300);
line(154+i,90+j*300,164+i,80+j*300);
line(158+i,90+j*300,168+i,80+j*300);
line(110+i,90+j*300,120+i,80+j*300);
line(114+i,90+j*300,124+i,80+j*300);
line(118+i,90+j*300,128+i,80+j*300);
line(20+i,140+j*300,260+i,140+j*300);
/* arc(midx, midy, stangle, endangle, radius); */
arc(200+i,140+j*300,0,177,25);
arc(80+i,140+j*300,0,177,25);
arc(60+i,140+j*300,90,178,40);
arc(220+i,140+j*300,0,90,40);
setfillstyle(SOLID_FILL,RED);
floodfill(100+i,110+j*300,RED);
/*边框黑色*/
setcolor(0);
line(139+i,70+j*300,139+i,220+j*300);
line(140+i,70+j*300,140+i,220+j*300);
line(141+i,70+j*300,141+i,220+j*300);
setcolor(RED);
/*车灯*/
setcolor(YELLOW);
circle(250+i,130+j*300,5);
line(253+i,125+j*300,312+i,113+j*300);
line(253+i,135+j*300,310+i,143+j*300);
arc(315+i,128+j*300,250,100,15);
/*EMPTY_FILL,SOLID_FILL,LINE_FILL,LTSLASH_FILL,SLASH_FILL,
BKSLASH_FILL,LTBKSLASH_FILL,HATCH_FILL,XHATCH_FILL,
INTERLEAVE_FILL,WIDE_DOT_FILL,CLOSE_DOT_FILL,*/
setfillstyle(LTBKSLASH_FILL,YELLOW);
floodfill(280+i,130+j*300,YELLOW);
/*排气管 */
rectangle(15+i,137+j*300,20+i,140+j*300);
setcolor(BROWN);
circle(15+i-k,135+j*300,k);
setfillstyle(INTERLEAVE_FILL,BROWN);
floodfill(15+i-k,135+j*300,BROWN);
if(k>20)
k=2;
else
k+=5;
setfillstyle(SOLID_FILL,15);
floodfill(190+i,120+j*300,RED);
floodfill(80+i,120+j*300,RED);
/*轮胎*/
setcolor(DARKGRAY);
circle(200+i,140+j*300,18);
circle(80+i,140+j*300,18);
setfillstyle(SOLID_FILL,DARKGRAY);
floodfill(190+i,140+j*300,DARKGRAY);
floodfill(80+i,140+j*300,DARKGRAY);
setcolor(RED);
circle(200+i,140+j*300,10);
circle(80+i,140+j*300,10);
setfillstyle(SOLID_FILL,RED);
floodfill(205+i,140+j*300,RED);
floodfill(85+i,140+j*300,RED);
clearviewport();/*清除窗口信息*/
if(kbhit()) break;
}
}
}
closegraph();
}
/*******************************************/
模拟小球碰撞
#include<graphics.h>
#include<stdlib.h>
main()
{
int i,gdriver,gmode, size;
void *buf;
gdriver=DETECT;
initgraph(&gdriver,&gmode,"");
setbkcolor(BLUE);
cleardevice(); /*清除屏幕*/
setcolor(LIGHTRED);
setlinestyle(0,0,1);
setfillstyle(1,10);
circle(100,200,30);
floodfill(100,200,12);
size=imagesize(69,169,131,231);/*返回存储屏幕所需的字节数*/
buf=malloc(size); /*动态分配内存空间*/
getimage(69,169,131,231,buf); /*保存指定位置的小球图*/
putimage(500,169,buf,COPY_PUT);/*在另一位置上复制小球*/
while(!kbhit())
{
for(i=0;i<185;i++)
{ delay(400);/*延迟时间,使运动变慢*/
putimage(70+i,170,buf,COPY_PUT); /*左边球右移 */
putimage(500-i,170,buf,COPY_PUT);/*右边球左移*/
}
for(i=0;i<185;i++)
{
delay(400);
putimage(255-i,170,buf,COPY_PUT);
putimage(315+i,170,buf,COPY_PUT);
}
}
getch();
closegraph();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -