C\C++如和让一个东西作撞墙运动

来源:百度知道 编辑:UC知道 时间:2024/07/02 01:30:25
也就是和台球上的球一样,撞到桌子的边沿就会沿着一定的轨迹跑动
(和Windows系统中的屏幕保护差不多 一个图片上下左右跑动)
这个自然知道啊,就是如何判断球碰到边沿,并且如何来改变方向。我写了一步分开始运行的好好的,后来就出问题了。。

class V
{
public:
int x;
int y;
};

class OBJ
{
public:
V speed;
V pos;
};

Rect rect;

OBJ obj;

init(){

//设置边界
rect.left = LEFTBORDER + 10;
rect.top = UPBORDER - 10;
rect.width = RIGHTBORDER - 10;
rect.height = DOWNBORDER + 10;

//初始化速度
obj.speed.x = 3;
obj.speed.y = 2;

//出事话位置
obj.pos.x = 0;
obj.pos.y = 0;
}

//这个方法是你要关注的,反复执行本函数就达到了碰撞效果
void act(){

//清除屏幕
sc.act();

//修改位置和速度
if(obj.pos.x > rect.width )
{
obj.pos.x = rect.width * 2 - obj.pos.x;
obj.speed.x *= -1;
}else if( obj.pos.x < rect.left ){
obj.pos.x = rect.left + rect.left - obj.pos.x ;
obj.speed.x *= -1;
}
if(obj.pos.y > rect.top ){
obj.pos.y = rect.top *