Page 1 of 1

Actions dépendantes les unes des autres

Posted: 03 Jun 2012, 14:49
by davidyossef
Bonjour à tous,

je continue avec mes questions, en espérant qu'elles aident aussi d'autres utilisateurs d'Actionaz.

Cette fois-ci, voilà le topo:

disons que j'ai un ciel étoilé, dans ce ciel étoilé passent des fusées. Ces-dîtes fusées proviennent toutes exactement du coin bas gauche de mon écran. Lorsque qu'une fusée apparaît, je dois cliquer sur le bouton "Explosion" exactement 3 seconde après.

Ce schéma serait somme toute assez simple à mettre en place (Couleur de Pixel + Clic) si les fusées sortaient du coin bas gauche avec plus de 3 secondes d'intervalles mais voilà le problème: une fusée sort et avant le clic sur "Explosion" une autre fusée sort à son tour, puis encore une autre. Et ensuite il faut cliquer 3 fois d'affilée sur "Explosion".

:?: Est-il alors possible de tester le pixel bas gauche pendant TOUTE la partie afin de voir quand des fusées sortent ET EN MÊME TEMPS compter les 3 secondes et cliquer sur "Explosion" 3 secondes après chaque sortie de fusée? :?:

Pour être franc, je n'ai pas grand espoir sur ce coup car Actionaz agit action par action mais qui sait...

Merci à tous! :wink:

Re: Actions dépendantes les unes des autres

Posted: 03 Jun 2012, 18:06
by Jmgr
Salut,

C'est possible avec du code, mais c'est "relativement" complexe. En fait une idée possible serait d'utiliser un tableau pour stocker quelle fusée vient de passer ainsi que le temps actuel. Il suffit ensuite de vérifier tous les éléments de ce tableau pour déclencher un clic 3 secondes après. (puis supprimer cet élément du tableau)

Re: Actions dépendantes les unes des autres

Posted: 03 Jun 2012, 19:29
by davidyossef
Waouw, j'étais persuadé que c'était impossible, je demandais juste à tout hasard! :D

Je t'assure Jonathan, il faut vraiment que tu continues à travailler sur ce soft, il est prodigieux!

Aurais-tu un exemple de ce tableau? Ne te foules pas, je sais que ton temps est compté, mais une structure sommaire me permettant peut-être de le comprendre afin de le faire seul... :oops:

Re: Actions dépendantes les unes des autres

Posted: 04 Jun 2012, 12:46
by Jmgr
Quelque chose comme ça :

Code: Select all

var fusees = new Array();
var position = new Point(50, 50);//Position à vérifier
var bouton = new Point(100, 100);//La position du bouton à cliquer
var couleur = new Color(128, 128, 128);//Couleur du pixel utilisé pour détecter une fusée

while(true)
{
	var ecran = Image.takeScreenshot();
	var pixel = ecran.pixel(position.x, position.y);
	
	if(pixel == couleur)
	{
		//On a détecté une fusée
		fusees.push(System().timestamp() + 3);//Stocke le temps actuel
	}

	var temps = System().timestamp();
	var m = new Mouse();
	for(var i = 0; i < fusees.length;)
	{
		if(fusees[i] < temps)//Le temps est écoulé
		{
			fusees.splice(i, 1);//Supprime l'entrée
			m.move(bouton);
			m.click();
		}
		else
			++i;
	}

	Execution.pause(500);
}

Re: Actions dépendantes les unes des autres

Posted: 05 Jun 2012, 21:51
by davidyossef
Merci beaucoup Jmgr.

Je vais tester ton code. Je te tiens au courant. ;)

Re: Actions dépendantes les unes des autres

Posted: 06 Jun 2012, 19:48
by davidyossef
Bonjour à tous et en particulier à Jmgr :wink:,

j'ai adapté le code à mes paramètres mais il ne clique pas sur le bouton afin de détruire les fusées.

C'est probablement dû à une erreur dans mon adaptation du code. J'ai inversé la vérification en mettant une couleur et une position de pixel du fond d'écran du jeu par où passent toutes les fusées, ainsi lorsqu'une fusée passe, ce pixel est de couleur différente.

Peut-être est-ce dû à la vitesse de passage des fusées (elles passent très rapidement). Après l'action "Code" j'ai configuré une action "Couleur de Pixel" qui vérifie si le jeu est terminé, si non alors retour sur l'action "Code": peut-être que cela fait perdre du temps dans l'exécution du code... :?:

Code: Select all

var fusees = new Array();
var position = new Point(434, 869);//Position à vérifier
var bouton = new Point(891, 854);//La position du bouton à cliquer
var couleur = new Color(5, 22, 35);//Couleur du pixel de fond d'écran utilisé pour détecter une fusée

while(false)
{
   var ecran = Image.takeScreenshot();
   var pixel = ecran.pixel(position.x, position.y);
   
   if(pixel != couleur)
	{
	//On a détecté une fusée
	fusees.push(System().timestamp() + 3);//Stocke le temps actuel
	}

	var temps = System().timestamp();
	var m = new Mouse();
	for(var i = 0; i < fusees.length;)
		{
		if(fusees[i] < temps)//Le temps est écoulé
			{
			fusees.splice(i, 1);//Supprime l'entrée
			m.move(bouton);
			m.click();
			}
		else
		++i;
		}
}

Re: Actions dépendantes les unes des autres

Posted: 06 Jun 2012, 20:33
by Jmgr
Hm, je n'ai pas le temps de vérifier ton code complètement, mais déjà je vois un problème :

Code: Select all

while(false)
signifie que ce qui va après ne sera jamais exécuté.

Code: Select all

while(true)
Représente une boucle infinie.

Re: Actions dépendantes les unes des autres

Posted: 07 Jun 2012, 23:19
by davidyossef
En effet cela marche mieux avec "true". :lol:

Pour autant, il ne détecte pas les fusées. Mais quand je passe ma souris sur la position testée, alors il clique. Ainsi je me dis que les fusées vont trop vite.

De plus, le script boucle et plante toujours Actionaz sur cette action "Code".

Je vais continuer à tester jusqu'à ce que cela marche. ;)