首页 > 解决方案 > 如何在 Java 中从数组中添加或删除随机数?

问题描述

我正在制作的一个小型 XO 游戏的一部分是,每次我按下一个按钮,它都会变成标志 X,然后计算机会随机选择一个按钮来放置标志 O。

令我困惑的部分是计算机将选择的随机按钮。我有一个JButton有 9 个按钮的数组,但是当计算机选择时,将有机会选择一个已经有符号 X 的按钮,这会破坏游戏。

没有重复不是问题并且很容易解决,但是我怎样才能给带有符号 X 的按钮在生成随机数时不可用的状态?到目前为止,这是我的代码:

在 actionperformed 方法中:

if (e.getSource().equals(button1)) {

   button1.setIcon(X);
   xoro = true;
   button1.setEnabled(false);
   button1.setForeground(Color.BLACK);
}    

执行随机数并选择按钮的方法:

void computer_play(JButton[] buttons, ImageIcon O, ImageIcon X)
{
    Random rand = new Random();
    int randomnumber = rand.nextInt(8);

    buttons[randomnumber].setIcon(O);
    buttons[randomnumber].setEnabled(false);


}    

标签: java

解决方案


我建议保留一个单独的可用按钮数组,方法是过滤主数组或使单独的数组保持最新。然后生成一个介于 0 和这个较小数组长度之间的随机整数。下面完全未经测试,未编译的代码。

void computer_play(JButton[] buttons, ImageIcon O, ImageIcon X)
{
    JButton[] availableButtons = buttons.stream().filter((j) -> j.getIcon() == null).toArray(size -> new JButton[size]);
    Random rand = new Random();
    int randomnumber = rand.nextInt(availableButtons.length);

    availableButtons[randomnumber].setIcon(O);
    availableButtons[randomnumber].setEnabled(false);
} 

推荐阅读