我正在开发Java记忆游戏作为我的作业。我想在成对的盒子数量之间产生随机数1。
public void GenerateBoxesGrid(JPanel jp){
jp.setLayout(new GridLayout(2,4));
for (int i = 0; i < numberofboxes; i++) {
int num = generator.nextInt(5);
button[i] = new JToggleButton();
button[i].setText(Integer.toString(num));
button[i].setSize(1,1);
jp.add(button[i]);
button[i].setBackground(defaultColor);
button[i].setVisible(true);
生成器对象正在生成随机数但没有成对的数字。例如,当用户想要6个框时,它在屏幕上应该是1,1,2,2,3,3。谢谢您的回答。
答案 0 :(得分:1)
不,您不希望“成对的随机数”。
在1,1,2,2,3,3中只有3个“随机”数字:1、2和3。
换句话说:最简单的方法是生成三个随机数,并将每个数字使用两次。无需“配对”任何东西。只需创建 n 个随机数字,并为每个数字简单地创建两个按钮。当然,要使创建按钮更容易,可以执行以下操作:
我认为上述方法是生成这样的“对”表的“最简单”方法,这些表在表中随机放置。 (所有配对都在同一行中的记忆游戏并不是很有趣,你知道)
并提示:到目前为止您忘记的部分:您应该确保这些 n 随机数不同。或更准确地说:您应该考虑是否要允许1,1,2,2,1,1...。
最后:如果您想做一个“真实的”记忆难题,那么事情就会变成这样:
答案 1 :(得分:0)
public List<Integer> generateNumbers(int count) {
List<Integer> numbers = IntStream.range(1, count + 1 )
.boxed()
.collect(Collectors.toList());
numbers.addAll(numbers);
Collections.shuffle(numbers);
return numbers;
}
1)生成数字范围
2)将所有生成的数字加倍
3)以随机方式随机播放
4)使用数组中的数字迭代并绘制单元格