Introduction:
Cet article démontre l'utilisation des classes intégrées de Java pour créer un programme d'automatisation destiné à un jeu 4399 similaire à "Rhythm Master". Ce jeu, appelé "piano tactile", se joue en cliquant sur des touches correspondantes pour accumuler des points.
1. Approche de mise en œuvre
(1) Le programme détecte la couleur des pixels à l'écran pour positionner la souris et effectuer des clics : le bouton de démarrage est bleu, tandis que les autres touches sont noires ou présentent des teintes variées (2) Des points de référence fixes sont nécessaires pour surveiller l'apparition des touches (3) Mesurez les positions des points à scanner
Si la position la plus à gauche est (x,y) et que chaque touche a une largeur de "largeur", il suffit de vérifier (x+largeur*0,y), (x+largeur*1,y), (x+largeur*2,y), (x+largeur*3,y)Boucle infinie de scan:
while(true){
for(int i=0;i<4;++i){
scanner(x+largeur*i,y);
}
}
(4) Si la couleur correspondante est détectée, déplacez la souris et effectuez un clic
Attention : Si la souris est bloquée, appuyez sur (Ctrl+Alt+Delete) puis utilisez le gestionnaire des tâches pour arrêter les processus Java associés!!!
2. Mesure des coordonnées
(1)Assurez-vous que l'échelle d'affichage est à 100% (sinon les coordonnées mesurées doivent être ajustées selon le ratio), réinitialisez après utilisationSur Windows 11, ouvrez l'interface de paramètres via la touche Win + i
(2)Cliquez
Pour accéder
(2) Mesure : Utilisez l'outil de capture d'écran WeChat
Ou l'outil professionnel Snipaste (lien de téléchargement ofifciel), la valeur x se trouve dans le premier cadre, la valeur y peut être prise n'importe où dans le bouton de départ du jeu, la largeur correspond à cette valeur
3. Implémentation du code
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.InputEvent;
public class AutomatePiano {
public static void main(String[] args) throws AWTException {
// Les trois paramètres suivants doivent être adaptés à votre configuration matérielle
int largeur = 110;
int positionX = 600;
int positionY = 660;
// Création d'un objet de contrôle de souris
Robot rb = new Robot();
// Boucle infinie
while (true) {
// Scanning de 4 points
for (int i = 0; i < 4; i++) {
// Chaque pixel est composé de trois couleurs primaires (rouge, vert, bleu) avec des valeurs de 0 à 255, ici on vérifie seulement la composante rouge
// Principe de détection détaillé sur Internet
int couleur = rb.getPixelColor(positionX + largeur * i, positionY).getRed();
// Vérification de la couleur (bleue, noire, teinte variable)
if (couleur < 60) {
// Déplacement de la souris vers la position cible
rb.mouseMove(positionX + largeur * i, positionY);
// Clic gauche de la souris
rb.mousePress(InputEvent.BUTTON1_DOWN_MASK);
// Relâchement du clic gauche
rb.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
}
}
}
}
}