IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Détecter l'arrêt de 3 roues.


Sujet :

Android

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 256
    Points : 74
    Points
    74
    Par défaut Détecter l'arrêt de 3 roues.
    Bonjour,
    Mon titre de sujet n'est peut-être pas très explicite, mais je n'arrive pas a trouver quelque chose de mieux.
    Je suis en train de réaliser une sorte de "machine à sous". J'ai 3 roues qui tournent avec des images qui défilent très vite grâce à un animation-list.
    Pour tester, j'ai décidé de créer 3 boutons stop pour arrêter les 3 roues une par une (oui je sais, normalement on arrête à l'aide d'un seul levier...). Bref, je souhaite que lorsque les 3 roues sont arrêtées, on affiche un toast du style "gagné" ou "perdu".
    Mon problème se situe au niveau de la détection des 3 arrêts des roues. Puisque c'est l'utilisateur qui choisi, je ne sais pas quand il va les arrêter, et de plus, il peut les arrêter dans le désordre.
    J'ai pensé à une sorte de thread qui tourne en continue jusqu’à ce qu'il détecte que les 3 roues soient arrêtées (et là du coup il vérifie les 3 images), mais je ne sais pas du tout comment procéder.

    Pouvez-vous m'aider s'il vous plait ?
    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Pourquoi ne pas gérer cela au niveau du listener de tes boutons ?
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public class StopWheel implements OnClickListener {
     
       private int cpt = 0;
     
       public void onClick (View v) {
     
          stopAnimation(v.getTag());  //une méthode pour arrêter l'animation en fonction du bouton cliqué;
          cpt++;
          if (cpt==3)  Toast.maketext(...);
     
       }
     
    }
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 256
    Points : 74
    Points
    74
    Par défaut
    Eh oui, ça m'a tout l'air d'une bonne idée !
    Je ne sais pas pourquoi, je cherche peut-être à me compliquer...
    Si quelqu'un à une autre idée dans ma lignée des threads, je suis preneur, mais sinon je pense que je vais garder cette idée.
    Merci !

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 256
    Points : 74
    Points
    74
    Par défaut
    je reviens parce que du coup, j'ai une autre question : Une fois que les roues sont arrêtées, comment puis-je comparer si les images sont identiques ou non ?

    J'ai tenté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(cpt==3){
    			if(rocketAnimation1.getCurrent()==rocketAnimation2.getCurrent()==rocketAnimation3.getCurrent()){		
    			}
    		}
    mais bien sûr, ça ne fonctionne pas...
    (sachant que getCurrent() renvoie un objet de type Drawable...

  5. #5
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    ca pourrait marcher... sauf que '==' est un opérateur binaire (donc avec une partie gauche et droite de même type)....
    A==B==C devient donc naturellement: (A==B)==C ... mais (A==B) est de type "boolean".... bim ca ne marche plus

    Fort heureusement, l'égalité à un caractère spécial... si A==B et B==C alors A==C... du coup... (A==B) && (B==C) devrait fonctionner...

    Maintenant il faut savoir ce que "==" compare... en l'occurrence, des références vers des objets "Drawable". (A==B) veut donc dire est ce que c'est le même objet référencé par A et B... Et là, rien n'est moins sur...
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 256
    Points : 74
    Points
    74
    Par défaut
    En effet, j'ai testé avec cette solution. Du coup, je n'avais plus d'erreur, mais je ne passais jamais dans le if.
    Après quelques recherches, voici la solution que j'ai trouvé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    public void manualStop(){
    		cpt++;
    		if(cpt==3){
    			Bitmap bt1= ((BitmapDrawable)rocketAnimation1.getCurrent()).getBitmap();
    			Bitmap bt2= ((BitmapDrawable)rocketAnimation2.getCurrent()).getBitmap();
    			Bitmap bt3= ((BitmapDrawable)rocketAnimation3.getCurrent()).getBitmap();
    			if(bt1==bt2&&bt2==bt3){
    				Toast.makeText(SlotMachine.this, "YOU WIN !!!", Toast.LENGTH_LONG).show();
    			}else{
    				Toast.makeText(SlotMachine.this, "looser", Toast.LENGTH_LONG).show();
    			}
    			cpt=0;
    		}
    	}
    j'ai converti les Drawable en Bitmap. Et là, ça fonctionne !

    Merci !

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 256
    Points : 74
    Points
    74
    Par défaut
    Autre "petit problème", ça n'empêche pas de fonctionner, mais ça peut être embêtant : J'utilise un seul animation-list pour les 3 roues
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <animation-list xmlns:android="http://schemas.android.com/apk/res/android"
        android:oneshot="false" >
     
    etc....
    Ce qui fait qu'elle tournent en même temps. Je souhaiterais que les images ne soient pas les mêmes au même moment.
    Que dois-je faire ?
    1. Mettre une tempo lors de l'appui sur le bouton start pour qu'elles démarrent avec quelques microsecondes de différence ? (Ce qui implique qu'il faut jouer avec les threads parce que je vais bloquer le thread UI sinon.. ?)
    2. Faire 3 "animation-list", une pour chaque roue, avec les mêmes images mais dans le désordre (mais ça fait un peu redondance de code non ?)
    3. Autre solution ?

    De plus, à chaque fois que je lance les roues, elles reprennent les images depuis le début (autrement dit, actuellement, puisqu'elles tournent en même temps, à chaque fois que je relance l'appli ou que j'appuie sur start, elles reprennent à zéro). Est-il possible d'enregistrer la position de chaque roues et de reprendre le jeu ou il en était rendu ?

  8. #8
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Oui, il est possible de spécifier le 'start' de chaque animation...

    Par contre si le but est de copier les bandits manchots.... les animations doivent être différentes (les roues étant différentes).
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 256
    Points : 74
    Points
    74
    Par défaut
    Ok d'accord. Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/09/2011, 12h30
  2. capable de détecter l'arrêt accidentel d'un processus système
    Par arnaudperfect dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 10/08/2007, 11h15
  3. Détecter l'arrêt d'une vidéo (bouton stop)
    Par levit dans le forum Flash
    Réponses: 2
    Dernier message: 01/05/2007, 14h50
  4. [D6] Comment détecter l'arrêt de Windows
    Par Lucien dans le forum Langage
    Réponses: 6
    Dernier message: 02/03/2006, 10h29
  5. Détecter l'arrêt du système ?
    Par Jéremy A dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 24/03/2003, 19h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo