#include #include #include #include void show(int i,float h, float v); void erease(int i, float h, float v); void planeshow(int i,int k); void ereasep(int i, int k); char read_key(); void main(void) { int driver = DETECT,mode; int i,j=0,k,f=0; char x; int a[100]; for (i=0; i<=99; i++) a[i]=0; initgraph(&driver,&mode,"a:\\bgi"); setcolor(WHITE); line(1,400,400,400); for ( i = 0; i < 80; i++ ) { setcolor(BLUE); planeshow(5*i, 5); show(i, 5.0, 9.0); x=read_key(); if (x =='u') f=f-8; if (x =='i') f=f+8; if(x == 'm') {j=j+1; a[j]=i;} setcolor(YELLOW); planeshow(5*(i-8), f); for (k=0; k<=j; k++) if (a[k] != 0) show(i-a[k], 5.0+0.3*k, 10.0+0.1*j); delay (300); ereasep(5*i, 5); ereasep(5*(i-8), f); erease(i, 5.0, 9.0); erease(i-10, 10.0, 8.0); for(k=0; k<=j; k++) if (a[k] != 0) erease(i-a[k], 5.0+0.3*k, 10.0+0.1*j); } closegraph(); } void show(int i, float h, float v) { int x, y; x=h*i; y=v*i-0.15*i*i; setcolor(RED); circle(400-x,400-y,2); } void erease(int i, float h, float v) { int x, y; x=h*i; y=v*i-0.15*i*i; setcolor(BLACK); circle(400-x,400-y,2); } void planeshow(int i,int k) { int j; circle(i+5, 202+k, 2); circle(i+3, 204+k, 2); for (j=0; j<=8; j++) circle(i+j, 200+k, 2); circle(i+5, 198+k, 2); circle(i+3, 196+k, 2); } void ereasep(int i, int k) { int j; setcolor(BLACK); circle(i+5, 202+k, 2); circle(i+3, 204+k, 2); for (j=0; j<=8; j++) circle(i+j, 200+k, 2); circle(i+5, 198+k, 2); circle(i+3, 196+k, 2); } char read_key() { int y=1; char x; _AH=0x01; geninterrupt(0x16); y=_FLAGS&0x40; if(y == 0) { _AH=0x00; geninterrupt(0x16); x=_AL; return x; } return '?'; }