gpt4 book ai didi

c++ - 为什么这个 if 循环不起作用?(BGI 形状)

转载 作者:行者123 更新时间:2023-11-28 03:03:09 24 4
gpt4 key购买 nike

我正在尝试创建形状,使它们的边缘反弹,但我的 if 循环似乎不起作用,我不知道为什么。这条线移动形状:

line1.x  += line1.xvelocity;
line1.y += line1.yvelocity;
line1.x2 += line1.xvelocity;
line1.y2 += line1.yvelocity;

我想保持 640x480 的形状,所以我写了

if (line1.x >> 640) line1.xvelocity *= (-1);
if (line1.x << 0) line1.xvelocity *= (-1);
if (line1.y >> 480) line1.yvelocity *= (-1);
if (line1.y << 0) line1.yvelocity *= (-1);
if (line1.x2 >> 640) line1.xvelocity *= (-1);
if (line1.x2 << 0) line1.xvelocity *= (-1);
if (line1.y2 >> 480) line1.yvelocity *= (-1);
if (line1.y2 << 0) line1.yvelocity *= (-1);

我尝试使用 ||,或者只使用 x,yx2,y2 坐标。有什么帮助吗?谢谢。

class Line: public GenericShape
{
public:
int x2, y2;
Line();
Line(int x_in, int y_in, int color_in, int xvel, int yvel, int x2_in, int y2_in)
: GenericShape(x_in, y_in, color_in, xvel, yvel),
x2(x2_in),
y2(y2_in)
{}
void draw() const;
};

Line line1(50, 150, 4, 2, -3, 180, 60); // xvelocity=2 yvelocity =-3

最佳答案

条件在

if (line1.x >> 640)

始终为零,因为“>>”是按位右移运算,而不是比较。相当于line1.x除以2^640。

改成

if(line1.x >= 640)

在其他条件下,也将“<<”更改为“<”,将“>>”更改为“>=”。

关于c++ - 为什么这个 if 循环不起作用?(BGI 形状),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20272691/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com