2016-10-20 1 views
0

Je travaille actuellement sur un projet d'école dans Android Studio et jusqu'à présent, j'ai écrit un code qui génère une équation aléatoire. Maintenant, je veux afficher deux équations et l'utilisateur doit décider lequel de ces deux a un plus grand résultat. L'utilisateur doit alors faire un swipmotion up si la deuxième équation est plus grande et un swipemotion bas si la deuxième équation est plus petite. Voici le code pour les équations aléatoires:Multiple si les conditions avec des événements swipe

String[] operationSet = new String[]{"+", "-", "/", "*"}; 
String stringResultOfEquation; 
String equation; 
double doubleAnswer1; 
public void start1() { 
    Random random = new Random(); 
    int numOfOperations = random.nextInt(2) + 1; 

    List<String> operations = new ArrayList<>(); 

    for (int i = 0; i < numOfOperations; i++) { 
     String operation = operationSet[random.nextInt(4)]; 
     operations.add(operation); 
    } 

    int numOfNumbers = numOfOperations + 1; 
    List<Integer> numbers = new ArrayList<>(); 

    for (int i = 0; i < numOfNumbers; i++) { 
     int number = random.nextInt(10)+1; 
     numbers.add(number); 
    } 

    String equation = ""; 
    for (int i = 0; i < numOfOperations; i++) { 
     equation += numbers.get(i); 
     equation += operations.get(i); 
    } 
    equation += numbers.get(numbers.size() -1); 

    TextView TextEquation = (TextView)findViewById(R.id.textView3); 
    TextEquation.setText(equation); 

    String stringResultOfEquation = String.valueOf(equation); 

    double doubleAnswer1 = eval(stringResultOfEquation); 

    String stringAnswer = Double.toString(doubleAnswer1); 

    TextView textAnswer = (TextView)findViewById(R.id.textView4); 
    textAnswer.setText(stringAnswer); 
} 

Cependant, je ne sais pas comment écrire le code pour les événements de glissement. Je pensais à plusieurs si les conditions comme:

if((doubleAnswer1 > doubleAnswer2) && (MotionEvent.ACTION_DOWN = true)){ 
     //create new equation 
     } 

Et pour tous les autres possibilité (doubleAnswer1 < doubleAnswer2) et si le MotionEvent a fait la mauvaise direction. J'ai essayé de faire comme ça mais ça n'a pas fonctionné, donc je ne sais pas quoi essayer maintenant. Peut-être que quelqu'un a une idée de comment résoudre cela.

Si tout est clair dans ma question, ne hésitez pas à demander et je vais essayer de clarifier le problème :)

Merci déjà à l'avance pour votre aide!

Répondre

1

Utilisez GestureDetector pour le détecter:

Pour détecter un simple glissement vertical, vous pouvez utiliser ce code:

class MyGestureListener extends GestureDetector.SimpleOnGestureListener 
{    
    @Override 
    public boolean onDown(MotionEvent event) 
    { 
     Log.d(TAG,"onDown: " + event.toString()); 
     return true; 
    } 

    @Override 
    public boolean onFling(MotionEvent start, MotionEvent finish, float velocityX, float velocityY) 
    { 
     if (start.getRawY() < finish.getRawY()) { 
      //down 
     } else { 
      //up 
     } 

     return true; 
    } 
} 
+0

Et comment puis-je utiliser pour mon code si doubleAnswer1> doubleAnswer2 ou l'inverse? – zutru

+0

Ce code est pour détecter ce que l'utilisateur a fait, vous devez le définir pour vos textViews, et, dans la méthode OnFling, vous faites vos vérifications pour voir si c'est correct ou non. – cuoka