在空中曲棍球比赛中,我怎样才能使冰球的速度慢下来?

How can I make the speed of the puck slow down in an air hockey game?

本文关键字:速度 慢下来 速度慢 曲棍球 在空中      更新时间:2023-10-16

我正在用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;
我知道这不是最好的解决方案。你能给我一些建议吗?

你有一个问题在这里:

puckspeed.x/=1,9;

您正在使用逗号操作符,操作数为puckspeed.x/=19,因为表达式是这样解析的:

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

逗号操作符对第一个操作数求值,丢弃结果,对第二个操作数求值,并返回结果。在您的示例中,表达式的实际效果是

puckspeed.x/=1;

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

puckspeed.x/=1.9;
              ^ HERE

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

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

您正在使用不存在的欧陆c++语言进行编程,其中浮点常量具有(例如)1,9的形式。在Anglo-Saxon c++中,表达式1,9是一个逗号操作符表达式,其求值为其第二个参数:在本例中为9。试试这个:

puckspeed.x/=1.9;
puckspeed.y/=1.9;