我对Android开发很新,并且无法弄清楚如何在按下按钮时进行双重检查。 我在Android Studio工作,我正在尝试创建一个简单的小游戏并具有以下功能:在onClick方法中声明和实例化两个按钮(button1和button2)。 当按下按钮1时,计数器递增,并且具有值0,10,50,100的数组在按钮上显示特定值。 这部分就像一个魅力。我无法做的是制定一个有效的决定性决策"这应该是这样的:
if (button1 value == 100 and button2 value == 100) or this can be done with the counter if (counter1 == 3 && counter2 == 3)
tiebreaker();
这就是我需要做的事情:
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())
作为condintion,当按下按钮时将布尔值转为true并将其用作条件,使用button.equals("100") or whatever should be written
按钮中的值但不使用任何值。
另外,我尝试将tiebreaker作为第二个onClick方法并根据switch (View.getId())
进行检查,但问题是该方法依赖于视图(tiebreaker(View v)
)我不知道如何调用它来自不同的方法。
IMO的主要问题是,如果在另一个开关/箱内的另一个开关/箱中的开关/箱不能用于按钮按下(虽然我可能是错的),但是我不喜欢'知道其他任何方法。
我希望我没有错过任何东西,并设法让自己清楚。 我很感激帮助我解决这个决胜局规则的任何意见。谢谢
答案 0 :(得分:2)
它可能这样的东西......
whenButtonAIsPressed() {
do some stuff
possiblyRunTiebreakerMaterial()
}
whenButtonBIsPressed() {
do some stuff
possiblyRunTiebreakerMaterial()
}
请注意, 始终 运行possiblyRunTiebreakerMaterial()
, 始终 在 >结束进行所有其他处理。
以下是possiblyRunTiebreakerMaterial()
功能的性质......
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()
功能。
您真正想要的是状态机,但暂时不要担心。
一般"编程技巧"你在这里寻找的是你必须做这些事情:
这就是模式。
答案 1 :(得分:-1)
不幸的是,我没有评级为upvote。 我设法解决了这个问题。我没有使用函数,而是为tiebreaker创建了一个 boolean ,它看起来像:
if (p1 = 100 || p2 == 100)
tiebreak = true;
if (p1 == 100 && tiebreaker){
p1 == OK;
tiebreaker = false;
} else //same thing for p2