我有一个600x600的屏幕,我想基本划分它每10个方格,所以我可以做一个蛇游戏,所以我需要为这些部门产生食物。
我想到的代码:
x.nextInt(10)*x.nextInt(6)*x.nextInt(10)
这不起作用,即使它有效,也有多个值可以达到20,比如1 * 2 * 10,2 * 1 * 10 ......
所以我也想到了这个:
(int)(x.nextInt(600)/10)*10
但它不会使间隔为10 ......
我也想到了这个:
Integer.parseInt(Double.toString(x.nextInt(600)/10))*10
但它非常愚蠢而且不起作用(给出错误)
如果你不理解我想要的东西,这里有结果: 随机对(x和y): 10,60 420,170 550,480 80,600
这是我不想要的: 14,52 88,19 551,529 415,550
如何管理使用此间隔制作随机的逻辑?
答案 0 :(得分:5)
你可以尝试:
(int)(Math.random() * 60) * 10
基本上,这会在0到59之间找到一个随机int,然后将它乘以10,这样数字的间隙就为10 ...
另外,您可以利用整数除法并使用
(int)(Math.random() * 600) / 10 * 10
的工作原理相同。
答案 1 :(得分:2)
你可以通过生成一个0到60之间的整数来解决这个问题(或者我猜你真的想要0到59,因为一个平铺是10像素宽,应该在屏幕上),然后将整数乘以10。
答案 2 :(得分:2)
您应该使用Math.random()
int random = (int )(Math.random() * 60 +1) * 10;
描述: random()方法返回介于0.0和0.999之间的随机数。所以,你将它乘以60,所以上限变为0.0到59.999,当你加1时,它变为1.0到60.999,现在当你截断到int时,你得到1到60.然后乘以10得到一个10到10之间的10的倍数。
注意:如果你想从0到60删除1并使用
int random = (int )(Math.random() * 61) * 10;
答案 3 :(得分:0)
有一个GridSquare类,坐标从0到10(随机选择),然后使用toScreenArea函数将坐标乘以每平方的像素数,以在屏幕上找到适当的点以放置正方形。