模数问题

时间:2013-11-13 06:07:57

标签: java modulus

在这里,我正在测试一个int值是一个整数还是一个十进制值,如果它有一个小数,它会慢慢地添加或减去该值以使其成为一个整数。第一部分和第三部分有效,但第二部分和第四部分没有。

if(ax % tileSize != 0) {
    ax -= (ax % tileSize) / 6; // works fine
}
if(ax % tileSize != 0) {
    ax += (ax % tileSize) / 6; // doesn't work
}
if(ay % tileSize != 0) {
    ay -= (ay % tileSize) / 6; // works fine
}
if(ay % tileSize != 0) {
    ay += (ay % tileSize) / 6; // doesn't work
}

每次工作的人数减少了48 / 6,而其他人则增加了48 / 6 {{1}},但似乎每次更改量都会增加。

1 个答案:

答案 0 :(得分:1)

鉴于此作者的评论:

  

这只是一个Java游戏,我正在测试的是玩家的x   坐标,(ax)和y坐标(ay)符合   瓷砖,因为这是一个基于瓷砖的游戏。如果他们不符合   瓷砖,然后坐标增加或减少,所以你被放置   与瓷砖一致。

这样做的方法就是这样:

double tileSize = 10;
double ax = 25;
double vectorX = Math.floor(ax/tileSize + 0.5) - ax/tileSize;

这将为您提供-1..1范围内的向量,您可以乘以速度或做任何想要决定运动的内容。例如:

ax = ax + Math.ceil(vectorX*speed);

与y轴相同。另外,请注意我的公式中有双打,因此如果需要,可以使用适当的演员表。