2015-08-09 2 views
0

я создаю приложение, что в классе у меня есть это случайное:Сброс генератора случайных чисел для Android

public class Ejemplo extends Activity implements OnClickListener { 
int ran=(int)(1*Math.random()) +1; 

, а также имеют этот счетчик

int contador= 0; // this is just to know how many time i won 

тогда у меня есть 2 кнопки a1 и a2

и в моем OnClick

 switch (v.getId()) { 
    case R.id.a1: 
     if(ran == 1){ 
      a1.setText("WIN"); 
      contador= contador + 1; 
     } 
     else{ 
      a1.setText("0"); 
     } 
     a1.setClickable(false); 
     break; 

    case R.id.a2: 
     if(ran == 2){ 
     a2.setText("WIN"); 
     contador= contador + 1; 
     } 

     else{ 
      a2.setText("0"); 
     } 
     a2.setClickable(false); 
     break; 

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

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

ответ

0

Поместите int ran=(int)(1*Math.random()) +1; в onClick, а не объявляйте его как переменную экземпляра в действии. Поэтому каждый раз, когда происходит клик, переменная ran будет иметь другое значение.

+0

Я не могу это сделать, bc идея игры в том, что у вас есть два варианта, а один из них - WIN, и если у меня есть, то в этом swith, возможно, никто не победит. то также я не могу нажать два раза один баттом, только один – Zul

+0

ok marko я попробую thx – Zul

2

просто использовать Random вместо Math.random это проще в использовании, вы можете, как это:

Random random = new Random(); // random generator 

// then inside your onClick this code 
if(random.nextBoolean()){ 
    // win 
} else { 
    // lose 
} 

https://developer.android.com/reference/java/util/Random.html

редактировать:

это действительно намного проще, чем то, что вы пытаетесь :

public class Ejemplo extends Activity implements OnClickListener { 
    Random random = new Random(); // random generator 




    // then inside the click listener: 
    @Override 
    public void onClick(View v) { 

    switch (v.getId()) { 
    case R.id.a1: 
     if(random.nextBoolean()){ 
      a1.setText("WIN"); 
      contador= contador + 1; 
      gano(); 
      } 
      else{ 
      a1.setText("0"); 
      } 
      a1.setClickable(false); 
      break; 
+0

Я попробую thx, но где в коде я должен это поставить? у меня может быть случайный случайный = новый Random(); где у меня есть int int = (int) (1 * Math.random()) +1; и если в коммутаторе? – Zul

+0

есть. «Случайный» заменяет 'int', а' if-else' заменяет 'switch' – Budius

+0

thx, но я не могу, я пробую это в github, если у вас есть возможность взглянуть на него, это будет замечательно: https: //github.com/Aqwe123/Problem-with-reset-random-Android- – Zul

Смежные вопросы