当我单击一个按钮时,我只想激活其周围的按钮.这怎么可能



我有一个 8 x 8 的线性按钮布局。我正在制作一个类似于 boggle 的小游戏,当我单击一个按钮时,我希望能够禁用除周围按钮之外的所有按钮。这也涉及边缘的按钮。我基本上需要一些帮助来启动这个游戏的逻辑。任何帮助不胜感激。到目前为止,我已经考虑了程序的结构以及 8 x 8 图形如何可能激活其邻居,也许如果我可以访问每个按钮的单元格,我可以进一步进步?谢谢。

扩展按钮,并根据其邻居是谁为每个按钮提供按钮侦听器。每个按钮都有一个按钮侦听器,根据您将其绑定在一起的方式,绑定到其每个邻居。如果您不想使用对角线邻居,则按钮最多有 5 个按钮侦听器(如果按钮正在侦听它自己的按钮)。

这应该可以使用简单的 Map 来完成:

Map<Button, List<Button>> surroundingButtons = new HashMap<Button, List<Button>>();

然后,对于每个按钮,此地图填充了其周围按钮的列表。不幸的是,我不知道如何在这个时候轻松做到这一点。我正在考虑将所有按钮添加到一个列表中,并使用当前按钮的索引 +/- 8 模数来选择它们......手动添加它们可能同样简单。

地图准备就绪后,禁用周围的按钮非常简单。

Button clickedButton; // not showing the onClickListener
for (Button sButton: surroundingButtons.get(clickedButton)) {
    sButton.setEnabled(false);
}

编辑:

读错了问题,但是; 禁用除周围按钮之外的所有按钮这个想法仍然适用,只需将您希望禁用的所有按钮添加到与地图中的按钮关联的列表中即可。

最新更新