我正在尝试创建一个蛇游戏,其中我有 400x400 的 Pane ,并且蛇在 X 和 Y 轴上移动 20。通过这样做,我创建了一个 X 轴和 Y 轴步长为 20 的网格。
我想在 Pane 中随机生成一个水果,但我希望宽度和高度在网格中,因此它应该以 20 (0, 20, 40, 60 , 80, ... , 400) 的步长生成。
我可以使用 Math.random()*400 来获取范围,但我无法给它单位步长。
我发现这个问题正是我所问的,但解决方案是基于 lua 的 math.random(): math.random function with step option?
这是我如何翻译蛇的位置:
if (input.equals(KeyCode.W.toString()) || input.equals(KeyCode.UP.toString()))
if (snakes.get(0).getY() == 0)
movement.stop();
else
snakes.get(0).setY(snakes.get(0).getY() - 20);
*Snakes 是一个矩形数组列表,它在吃食物时会扩展,我只想让头部吃食物 *食物是一个在随机位置生成的圆圈
这是我检查他们是否联系的方法:
if (food.getCenterX() == snakes.get(0).getX() && food.getCenterY() == snakes.get(0).getY())
score++;
setScore();
我将蛇移到食物上,但 x 和 y 位置永远不会匹配,除非我自己在网格处生成食物(例如 [20,40] 或 [60, 200])。
是否有其他替代方案或随机单位步骤或我在 stackoverflow 上找不到的其他问题可以帮助我?
最佳答案
如果您需要整数值,可以使用Random.nextInt(intbound)
。这将在 20x20 矩阵内生成坐标。
Random r = new Random();
int x = r.nextInt(20)*20; // values from 0 to 19 inclusively
int y = r.nextInt(20)*20;
关于java - 如何以单位步长获取 Math.random(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57777780/