May 19, 2024

Wiki

Python

Aide

edit SideBar

Search

Controle Evt

Mettre en emphase la cellule active

Mémoriser la cellule active

Les coordonnées de la cellule active peuvent être mémorisées à l'aide des attributs selX et selY. Pour que ces attributs soient accessibles à la fois en mode portrait et en mode paysage, il suffit de les déclarer comme attributs de classe de la classe PuzzleView.

On initialise ces variables avec des variables quelconques x et y qui représentent les coordonnées d'une case vide.

Capturer le toucher de l'utilisateur

Pour définir quelle cellule est activée par l'utilisateur, on capture l'événement de toucher. Particulièrement quand l'utilisateur appuie sur l'écran, un événement ACTION_DOWN est généré et l'on peut récupérer ses coordonnées comme dans la méthode suivante de la classe PuzzleView.

  public boolean onTouchEvent(MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_DOWN){
      int x = (int) (event.getX() / this.width);
      int y = (int) (event.getY() / this.height);
      // ...
    }

Travaux pratiques : mettre en valeur la cellule active

  1. Compléter la méthode onTouchEvent précédente pour qu'elle fixe les

attribut PuzzleView.selX et PuzzleView.selX ;

  1. Compléter la méthode onDraw de la classe PuzzleView pour qu'elle dessine dans la couleur 64ff8000 la cellule sélectionnée ;
  2. Vérifier que le passage en mode paysage préserve la cellule sélectionnée.

Modifier le contenu de la cellule active

Travaux Pratiques : création d'un pavé numérique tactile

Lorsque l'utilisateur appuie sur une case modifiable, on souhaite pouvoir afficher un pavé numérique tactile, qui, à terme, n'affichera que les nombres utilisables :

  1. Pour cela, implanter la classe KeyPAd, qui hérite de Dialog et qui implante OnClickListener (pour capturer les clics de souris sur les boutons).
  2. Cette classe a comme attribut un objet de type Game (lié à la construction)
  3. Cette classe a une méthode de création (protected void onCreate(Bundle savedInstanceState)) qui contient tous les 9 boutons et leurs écouteurs associés.
  4. Cette classe contient la méthode onClick(View v) qui récupère le numéro num du bouton cliqué, demande la modification du puzzle via la méthode updatePuzzle(num) de la classe Game (à développer) ;
  5. La méthode onClick se conclue en demandant sa suppression de l'écran via la méthode dismiss() existante ;
  6. Invoquer la création et l'affichage de cette boite de dialogue dans la méthode onTouchEvent

Travaux Pratique : amélioration de la boite de dialogue

  1. Dans la classe Game, créer la méthode qui renvoie l'ensemble des valeurs possibles pour la case de coordonnées (x,y) dont la signature est :

public Set<Integer> getPossiblesVallues(int x,int y)

  1. Mettre à jour le code pour que celle-ci soit exploitée par la boite de dialogue

Page Actions

Recent Changes

Group & Page

Back Links