Android 检查按钮是否按下,然后再次检查
我对android开发还比较陌生,不知道如何在按下按钮时进行双重检查。 我在安卓工作室工作,试图创建一个简单的小游戏,并拥有以下内容:两个按钮(button1和button2)在onClick方法中声明和实例化。 当按下按钮1时,计数器将递增,并在按钮上显示值为0、10、50、100的数组中的特定值。 这部分很有魅力。我不能做的是创建一个有效的“平分规则”,它应该是这样的:Android 检查按钮是否按下,然后再次检查,android,if-statement,button,switch-statement,Android,If Statement,Button,Switch Statement,我对android开发还比较陌生,不知道如何在按下按钮时进行双重检查。 我在安卓工作室工作,试图创建一个简单的小游戏,并拥有以下内容:两个按钮(button1和button2)在onClick方法中声明和实例化。 当按下按钮1时,计数器将递增,并在按钮上显示值为0、10、50、100的数组中的特定值。 这部分很有魅力。我不能做的是创建一个有效的“平分规则”,它应该是这样的: if (button1 value == 100 and button2 value == 100) or this ca
if (button1 value == 100 and button2 value == 100) or this can be done with the counter if (counter1 == 3 && counter2 == 3)
tiebreaker();
if (p1 = 100 || p2 == 100)
tiebreak = true;
if (p1 == 100 && tiebreaker){
p1 == OK;
tiebreaker = false;
} else //same thing for p2
这就是我需要做的:
public void tiebreaker(){
if (button1 is pressed){
button1.setText(String.valueOf("OK. One more!");
if (button1 is pressed (again){
resetCounters();
goForPlayer1(); //distinct method
} else if (button2 is pressed) {
//set both values back to 100
tiebreaker(); //calls itself in order to repeat until a button is pressed twice consecutivelly
} (else?)
if(button2 is presed){
//same code as above, just with the numbers 1 and 2 swapped
}
}
我尝试过以不同的方式实现这种打破僵局的方法,但没有最终成功。我尝试使用if(button1.isPressed())
作为条件,按下按钮时布尔值变为true,并将其作为条件,使用按钮中的值以及button.equals(“100”)或任何应该写入的值,但没有任何结果
此外,我还尝试将tiebreaker作为第二个onClick方法,并基于开关(View.getId())
进行检查,但这里的问题是该方法依赖于视图(tiebreaker(View v)
),我不确定如何从其他方法调用它
在我看来,主要的问题是,当涉及到按钮按下时,另一个if中的if或另一个switch/case中的switch/case不能使用(尽管我可能是错的),但我不知道还有其他方法可以做到这一点
我希望我没有错过任何东西,并设法把自己说清楚。
我很感激任何帮助我解决这条平局规则的意见。谢谢可能是这样的
whenButtonAIsPressed() {
do some stuff
possiblyRunTiebreakerMaterial()
}
whenButtonBIsPressed() {
do some stuff
possiblyRunTiebreakerMaterial()
}
请注意,您总是运行possiblyruntebreakermaterial()
,并且总是在完成所有其他处理后运行它
以下是您的possiblyRunteBreakerMaterial()
函数的性质
possiblyRunTiebreakerMaterial() {
// there are some conditions, which mean you DO want
// to run the tie breaker:
do some processing, such as
value of A = blah blah
value of B = blah blah
// now have a boolean, and figure it out
boolean shouldWeRunTheTieBreaker
processing
processing
shouldWeRunTheTieBreaker = blah
and now finally:
is shouldWeRunTheTieBreaker == true { tiebreaker() }
}
然后使用tiebreaker()
函数
你真正想要的是一个状态机,但现在不用担心
您在这里寻找的一般“编程技巧”是您必须执行以下操作:
始终进行处理
然后,只有之后
在所有情况下,检查是否需要运行平局断路器
如果需要,运行它
这就是模式。不幸的是,我没有投票权。
我设法解决了这个问题。我为tiebreaker创建了一个布尔值,而不是一个函数,它看起来像:
if (button1 value == 100 and button2 value == 100) or this can be done with the counter if (counter1 == 3 && counter2 == 3)
tiebreaker();
if (p1 = 100 || p2 == 100)
tiebreak = true;
if (p1 == 100 && tiebreaker){
p1 == OK;
tiebreaker = false;
} else //same thing for p2
谢谢你的回答。我遇到的问题不是检查是否应该调用tiebreaker,而是检查方法本身的内部。目前,我还不知道要在平局中写些什么,才能让它完成我上面描述的任务。