如何在空气曲棍球比赛中让冰球的速度变慢?

时间:2013-06-09 07:33:34

标签: c++

我正在用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;

我知道这不是最好的解决方案。你能给我建议吗?

2 个答案:

答案 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/=19,因为表达式的解析如下:

(puckspeed.x/=1) ,(9);

逗号运算符计算第一个操作数,抛弃结果,计算第二个操作数,并返回计算结果。在您的情况下,表达式的净效果是

puckspeed.x/=1;

你很可能想要除1.9,这可以这样做:

puckspeed.x/=1.9;
              ^ HERE
如果您使用-Wall标志进行编译,GCC会给您一个有用的警告:

  

警告:逗号运算符的右操作数无效[-Wunused-value]