Actions dépendantes les unes des autres

Vous voulez de l'aide ? Postez ici :)
Post Reply
davidyossef
Posts: 24
Joined: 25 Jul 2010, 17:57

Actions dépendantes les unes des autres

Post 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:
User avatar
Jmgr
Admin
Posts: 1649
Joined: 07 Dec 2005, 15:45
Contact:

Re: Actions dépendantes les unes des autres

Post 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)
"My software never has bugs. It just develops random features."
davidyossef
Posts: 24
Joined: 25 Jul 2010, 17:57

Re: Actions dépendantes les unes des autres

Post 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:
User avatar
Jmgr
Admin
Posts: 1649
Joined: 07 Dec 2005, 15:45
Contact:

Re: Actions dépendantes les unes des autres

Post 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);
}
"My software never has bugs. It just develops random features."
davidyossef
Posts: 24
Joined: 25 Jul 2010, 17:57

Re: Actions dépendantes les unes des autres

Post by davidyossef »

Merci beaucoup Jmgr.

Je vais tester ton code. Je te tiens au courant. ;)
davidyossef
Posts: 24
Joined: 25 Jul 2010, 17:57

Re: Actions dépendantes les unes des autres

Post 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;
		}
}
User avatar
Jmgr
Admin
Posts: 1649
Joined: 07 Dec 2005, 15:45
Contact:

Re: Actions dépendantes les unes des autres

Post 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.
"My software never has bugs. It just develops random features."
davidyossef
Posts: 24
Joined: 25 Jul 2010, 17:57

Re: Actions dépendantes les unes des autres

Post 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. ;)
Post Reply