c语言小球反弹随机切入角度,求助:教程作业,多个小球任意角度反弹。

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

小球少了还可以,超过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;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值