Autoit [Résolu][Demande & Aide]Utilisation de direction pour Trajet

Inscrit
24 Février 2012
Messages
55
Reactions
0
#1
Voilà, D4rkv4n ma écris un script qui lit un .txt et fait les actions suivantes:

_Compte le nombre de ligne.
_Stock celle-ci dans $ligne
_Lit les lignes une par une.

_Lit entre les crochets.
_Stock le résultat dans $Pos

_Lit après le crochet de fin et après l'espace.
_Stock le résultant dans $DirectionToGo

Exemple j'ai un .txt avec 2 lignes et comme MapId et direction :
[-29,-42] droite
[-28,-42] droite


$ligne = 2
$Pos = -29,-42 et DirectionToGo = droite
$Pos = -28,-42 et DirectionToGo = droite


Je voudrais savoir Si DirectionToGo = (haut, bas, droite ou gauche) Alors
;Faire l'action que j'ai pré-défini ;Soit le changement de maps

J'ai commencé et je voudrais savoirs si mon script est bon ou si j'aurai commis des erreurs (ou l'oublie de chose important pour que celui-ci fonctionne.)
J'ai déjà fait les fonctions changement de maps(encore avec l'aide de D4rkv4n), il ne me reste pu qu'à savoirs si s'est écrit alors faire le changement de maps qu'il faut.
Code:
Func Go_Direction_To_Go($DirectionToGo)
	
	Switch DirectionToGo 
		Case = "droite"
               ;Va à droite
		Case = "gauche"
               ;Va à gauche
		Case = "haut"
               ;Va en haut
		Case = "bas"
               ;Va en bas
	EndSwitch	 
	 Sleep(6000)
 EndFunc

J'attend vos avis et réponses, si je fini mon Script "Trajet", je pense faire un tutos dessus. Enfin après avoir été promu au Rang de Rédacteur. (Celui-ci ne comportera que du déplacement entre maps à l'aide d'un fichier .txt)
 
Inscrit
15 Avril 2011
Messages
457
Reactions
1
#2
Re: [Demande & Aide] Utilisation de direction pour "Trajet".

Euh, pourquoi tu déclares 4 fois la même variable ? x) Avec ce code, ton perso va tout le temps aller en bas. Réfléchis, c'est la fonction de lecture du fichier texte qui doit attribuer une valeur à ta variable, donc tu n'as pas à la déclarer ici. De plus, c'est pas un Local qui lui faut, mais un Global car elle sera utilisé dans plusieurs fonctions, tu l'a passe en paramètre dans la fonction Go_Direction_Chemins(). Sinon, l'idée de lecture de fichier texte pour les maps est très bonne.
Et le Sleep(6000), c'est très moche. Remplace-le par un While. Tu prends un pixel dans la map, dès qu'il devient noir, puis qu'il redevient en couleur, ça veut dire que ton perso a terminé son changement de map.

Bon courage ;)

EDIT : Je vois que tu as édité, mais je te répète que c'est pas là qu'elle doit être déclaré.
 
Inscrit
24 Février 2012
Messages
55
Reactions
0
#3
Re: [Demande & Aide] Utilisation de direction pour "Trajet".

@NicoMasterChief, Merci bien, j'attendais ta réponse avec impatience tout comme celle d'autre personne.
Pour le local, j'ai relu la doc et je me suis rendu compte que sa aller poser problème de mettre 4 directions différentes pour 1 variable = "Direction"

Pour le global, pas bête vu que je pense comme tu as pu le dire, je pense que je vais l'utiliser dans plusieurs fonctions.

Pour le Sleep(6000) s'est juste pour faire le 1er essai, je pense faire une recherche comme :
Si la case où j'ai appuyé pour changer de map et différente de celle où je suis maintenant alors j'ai changé de maps.

Voilà le résultat:
Code:
Func Go_Direction_To_Go($DirectionToGo)

   Switch $DirectionToGo
      Case = "droite" 
               ;Va à droite
      Case = "gauche" 
               ;Va à gauche
      Case = "haut" 
               ;Va en haut
      Case = "bas" 
               ;Va en bas
   EndSwitch
    Sleep(6000)
 EndFunc

Si D4rkv4n, tu passe par là, alors je te demande, peux-tu me résoudre le problème de _detect_client qui ne fonctionne pas avec launch.au3 enfin il demande d’appuyer sur F2 mais sa fait rien. Sans sa je ne peux utiliser ma fonction. En espérant que cette fois-ci tu trouves et que tu règles le problème.
 

d4rkv4n

Contributeur
Inscrit
6 Mai 2012
Messages
129
Reactions
0
#4
Re: [Demande & Aide] Utilisation de direction pour "Trajet".

@NicoMasterChef, tu as vu où qu'il déclare 4 fois la même variable?

@Snakeddp, ton code ne veut rien dire.

Code:
   Switch $DirectionToGo
      Case = "droite" Then
               ;Va à droite
      Case = "gauche" Then
               ;Va à gauche
      Case = "haut" Then
               ;Va en haut
      Case = "bas" Then
               ;Va en bas
   EndSwitch
doit être remplacé par :

Code:
 Switch $DirectionToGo
      Case "droite"
               ;Va à droite
      Case "gauche"
               ;Va à gauche
      Case "haut"
               ;Va en haut
      Case "bas"
               ;Va en bas
   EndSwitch
Encore une fois, je te répète d'aller voir la doc' lorsque tu n'es pas sûr de ce que tu fais.
Pour ce qui est du script "_detect_client.au3", je m'y penche dès que possible. Je vais le nettoyer etc, et le réuploader. En attendant, tu n'en as pas besoin.
Commence le code, fais des tests, beaucoup. Entraîne-toi. Puis lorsque j'aurai terminé, tu intégreras mon script dans ton code.

EDIT : [HS] Mon pseudo n'a pas de majuscule. Alors arrête d'en mettre, ça fait moche ! :D [/HS]
EDIT 2 : Lorsque tu initialises une variable, je te conseille de la nommer de cette manière : si c'est un string, alors tu commences le nom de ta variable par un "s" minuscule. Par exemple : $sMonTexte. Pour un array, tu mets un "a", un nombre, "i". Ca te permettra de t'y retrouver plus facilement, et c'est une bonne méthode à avoir.
 
Inscrit
24 Février 2012
Messages
55
Reactions
0
#5
Re: [Demande & Aide] Utilisation de direction pour "Trajet".

@d4rkv4n, Avec NicoMasterChief, on a vu mon erreur de Then, j'ai juste pas édité.
Et oui, j'ai regardé la doc, elle me disait de voir "if...then" donc j'ai ajouté des "Then" à causes de sa.

J'ai fini mon code. Il ne me reste pu qu'à le test avec le .txt et sans la valeur x et y de $iCases des colonnes pré-défini par ta fonction, il ne fonctionnera pas à moins que je définis $iCases moi même ou que je le crée un tableau identique avec que mes valeurs pour éviter les 546 cases à recopier :p. Bonne idée sa. Je vais test sa.

Désolé si je rajoute un "D" majuscule au lieu d'un "d" minuscule mais j'ai l'habitude de commencer ma phrase par une majuscule du moins les noms.

Si j'ai du nouveau pour mes tests, je vous en fait part.
 
Inscrit
15 Avril 2011
Messages
457
Reactions
1
#6
Re: [Demande & Aide] Utilisation de direction pour "Trajet".

d4rkv4n a dit:
@NicoMasterChief, tu as vu où qu'il déclare 4 fois la même variable?
Il a édité son code entretemps.


d4rkv4n a dit:
@Snakeddp, ton code ne veut rien dire.

Code:
   Switch $DirectionToGo
      Case = "droite" Then
               ;Va à droite
      Case = "gauche" Then
               ;Va à gauche
      Case = "haut" Then
               ;Va en haut
      Case = "bas" Then
               ;Va en bas
   EndSwitch
doit être remplacé par :

Code:
 Switch $DirectionToGo
      Case "droite"
               ;Va à droite
      Case "gauche"
               ;Va à gauche
      Case "haut"
               ;Va en haut
      Case "bas"
               ;Va en bas
   EndSwitch
Encore une fois, je te répète d'aller voir la doc' lorsque tu n'es pas sûr de ce que tu fais.
Pour ce qui est du script "_detect_client.au3", je m'y penche dès que possible. Je vais le nettoyer etc, et le réuploader. En attendant, tu n'en as pas besoin.
Commence le code, fais des tests, beaucoup. Entraîne-toi. Puis lorsque j'aurai terminé, tu intégreras mon script dans ton code.
On a résolu cette erreur de syntaxe sur Skype. Maintenant, il a juste un problème avec ton script d'initialisation des cases.
 
Inscrit
24 Février 2012
Messages
55
Reactions
0
#7
Re: [Demande & Aide] Utilisation de direction pour "Trajet".

J'ai un problème avec mon tableau:
Code:
#include <Array.au3>
Dim $iCases[4][9]

	$iNb_Cases_Width  = 300
	$iNb_Cases_Height = 400

For $i = 0 to 3

;Gauche
	$iCases[$i][0] = $iNb_Cases_Width + 4
	$iCases[$i][1] = $iNb_Cases_Height + 47
	$iCases[$i][2] = 0
	$iCases[$i][3] = 1
	$iCases[$i][4] = 0
	$iCases[$i][5] = 0
	$iCases[$i][6] = 0
	$iCases[$i][7] = 0
;Droite
	$iCases[$i][0] = $iNb_Cases_Height + 780
	$iCases[$i][1] = $iNb_Cases_Height + 31
	$iCases[$i][2] = 0
	$iCases[$i][3] = 0
	$iCases[$i][4] = 1
	$iCases[$i][5] = 0
	$iCases[$i][6] = 0
	$iCases[$i][7] = 0
;Haut
	$iCases[$i][0] = $iNb_Cases_Height + 410
	$iCases[$i][1] = $iNb_Cases_Height - 270
	$iCases[$i][2] = 0
	$iCases[$i][3] = 0
	$iCases[$i][4] = 0
	$iCases[$i][5] = 1
	$iCases[$i][6] = 0
	$iCases[$i][7] = 0
;Bas
	$iCases[$i][0] = $iNb_Cases_Height + 310
	$iCases[$i][1] = $iNb_Cases_Height + 275
	$iCases[$i][2] = 0
	$iCases[$i][3] = 0
	$iCases[$i][4] = 0
	$iCases[$i][5] = 0
	$iCases[$i][6] = 1
	$iCases[$i][7] = 0


Next

_ArrayDisplay($iCases)

Il ne fait que la dernière soit:
Code:
	$iCases[$i][0] = $iNb_Cases_Height + 310
	$iCases[$i][1] = $iNb_Cases_Height + 275
	$iCases[$i][2] = 0
	$iCases[$i][3] = 0
	$iCases[$i][4] = 0
	$iCases[$i][5] = 0
	$iCases[$i][6] = 1
	$iCases[$i][7] = 0

Ce qui me fausse grandement mon tableau et j'ai besoin de $iCases[$i] pour faire mes tests. Si quelqu'un peut m'aider ou a une idée du problème, merci de m'en faire part.
 
A

Anonymous

Invité
#8
Re: [Demande & Aide] Utilisation de direction pour "Trajet".

Bonjour, j'ai pas trop compris ce que vous voulez faire, cependant je peux vous répondre sur le "il ne fait que la derniere"

Voici un exemple sans les tableaux qui montre bien ce que vous faites.

Code:
Local $monNombreEstZero = 0
For $i=0 To 3
	$monNombreEstZero = 0
	$monNombreEstZero = $i ; quand il sortira de la boucle le dernier element mit est 3
Next
MsgBox(0,"",$monNombreEstZero)

En manipulant les tableau, c'est environ le même problème vous faites tout dans la même boucle et donc manipuler tout le temps les même index et forcement ce qui sera pris en compte est la dernière itération de la boucle.

Actuellement votre boucle équivaux à écrire ceci;

Code:
For $i=0 To 3
	;Bas
	$iCases[$i][0] = $iNb_Cases_Height + 310
	$iCases[$i][1] = $iNb_Cases_Height + 275
	$iCases[$i][2] = 0
	$iCases[$i][3] = 0
	$iCases[$i][4] = 0
	$iCases[$i][5] = 0
	$iCases[$i][6] = 1
	$iCases[$i][7] = 0
Next
 
Inscrit
24 Février 2012
Messages
55
Reactions
0
#9
Re: [Demande & Aide] Utilisation de direction pour "Trajet".

@Pandi_Panda, merci bien. En gros il faut que je fais quoi car j'ai compris ce que vous voulez dire mais comment faire pour qu'il fait 1 par 1.
On peux ce tutoyer ? en tout cas pour ma part, vous le pouvez.

J'ai essayé comme ceci mais l'erreur qui arrive est maintenant $iNb_Cases_Width + 4 et $iNb_Cases_Height + 31 (ERROR: syntax error) ainsi que pour les autres

For $i = 0

;Gauche
$iCases[$i][0] = $iNb_Cases_Width + 4
$iCases[$i][1] = $iNb_Cases_Height + 47
$iCases[$i][2] = 0
$iCases[$i][3] = 1
$iCases[$i][4] = 0
$iCases[$i][5] = 0
$iCases[$i][6] = 0
$iCases[$i][7] = 0
Next

For $i = 1

;Droite
$iCases[$i][0] = $iNb_Cases_Height + 780
$iCases[$i][1] = $iNb_Cases_Height + 31
$iCases[$i][2] = 0
$iCases[$i][3] = 0
$iCases[$i][4] = 1
$iCases[$i][5] = 0
$iCases[$i][6] = 0
$iCases[$i][7] = 0
Next

For $i = 2

;Haut
$iCases[$i][0] = $iNb_Cases_Height + 410
$iCases[$i][1] = $iNb_Cases_Height - 270
$iCases[$i][2] = 0
$iCases[$i][3] = 0
$iCases[$i][4] = 0
$iCases[$i][5] = 1
$iCases[$i][6] = 0
$iCases[$i][7] = 0
Next

For $i = 3

;Bas
$iCases[$i][0] = $iNb_Cases_Height + 310
$iCases[$i][1] = $iNb_Cases_Height + 275
$iCases[$i][2] = 0
$iCases[$i][3] = 0
$iCases[$i][4] = 0
$iCases[$i][5] = 0
$iCases[$i][6] = 1
$iCases[$i][7] = 0
Next

_ArrayDisplay($iCases)
 
A

Anonymous

Invité
#10
Re: [Demande & Aide] Utilisation de direction pour "Trajet".

mettre une condition, ou un switch est sans doute la voie la plus simple ...

Code:
For $i = 0 to 3
	Switch $i
		case 0
		   $iCases[$i][0] = $iNb_Cases_Width + 4
		   $iCases[$i][1] = $iNb_Cases_Height + 47
		   $iCases[$i][2] = 0
		   $iCases[$i][3] = 1
		   $iCases[$i][4] = 0
		   $iCases[$i][5] = 0
		   $iCases[$i][6] = 0
		   $iCases[$i][7] = 0
		Case 1
		   $iCases[$i][0] = $iNb_Cases_Height + 780
		   $iCases[$i][1] = $iNb_Cases_Height + 31
		   $iCases[$i][2] = 0
		   $iCases[$i][3] = 0
		   $iCases[$i][4] = 1
		   $iCases[$i][5] = 0
		   $iCases[$i][6] = 0
		   $iCases[$i][7] = 0
		case 2
		   $iCases[$i][0] = $iNb_Cases_Height + 410
		   $iCases[$i][1] = $iNb_Cases_Height - 270
		   $iCases[$i][2] = 0
		   $iCases[$i][3] = 0
		   $iCases[$i][4] = 0
		   $iCases[$i][5] = 1
		   $iCases[$i][6] = 0
		   $iCases[$i][7] = 0
		case 3
		   $iCases[$i][0] = $iNb_Cases_Height + 310
		   $iCases[$i][1] = $iNb_Cases_Height + 275
		   $iCases[$i][2] = 0
		   $iCases[$i][3] = 0
		   $iCases[$i][4] = 0
		   $iCases[$i][5] = 0
		   $iCases[$i][6] = 1
		   $iCases[$i][7] = 0
	EndSwitch
Next
 
Inscrit
24 Février 2012
Messages
55
Reactions
0
#11
Re: [Demande & Aide] Utilisation de direction pour "Trajet".

Ah, sa fonctionne, je vous remercie grandement, je cherchais la où il ne fallait pas.
Bon, il ne me reste plus qu'une erreur à gérer sa fait plaisir car après cette erreur, j'aurai fini.
Avant de demandé comment faire, je vais chercher quand même ;)
 

d4rkv4n

Contributeur
Inscrit
6 Mai 2012
Messages
129
Reactions
0
#12
Re: [Demande & Aide] Utilisation de direction pour "Trajet".

Euh... Pourquoi tant modifier ma fonction ??
Elle est opérationnelle, et il n'y a pas de problème avec.

Bien sûr que lorsqu'on sort de la fonction, on aura $iCases[546][1] = 1000 (ou toute autre valeur fixe). C'est le but de la boucle ! Initialiser un tableau à portée globale, réutilisable partout.
Ou bien, je n'ai pas du tout compris ton problème...
 
A

Anonymous

Invité
#13
Re: [Demande & Aide] Utilisation de direction pour "Trajet".

Les gens aiment bien avoir des code "a leurs sauces"l
 

d4rkv4n

Contributeur
Inscrit
6 Mai 2012
Messages
129
Reactions
0
#14
Re: [Demande & Aide] Utilisation de direction pour "Trajet".

Je pense pas que ce soit ça, il débute très fortement en AutoIt, donc je pense pas qu'il veuille modifier ma source.
 
Inscrit
24 Février 2012
Messages
55
Reactions
0
#15
Re: [Demande & Aide] Utilisation de direction pour "Trajet".

@d4rkv4n, je n'ai pas du tout modifié ta source, je m'en sens pas capable mais comme tu l'as dis, il faut que je fasse mes tests. Sans l'initialisation des cases, le tableau n'est pas initialisé donc $iCases n'est pas bon. Il m'a fallut faire un tableau pour faire mes test qui sont concluants mais j'ai une erreur, sans doute que j'ai mal codé ma fonction changement de maps ;)

J'avais fait 4 fois la même fonction pour faire un changement de maps. Gauche, droite, bas et haut. Avec ta fonction, sa fonctionnait parfaitement.
Maintenant que j'ai dû faire mon propre tableau et corriger des choses comme prendre la 1er valeur et non la 7,8 ou 9 èmes pour appuyer.
Je tourne en rond car pour la 6ème colonne, il me donne une erreur.

Code:
    Case  "bas"
Dim $cases_en_bas[1] = [0]
for $i = 0 to UBound($iCases) - 1 
	If $iCases[$i][6] = 1 Then ;Prend la valeur de la 6ème colonnes !
		_ArrayAdd($cases_en_bas, $i) ;Crée un tableau de 2 colonnes.
	EndIf
Next

_ArrayDelete($cases_en_bas, 0) ;Ferme le tableau

$case_to_click_X = $iCases[$cases_en_bas[1]][0] ;L'erreur se produit ici, l'array 
$case_to_click_Y = $iCases[$cases_en_bas[1]][1] + 10

MsgBox(0, "", "X => " & $case_to_click_X & @CRLF & "Y => " & $case_to_click_Y)
MouseClick("left", $case_to_click_X, $case_to_click_Y)
 ;_ArrayDisplay($cases_en_bas)

Je vais refaire les tests avec juste gauche, bas, droite et haut voir si déjà sa cloche dans mon script partout ou juste la fonction "bas". Je suis quasi sur que s'est for $i = 0 to UBound($iCases) - 1 qui produit l'erreur.
 

d4rkv4n

Contributeur
Inscrit
6 Mai 2012
Messages
129
Reactions
0
#16
Re: [Demande & Aide] Utilisation de direction pour "Trajet".

Comme tu le sens, j'espère que tu réussiras.
On est là au cas où ;).
 
Inscrit
24 Février 2012
Messages
55
Reactions
0
#17
Re: [Demande & Aide] Utilisation de direction pour "Trajet".

Ma fonction trajet est 100% opérationnel et ne contient pu aucune erreur. Ma demande est "résolu"
 
Haut Bas