我正在用c ++制作一个空气曲棍球比赛(这是我在c ++中的第一个程序)。我对冰球的速度有问题(它正在减速,但从未停止)。我怎样才能使它工作?这是控制冰球和桨叶速度的代码(我只有一个桨)。
(paddle1包含paddle1的坐标,paddle1helper是前一个坐标)
paddle1speed = Point(paddle1.x-paddle1helper.x,paddle1.y-paddle1helper.y);
if(puck.x > paddle1.x-40 && puck.x < paddle1.x+40 && puck.y < paddle1.y+40 && puck.y > paddle1.y-40) {
if(paddle1speed.x <= 1 && paddle1speed.y <= 1)
puckspeed*=-1;
else puckspeed=paddle1speed;
}
puckspeed.x/=1,9;
puckspeed.y/=1,9;
puck+=puckspeed;
if((puck.y > winsize.y-15 || puck.y < 15))
puckspeed.y *=-1;
if((puck.x > winsize.x-15 || puck.x < 15))
puckspeed.x *=-1;
paddle1helper = paddle1;
我知道这不是最好的解决方案。你能给我建议吗?
答案 0 :(得分:1)
您使用不存在的Continental C ++语言进行编程,其中浮点常量具有(例如)1,9
形式。在Anglo-Saxon C ++中,表达式1,9
是一个逗号运算符表达式,它计算结果为第二个参数:在本例中为9
。试试这个:
puckspeed.x/=1.9;
puckspeed.y/=1.9;
答案 1 :(得分:1)
你遇到的一个问题是:
puckspeed.x/=1,9;
您正在使用comma operator,其中包含操作数puckspeed.x/=1
和9
,因为表达式的解析如下:
(puckspeed.x/=1) ,(9);
逗号运算符计算第一个操作数,抛弃结果,计算第二个操作数,并返回计算结果。在您的情况下,表达式的净效果是
puckspeed.x/=1;
你很可能想要除1.9
,这可以这样做:
puckspeed.x/=1.9;
^ HERE
如果您使用-Wall
标志进行编译,GCC会给您一个有用的警告:
警告:逗号运算符的右操作数无效[-Wunused-value]