此程序运用双缓存技术,故不闪烁,但没有运用多线程,所以两个图形不能同时运动。
// shijian.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <graphics.h>
#include <conio.h>
#include<time.h>
#include<stdlib.h>
void main()
{
initgraph(600, 600);
int x1=50;手动圆
int x2=100;
int x3=100;
int x4=100;
int y1=100;
int y2=50;
int y3=50;
int y4=50;
int z=400;
int s=400;
int a[]={x1,x2,x3,x4,y1,y2,y3,y4};
setlinestyle(PS_SOLID,NULL,10);
setcolor(BLACK);
setfillstyle(RED);
fillpoly(4,a);
setcolor(BLACK);
setfillstyle(WHITE);
fillcircle(z,s,60);;
char t=0;
while(t!=27)
{
t=getch();
setcolor(BLACK);
setfillstyle(BLACK);
fillpoly(4,a);
setcolor(BLACK);
setfillstyle(BLACK);
fillcircle(z,s,60);
switch(t)
{
case'a':x1-=10;x3-=10;y1-=10;y3-=10;break;
case'd':x1+=10;x3+=10;y1+=10;y3+=10;break;
case'w':y2-=10;y4-=10;x2-=10;x4-=10;break;
case's':y2+=10;y4+=10;x2+=10;x4+=10;break;
case'j':z-=10;break;
case'l':z+=10;break;
case'i':s-=10;break;
case'k':s+=10;break;
}
int a[]={x1,x2,x3,x4,y1,y2,y3,y4};
setcolor(BLACK);
setfillstyle(RED);
fillpoly(4,a);
setcolor(BLACK);
setfillstyle(WHITE);
fillcircle(z,s,60);
Sleep(10);
Sleep(5);
}
closegraph();
}