java - 如何在 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);
}
解决方案
我建议保留一个单独的可用按钮数组,方法是过滤主数组或使单独的数组保持最新。然后生成一个介于 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);
}
推荐阅读
- python - 使用 bs4 beautifulSoup 查找特定元素
- html - 使用 css 将 3 个 div 粘合在一起
- php - 使用 JSON_ARRAYAGG 或 JSON_OBJECT 时 PHP5.4 和 MySQL 5.7.32 “中止连接”
- php - PHP 表单到电子邮件标题在标题中结合了 3 个变量
- r - 使用通配符提取数据框的一部分
- wordpress - ACF get_field break < > 或 <>
- python - 只有当两个复合列表的所有项目都具有不同的 id 时,Python 中是否有一条语句将解析为 True
- python - Python3.9 malloc:无法分配区域错误3
- python - 如何将从缩放数据中学到的决策边界转移到原始数据(缩减数据)?
- javascript - 模态对话框所有按钮退出并且 url 行被最后一个 JASON 响应损坏