1
votes

Comment détecter l'emplacement exact du clic de souris sur le sprite dans Scratch

Je voudrais détecter l'emplacement exact du clic de souris dans la grille 3x3 affichée à l'écran. Comment cela peut-il être fait dans MIT Scratch? Des suggestions?


2 commentaires

Les blocs "souris x" et "souris y" de la catégorie détection peuvent-ils vous aider dans ce que vous essayez de faire?


Merci pour la réponse .... dans une certaine mesure, "souris x" et "souris y" vous aideront, mais nous avons besoin de plus que cela. Imaginez avoir 9 cases à l'écran et vous devez identifier le clic de souris sur une case particulière.


3 Réponses :


1
votes

Il existe deux façons de procéder.
Vous pouvez créer 9 sprites, les masquer et utiliser l'événement When this sprite clicked ... ... mais ce serait beaucoup de sprites inutiles.
Ou vous pouvez effectuer les opérations suivantes:
Comme l'a dit @PullJosh, vous pouvez utiliser les blocs x et y de la souris. Faites juste quelques maths:
Vous savez que l'étape passe de X: -240 à 240, Y: -180 à 180.
Il suffit de mettre cela dans du code pour détecter les plages, ci-dessous un lien vers un projet qui en est un exemple:
Ce projet
(Remarque: cela suppose que les cases de la grille sont de la même taille.)


2 commentaires

Merci beaucoup. Désolé pour la réponse tardive. Nous avons créé quelque chose de similaire, mais en utilisant des listes pour stocker l'emplacement X et l'emplacement Y. On peut écrire les coordonnées à lister au moment de la création. Mais c'est un peu difficile lorsque nous utilisons des clones.


CatDev, veuillez partager votre identifiant de messagerie si possible,



0
votes

C'est assez simple si vous voulez impliquer 2 variables dans ceci: Tout ce que vous avez vraiment à faire est de définir la position du mousex sur une variable et la position de la souris sur une variable après que le sprite a détecté un clic dessus. Voici un exemple:  https://i.stack.imgur.com/9LAvM.png


0 commentaires

0
votes
when greenFlag pressed
forever
  if <mouse down?> then
    set (lastMouseClickX) to (mouse x)
    set (lastMouseClickY) to (mouse y)
  end
  wait until <not<mouse down?>>
end```

1 commentaires

Bien que ce code puisse fournir une solution à la question, il est préférable d'ajouter un contexte expliquant pourquoi / comment cela fonctionne. Cela peut aider les futurs utilisateurs à apprendre et à appliquer ces connaissances à leur propre code. Vous êtes également susceptible d'avoir des commentaires positifs des utilisateurs sous la forme de votes positifs, lorsque le code est expliqué.