équivalent de la fonction "couleur de pixel" mais en code

Vous voulez de l'aide ? Postez ici :)
Post Reply
Arisoy
Posts: 4
Joined: 29 Dec 2023, 16:29

équivalent de la fonction "couleur de pixel" mais en code

Post by Arisoy »

Bonjour,

Je recherche l'équivalent de la fonction "couleur de pixel" mais en code.

J'ai pour l'instant brricoler un truc avec un while infini :

Code: Select all

while(Ecran.pixel(X,Y).equals(Couleur)){
	Ecran = Image.takeScreenshot();
}
Mais ca me plait pas, le principale problème étant que tant que la couleur n'est pas trouvé le script fige le pc. Je n'ai même plus la possibilité d'arréter le script.

Du coup si quelqu'un peut m'aider la dessus ce serait top :)

D'avance merci
francois
Posts: 456
Joined: 18 Oct 2010, 10:33
Location: France

Re: équivalent de la fonction "couleur de pixel" mais en code

Post by francois »

trouve = false
while (! trouve) {

if (Ecran.pixel(X,Y).equals(Couleur)){
trouve = true
Ecran = Image.takeScreenshot();
} else {
Execution.pause(200)
}// FIN if
} // FIN While

Non testé
Arisoy
Posts: 4
Joined: 29 Dec 2023, 16:29

Re: équivalent de la fonction "couleur de pixel" mais en code

Post by Arisoy »

J'avais pensé ajouter une pause, mais vu le nombre d'endroit ou j'utilise cette fonction et vu que mon script reboucle sur lui même cela va considérablement augmenter son temps d'éxecution.

Je préfèrerais donc éviter de le faire ainsi.
MDLE46
Posts: 108
Joined: 11 Nov 2016, 19:06

Re: équivalent de la fonction "couleur de pixel" mais en code

Post by MDLE46 »

Bonjour,

Testé et ok.
Cordialement.
MDLE46

//=> A paramétrer
//=================================
var x = 1619 ;
var y = 37 ;
var Couleur = new Color(46, 124, 238, 255);
//================== Fin des paramétrages

var Ecran = new Image();
var Ecran = Image.takeScreenshot();

//=> Retourne : true si vrai, false si faux.
var resultat = Ecran.pixel(x,y).equals(Couleur);

Console.print(resultat) ;



Voir PJ
Attachments
Couleur_Pixel_002.ascr
(2.91 KiB) Downloaded 5 times
Couleur_Pixel_000.ascr
(2.85 KiB) Downloaded 6 times
Last edited by MDLE46 on 30 Dec 2023, 21:48, edited 1 time in total.
MDLE46
Posts: 108
Joined: 11 Nov 2016, 19:06

Re: équivalent de la fonction "couleur de pixel" mais en code

Post by MDLE46 »

ou


//=> A paramétrer
//=================================
var x = 1619 ;
var y = 37 ;
var Couleur = new Color("#2e7cee");
//================== Fin des paramétrages

var Ecran = new Image();
var Ecran = Image.takeScreenshot();

//=> Retourne : true si vrai, false si faux.
if (Ecran.pixel(x,y).equals(Couleur) === false) {Script.nextLine = "bcl" ;}
else {Console.print("ok");} ;


Voir PJ
Attachments
Couleur_Pixel-003.ascr
(2.91 KiB) Downloaded 6 times
Last edited by MDLE46 on 30 Dec 2023, 18:18, edited 1 time in total.
MDLE46
Posts: 108
Joined: 11 Nov 2016, 19:06

Re: équivalent de la fonction "couleur de pixel" mais en code

Post by MDLE46 »

en utilisant soit une function, soit while.

Voir PJ.
Attachments
Couleur_Pixel_005_while.ascr
(2.83 KiB) Downloaded 9 times
Couleur_Pixel_004_function.ascr
(4.48 KiB) Downloaded 7 times
Arisoy
Posts: 4
Joined: 29 Dec 2023, 16:29

Re: équivalent de la fonction "couleur de pixel" mais en code

Post by Arisoy »

Bonjour MDLE46,

Ta solution semble effectivement fonctionner si le test du pixel se fait sans aucun autre code autour. Dans mon cas j'ai du code autour et ne peux donc pas reboucler comme tu le fais.

Voici un exemple du code :

Code: Select all

	if(Ecran.pixel(X,Y).equals(Couleur)){	
		clique.x=X;
		clique.y=Y;
		Souris.move(clique);
		Souris.click();
		
		//Ci dessous
		//Boucle qui m'embète car temps que le bouton ne disparait pas le script fige et je n'ai plus la main sur le PC
		//On ne peut meme plus arreter le script
		while(Ecran.pixel(X,Y).equals(Couleur)){
			Ecran = Image.takeScreenshot();
		}

	}
En gros le script clique sur un bouton et ensuite je vais m'assurer que le bouton disparaisse avant de continuer. Il y'a biensur également du code avant et après le bout que je viens de mettre avec d'autres tests sur d'autres pixels et d'autres couleurs. Certaines parties de code sont desfois executées desfois non en fonction des tests précédants.

Du coup je n'arrive pas a adapter ta solution a mon cas de figure. Ou du moins pas sans avoir à nouveau le problème de script qui ne redonne plus la main.
Je ne peux en effet pas sortir du script actuel pour le réappeler car il se rééxecute depuis le début ce que je ne souhaite pas.
L'attente dot vraiment se faire au niveau du while mais je souhaite qu'a ce moment là le PC ne fige pas pendant que ça reboucle.

Bon après, peut être que ce que je souhaite faire n'est pas possible.
MDLE46
Posts: 108
Joined: 11 Nov 2016, 19:06

Re: équivalent de la fonction "couleur de pixel" mais en code

Post by MDLE46 »

Bjr Arisoy,

Ce qui bloque, c'est le while qui s'exécute à l'infini.

Donc, dans ton cas, l'idéal, ce n'est pas de faire un script dans une seule action code mais en 3 actions code successifs (while en 2) (sans rappels).
Si ce n'est pas possible, je ne voie pas comment faire.
Post Reply