检查按钮是否按下然后再次检查

时间:2018-03-02 12:05:33

标签: android if-statement button switch-statement

我对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的主要问题是,如果在另一个开关/箱内的另一个开关/箱中的开关/箱不能用于按钮按下(虽然我可能是错的),但是我不喜欢'知道其他任何方法。

我希望我没有错过任何东西,并设法让自己清楚。 我很感激帮助我解决这个决胜局规则的任何意见。谢谢

2 个答案:

答案 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. 始终进行处理
  2. 然后,之后
  3. 所有情况下,请检查 IF 您需要运行决胜局
  4. 如果需要,
  5. 运行
  6. 这就是模式。

答案 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