【问题标题】:When i click a button i would like to activate only its surrounding buttons. How is this possible?当我单击一个按钮时,我只想激活它周围的按钮。这怎么可能?
【发布时间】:2013-09-29 01:22:58
【问题描述】:

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

【问题讨论】:

  • 我想如果我尝试这个,我会有一个二维的按钮数组,所有这些按钮都会回调到同一个控制器,该控制器在游戏状态发生变化时处理启用/禁用按钮的逻辑。我不熟悉 boggle,但这可能是我尝试接近您正在做的事情的方式。
  • ALSO:试试这个链接,它是 boggle 的 java 实现:gtoal.com/wordgames/duke_boggle/joggle

标签: java android button logic android-button


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

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

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

    编辑:

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

    【讨论】:

      猜你喜欢
      • 2021-07-15
      • 1970-01-01
      • 1970-01-01
      • 2019-02-08
      • 1970-01-01
      • 2021-08-13
      • 2017-08-20
      • 2018-04-28
      • 2022-10-24
      相关资源
      最近更新 更多