所以,我有这个问题,我正在尝试让Button改变它的颜色,以及当我点击它时它所附着的其他按钮的颜色,它需要保持这样,直到一些再次点击它,或者直到点击一个按下它的按钮。图片使人们更容易理解。 UI
所以,例如。当您单击数字6时,数字2,6,7,5,10需要将其颜色更改为红色,并且当您再次单击它时,他们需要将其颜色更改为绿色。 所以,我这样做了:
Button[] btns = new Button[16]; //colocando 16 botões nele
btns[0] = (Button) findViewById(R.id.button1);
btns[1] = (Button) findViewById(R.id.button2);
btns[2] = (Button) findViewById(R.id.button3);
btns[3] = (Button) findViewById(R.id.button4);
btns[4] = (Button) findViewById(R.id.button5);
btns[5] = (Button) findViewById(R.id.button6);
btns[6] = (Button) findViewById(R.id.button7);
btns[7] = (Button) findViewById(R.id.button8);
btns[8] = (Button) findViewById(R.id.button9);
btns[9] = (Button) findViewById(R.id.button10);
btns[10] = (Button) findViewById(R.id.button11);
btns[11] = (Button) findViewById(R.id.button12);
btns[12] = (Button) findViewById(R.id.button13);
btns[13] = (Button) findViewById(R.id.button14);
btns[14] = (Button) findViewById(R.id.button15);
btns[15] = (Button) findViewById(R.id.button16);
现在我有点迷失了。我已经在纸上构建了游戏逻辑,问题是,我不知道如何改变多个按钮的颜色。
答案 0 :(得分:1)
既然你说你已经有了逻辑,我猜你只需要显示如何更改相应按钮的背景颜色。在这种情况下,我有一个方法,它采用一组Button
个对象和颜色来设置它们:
private void changeColorOfTheseButtons(Button[] buttons, int color){
for(int x=0; x < buttons.length; x++){
//change its color
buttons[x].setBackgroundColor(color);
}
}
然后,这就是你用一种颜色调用上面方法的方法(假设你已经有了要改变颜色的按钮列表):
...
changeColorOfTheseButtons(arrayOfButtonsToChange, Color.RED);
使用颜色RED作为上述示例 - 但您可以使用Color.*
我希望这会给你一些想法。
答案 1 :(得分:0)
我会使用2D数组而不是1d数组来执行此操作。然后逻辑很简单,只需得到点i周围的按钮,j将是(i-1,j-1),(i-1,j),(i-1,j + 1)等。你应该很容易能够做到这一点并为角落案例(角落/边缘上的按钮)添加适当的逻辑。
答案 2 :(得分:0)
如果我是你,我只是设置逻辑。如果您从0到15开始,那么您的图片将更容易设置此结构。
如果您显示的是4x4网格,那么点击哪一个网格将具有:
除非它们不大于0或小于16(0 此算法可以通过用x值替换4来扩展到任何x x x方格。 如果他们不满足这些要求,如果n3或n4在网格上没有改变的话。 因此有一个函数接受一个表示单击框(x)和btn网格本身的编号的int,然后在单击的按钮上应用此逻辑x,n1,n2,n3和n4。 如果满足上述质量,则再次检查颜色并根据当前颜色将其更改为另一种颜色。