该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
小球少了还可以,超过3个,小球闪烁的很厉害,基本看不到小球移动轨迹。如何解决?
#include
#include
#include
#define N 10//小球个数
#define X_MAX 640//边界值
#define Y_MAX 480
#define R 20//圆的半径
void change(int *rx, int *ry, int *x, int *y);//改变坐标
void wcircle(int *x, int *y);//绘制小球
void main()
{
initgraph(640,480);
int x[N], y[N];
int rx[N], ry[N];
int i;
srand((unsigned)time(NULL));
for(i = 0;i < N;i++)//小球随机位置,随机角度
{
x[i] = rand()%320;
y[i] = rand()%240;
rx[i] = rand()%2 + 1;
ry[i] = rand()%2 + 1;
}
while(1)
{
for(i = 0;i < N;i++)
{
wcircle(&x[i], &y[i]);
change(&rx[i], &ry[i], &x[i], &y[i]);
}
}
getch();
closegraph();
}
void wcircle(int *x, int *y)
{
BeginBatchDraw();//批量绘图
setfillcolor(YELLOW);
fillcircle(*x, *y, R);
FlushBatchDraw();//结束批量绘图
Sleep(10);
cleardevice();
}
void change(int *rx, int *ry, int *x, int *y)
{
if((*x+20) > X_MAX || (*x-20) < 0)
{
*rx *= -1;
}
if((*y+20) > Y_MAX || (*y-20) < 0)
{
*ry *= -1;
}
*x += *rx;
*y += *ry;
}