2015-06-12 4 views
1

Ну, я постараюсь быть более ясным.Как я могу заставить переменную ждать, пока пользователь нажмет одну из четырех кнопок?

У меня есть переменная, называемая int tentativa, и я хочу, чтобы она получала определенное значение в зависимости от того, какую кнопку нажать.

У меня эти четыре кнопки: btPedra[0], btPedra[1], btPedra[2], btPedra[3].

Если пользователь нажмет кнопку btPedra[0], переменная получит номер 0.

Если пользователь нажмет кнопку btPedra[1], переменная получит номер 1 и так далее ...

Примечание : Программа должна ждать, пока пользователь нажмет одну из кнопок, чтобы продолжить.

Мой код выглядит следующим образом:

for (contador = 0; contador < jogada; ++contador){ 

    tentativa = 
    // HERE THE VARIABLE tentativa SHOULD RECEIVE 0, 1, 2 OR 3 DEPENDING ON THE BUTTON PRESSED. 

    if (tentativa[contador] == sequencia[contador]){ 
     acertos++; 
    } else { 
     gameOver(); 
    } 
} 

При нажатии кнопки я хочу, чтобы изменить цвет фона него тоже.

Примечание: Я программирую в java для android!

+0

Попробуйте добавить прослушиватель событий к кнопке/s, которая затем выполнит требуемые действия. – TomDillinger

+0

Привет. Вы не должны включать 'Hello',' Спасибо', 'Как вы? 'Или любые другие приветствия в вашем сообщении. Если вас интересует, почему - прочитайте это http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be-removed-from-posts :) –

ответ

0

Использование ниже кода

View.OnClickListener clickListener=new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 

     switch (v.getId()) { 

     case R.id.btPedra[0]: 

     // if User Press Button 0/1/2/3/4 at time you call a method 

     case R.id.btPedra[1]: 
      btPedraOne(); 
      break; 

     case R.id.btPedra[2]: 
      btnPedrTwo(); 
      break; 

     case R.id.btPedra[3]: 
      btnPedrThree(); 
      break; 
     case R.id.btPedra[4]: 
      btnPedraFor(); 
      break; 
     default: 
      break; 
     } 
    } 
0

Ручка Нажмите События btPedra [0], btPedra [1], btPedra [2], btPedra [3], установив ClickListener им

@Override 
public void onClick(View v) { 
    switch(v.getId()) { 

     case R.id.<id_of_btPedra[0]> : 
      // set variable tentativa to 0 
      tentativa = 0; 
      break; 
     case R.id.<id_of_btPedra[1]> : 
      // set variable tentativa to 1 
      tentativa = 1; 
      break; 
     case R.id.<id_of_btPedra[2]> : 
      // set variable tentativa to 2 
      tentativa = 2; 
      break; 
     case R.id.<id_of_btPedra[3]> : 
      // set variable tentativa to 3 
      tentativa = 3; 
      break; 
    } 
} 
0

Добавить кнопку onclick на кнопку и установить переменную в методе onclick.

Button button = (Button) findViewById(R.id.button_id); button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { //set the variable.
} });

0

Я бы решить эту проблему несколько иначе.

Давайте предположим, что вы определяете кнопки таким образом:

<Button 
     android:id="@+id/button1" 
     ... 
     android:onClick="buttonClick1"/> 

    <Button 
     android:id="@+id/button2" 
     ... 
     android:onClick="buttonClick2"/> 

    <Button 
     android:id="@+id/button3" 
     ... 
     android:onClick="buttonClick3"/> 

Затем я хотел бы добавить следующие строки в вашей деятельности:

public void buttonClick1(View v) { 
    gameCheck(1); 
} 

public void buttonClick2(View v) { 
    gameCheck(2); 
} 

public void buttonClick3(View v) { 
    gameCheck(3); 
} 

Наконец, gameCheck будет метод, чтобы проверить, Игра закончилась и закончил счет:

public void gameCheck(int tentativa) { 

     if (tentativa == sequencia[current_step]){ 
      acertos++; 
     } else { 
      gameOver(); 
     } 
     current_step++; 
     contador++; 
    } 
} 

Обратите внимание, что я принимаю несколько вариаций ables из gameCheck, и я предполагаю, что они являются переменными этого класса.

Последнее наблюдение за стилем, вместо того, чтобы иметь три метода для нажатия кнопок, у меня будет только один и использовать идентификатор, чтобы узнать, какое значение я должен передать в gameCheck.

Надеюсь, это имеет смысл, и оно работает для вас.