-4

我正在用 C++ 制作一个空气曲棍球游戏(这是我用 C++ 编写的第一个程序)。我对冰球的速度有疑问(它正在减速,但从未停止)。我怎样才能让它工作?这是控制冰球和桨的速度的代码(我只有 1 个桨)。

(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;

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

4

2 回答 2

1

您正在使用不存在的 Continental C++ 语言进行编程,其中浮点常量具有 (例如) 形式1,9。在盎格鲁-撒克逊 C++ 中,表达式1,9是一个逗号运算符表达式,其计算结果为它的第二个参数:在这种情况下,9. 试试这个:

puckspeed.x/=1.9;
puckspeed.y/=1.9;
于 2013-06-09T08:07:48.653 回答
1

您遇到的一个问题是:

puckspeed.x/=1,9;

您正在使用逗号运算符,带有操作数puckspeed.x/=1and 9,因为表达式的解析方式如下:

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

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

puckspeed.x/=1;

您极有可能打算除以1.9,可以这样做:

puckspeed.x/=1.9;
              ^ HERE

GCC 会给你一个有用的警告,只要你用-Wall标志编译:

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

于 2013-06-09T08:24:21.643 回答