这是使用图形组件创建匹配游戏的一部分。我需要编写一个名为randomOrder的类方法。我应该可以随机选择要使用的图片,我需要将它们随机放在电路板上(现在电路板是4x4)。
我想要一个随机移动数组中元素的方法。为此,我写了
public class Tools {
public static void randomOrder(Object[] f){
Object[] a = new Object[8];
}
}
我从提示中得到的唯一内容如下:
" 在方法中使用临时数组,并从原始数组中一次取一个元素并将其放在临时数组中。如果采用数组位置,则需要随机化新位置。放置所有元素后,您可以将临时数组复制到原始数组。"
我不明白如何使用提示。我觉得这太复杂了,我甚至无法提出一个恰当的问题。
对不起,如果问题不好,我不知道怎么做得更好。欢迎任何建议。
答案 0 :(得分:2)
让我试试:
在方法
中使用临时数组
你已经这样做了,虽然数组a
应该与f
的长度相同
从原始数组中一次取一个元素并将其放在临时数组
中
您迭代a
并为每个索引执行以下操作:
创建一个介于0和数组大小之间的随机整数,例如:对于4x4网格,您的数组的长度为16,因此索引将介于0到15之间(包括两者)。
从f
获取该索引处的元素,并将其放在a
中的当前位置。然后将f
中的索引设置为null
。
示例:
//iterate
for( int i = 0; i < a.length; i++ ) {
int random = ...; //create the random number here
Object o = f[random];
while( o == null ) {
//see below
}
a[i] = o;
}
如果采用数组位置,则需要随机化新位置。
如果f
中的元素已经为null,则创建一个新的随机数(即文本提示的内容)或递增该索引,直到您到达结尾或找到非null元素(从性能的角度来看可能更好,当你到达终点时,回到f
的索引0)。
放置所有元素后,您可以将临时数组复制到原始数组。
完成填充a
后,您再次迭代并根据f
中的索引在a
中设置元素,即
for( int i = 0; i < a.length; i++ ) {
f[i] = a[i];
}