我如何在java中更改++运算符(加上加号)的增加

时间:2015-08-03 16:33:23

标签: java

我正在开发一款小游戏。在这个游戏中,物体正在向你倾斜,你必须躲闪。随着时间的推移,物体向你移动的速度越快,使游戏变得更加困难。

我的问题是:如果我在速度++中使用++运算符,则对象在太短的时间内过快。

假设我们有这个默认代码:

int speed = 1;
speed ++ 

所以我需要一些东西(可能是deltatimer?)来操纵++运算符并给它一个最大值。

3 个答案:

答案 0 :(得分:3)

假设您想要一个较慢的线性进展并且可以处理小数:

double increment = 0.2;  // or whatever value you like
double speed = 1;
// ...
speed += increment;

也许你想要一个较慢的增长曲线:

int speed_stepper = 2;
double speed = 1;
// ...
speed = 2 * Math.log(speed_stepper ++);

以下是这些增长曲线的外观(由Wolfram|Alpha提供):

growth curves

要设置最大值,只需在结尾添加一个比较:

if (speed > maximum) { speed = maximum; }

答案 1 :(得分:1)

  

我的问题是:如果我在++中使用++运算符那么   物体在太短的时间内走得太快。

然后++不是你想要增加的方式。有什么问题:

xPosition += DELTA_X;
yPosition += DELTA_Y;

另外,使用++不会促进变速(它总是假设速度= 1 ),而上述方法确实如此。

答案 2 :(得分:0)

也许你经常增加你的速度变量。如果希望变量在指定的时间段后递增,则可以使用Timer和TimerTask类。例如:

timer = new Timer(true);

TimerTask timerTask = new TimerTask() {
    @Override
    public void run() {
        speed++;
    }
};

timer.scheduleAtFixedRate(timerTask, 0, 10000); // runs timerTask every 10000ms (10 seconds)

此代码基本上每10秒将速度增加1 。因此,如果你在开始时速度= 1,你将在50秒后获得速度= 6。

我认为你也可以使用浮点值代替int来获得速度,并使用0.1 ex这样的小值来增加它。

float speed = 1.0f;
speed+=0.1f;