[R] Multitache sous AutoIt
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
- TommyDDR
- Modérateur

- Messages : 2116
- Enregistré le : mar. 22 juil. 2008 21:55
- Localisation : Nantes
- Status : Hors ligne
[R] Multitache sous AutoIt
Bonjour,
Tout d'abord je tiens à dire que j'ai recherché un sujet traitant de ma demande avant de posté ^^ (le sujet sur _Adlib ne peut me convenir dans mon cas)
Voila, je me suis lancé dans la création d'un petit jeu dans lequel, lorsqu'on bouge un personnage, cela lance une petite animation de quelques millisecondes (~= 200ms)
mais je voulais faire un jeu multijoueur et donc pouvoir bougé 2 personages en même temps.
Je voudrais que le processeur partage équitablement son temps entre les 2 fonctions. Je ne veux pas qu'une animation DOIT se finir avant de pouvoir lancer l'autre.
Merci.
Tout d'abord je tiens à dire que j'ai recherché un sujet traitant de ma demande avant de posté ^^ (le sujet sur _Adlib ne peut me convenir dans mon cas)
Voila, je me suis lancé dans la création d'un petit jeu dans lequel, lorsqu'on bouge un personnage, cela lance une petite animation de quelques millisecondes (~= 200ms)
mais je voulais faire un jeu multijoueur et donc pouvoir bougé 2 personages en même temps.
Je voudrais que le processeur partage équitablement son temps entre les 2 fonctions. Je ne veux pas qu'une animation DOIT se finir avant de pouvoir lancer l'autre.
Merci.
Modifié en dernier par TommyDDR le jeu. 31 déc. 2009 11:34, modifié 1 fois.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Re: [..] Multitache sous AutoIt
Donc Impossible avec Autoit.
- Tlem
- Site Admin

- Messages : 11798
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Multitache sous AutoIt
Tout dépend du codage de l'application. 
La nouvelle fonction AdlibRegister() de la nouvelle version de AutoIt permet de gérer plusieurs fonctions, donc si votre code est bien fait, vous devriez peut être arriver à faire quelque chose qui permet d'équilibrer le mouvement entre deux fonctions.
Évidement, si l'une des fonctions venait à être bloquée sur l'exécution d'un code, alors c'est tout le code qui serait bloqué.
La nouvelle fonction AdlibRegister() de la nouvelle version de AutoIt permet de gérer plusieurs fonctions, donc si votre code est bien fait, vous devriez peut être arriver à faire quelque chose qui permet d'équilibrer le mouvement entre deux fonctions.
Évidement, si l'une des fonctions venait à être bloquée sur l'exécution d'un code, alors c'est tout le code qui serait bloqué.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
- TommyDDR
- Modérateur

- Messages : 2116
- Enregistré le : mar. 22 juil. 2008 21:55
- Localisation : Nantes
- Status : Hors ligne
Re: [..] Multitache sous AutoIt
L'animation se fait dans un for (bloquant) qui bouge l'image et la modifie.
Donc, aucun moyen de faire du vrai multitâche sous autoit :/
(N'y a t-il pas moyen de créer des thread sous autoit comme en C/C++ ?)
Donc, aucun moyen de faire du vrai multitâche sous autoit :/
(N'y a t-il pas moyen de créer des thread sous autoit comme en C/C++ ?)
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
- Tlem
- Site Admin

- Messages : 11798
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Multitache sous AutoIt
Pourquoi diable voulez-vous obligatoirement passer par une boucle For/Next. Une fonction et AdlibRegister() sont capable de faire la même chose mais sans blocage du code. 
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
- TommyDDR
- Modérateur

- Messages : 2116
- Enregistré le : mar. 22 juil. 2008 21:55
- Localisation : Nantes
- Status : Hors ligne
Re: [..] Multitache sous AutoIt
Comment envoyer un paramètre à une fonction appelé par AdlibRegister ?
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Re: [..] Multitache sous AutoIt
Je ne crois pas que ca soit possible.
Cependant tu peux utiliser une variable globale et faire
Global $parametre = "1"
Puis a chaque lancement de ta fonction tu regarde $parametre et fait en fonction de ca.
Tu peux egalement regarder les liens ci-dessous mais attention aux maux de tête, c'est nettement plus poussé, monoceres et trancexx ont essayé de bosser la dessus.
Necessite pour comprendre de connaitre et maitriser les pointeurs.
http://www.autoitscript.com/forum/index ... ntry685983
http://www.autoitscript.com/forum/index ... ntry710924
http://www.autoitscript.com/forum/index ... ntry686626
Aperemment ca serait du vrai multi-thread.
Sinon, sur le lien suivant (http://www.autoitscript.com/forum/index ... ntry716515) ca donne egalement la solution du multi-process, beaucoup plus facile à creer.
Cependant tu peux utiliser une variable globale et faire
Global $parametre = "1"
Puis a chaque lancement de ta fonction tu regarde $parametre et fait en fonction de ca.
Tu peux egalement regarder les liens ci-dessous mais attention aux maux de tête, c'est nettement plus poussé, monoceres et trancexx ont essayé de bosser la dessus.
Necessite pour comprendre de connaitre et maitriser les pointeurs.
http://www.autoitscript.com/forum/index ... ntry685983
http://www.autoitscript.com/forum/index ... ntry710924
http://www.autoitscript.com/forum/index ... ntry686626
Aperemment ca serait du vrai multi-thread.
Sinon, sur le lien suivant (http://www.autoitscript.com/forum/index ... ntry716515) ca donne egalement la solution du multi-process, beaucoup plus facile à creer.
- Tlem
- Site Admin

- Messages : 11798
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Multitache sous AutoIt
Il est quand même bien plus simple de jouer avec quelques variables globales que de s'essayer au multi-threading. 
Si vous voulez quelque chose de plus sérieux, changez de langage.
AutoIt est là pour sa simplicité, mais il y à des contraintes ...
Si vous voulez quelque chose de plus sérieux, changez de langage.
AutoIt est là pour sa simplicité, mais il y à des contraintes ...
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
- TommyDDR
- Modérateur

- Messages : 2116
- Enregistré le : mar. 22 juil. 2008 21:55
- Localisation : Nantes
- Status : Hors ligne
Re: [..] Multitache sous AutoIt
J'ai finalement opté pour des variables globales associé à l'UDF _AdbliEnable (permettant d'envoyer des paramètres à une fonction. Et me suis fait ch**r à virer la boucle for ^^
Merci.
Merci.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
- Tlem
- Site Admin

- Messages : 11798
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [R] Multitache sous AutoIt
Si vous utilisez la dernière version de AutoIt, vous n'aurez pas besoin de l'UDF _AdlibEnable.
De plus votre script ne risquera pas d'être obsolète trop vite.
De plus votre script ne risquera pas d'être obsolète trop vite.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
- TommyDDR
- Modérateur

- Messages : 2116
- Enregistré le : mar. 22 juil. 2008 21:55
- Localisation : Nantes
- Status : Hors ligne
Re: [R] Multitache sous AutoIt
Et dans un élan de bonté, je fourni le code source ^^
Pour un bon affichage des images : Dézipez le .rar, compilez le .au3 et lancez le .exe (les images sont mises en FileInstall() donc il faut compiler)
(/!\ avec la nouvelle version de SciTe, celle sans AdLibEnable, il y a deux erreurs à la "compilation" (Touche F5) mais cela n'empêche pas le fonctionnement du jeu
Tlem, si tu/vous as/avez une solution pour palier à ce problème, je suis tout ouïe)
Prochaine étape : Multijoueur online ^^
Impr : But du jeu : Ramasser plus de pièces que l'autre joueur.
Touches Joueur 1 : les 4 flèches directionnelles
Touches Joueur 2 : 4 5 6 8 du pavé numérique
Pour un bon affichage des images : Dézipez le .rar, compilez le .au3 et lancez le .exe (les images sont mises en FileInstall() donc il faut compiler)
(/!\ avec la nouvelle version de SciTe, celle sans AdLibEnable, il y a deux erreurs à la "compilation" (Touche F5) mais cela n'empêche pas le fonctionnement du jeu
Tlem, si tu/vous as/avez une solution pour palier à ce problème, je suis tout ouïe)
Prochaine étape : Multijoueur online ^^
Impr : But du jeu : Ramasser plus de pièces que l'autre joueur.
Touches Joueur 1 : les 4 flèches directionnelles
Touches Joueur 2 : 4 5 6 8 du pavé numérique
- Fichiers joints
-
- Jeu.rar
- (60.23 Kio) Téléchargé 102 fois
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
- Tlem
- Site Admin

- Messages : 11798
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [R] Multitache sous AutoIt
Vos deux erreurs de compilation sont liées à l'utilisation des fonctions AdlibEnable et AdlibDisable.
Pour moi, cela signifie que vous utilisez la dernière version de AutoIt, or pour celui-ci ces deux fonctions ne sont plus sensée exister (Voir les news de ce lien : http://www.autoitscript.fr/forum/viewto ... =22&t=4317).
Donc ou vous faites abstraction de ces erreurs, mais dans une future version de AutoIt ces fonctions ne seront plus du tout supportées, ou bien vous mettez à jour votre script pour remplacer l'utilisation de l'UDF _AdlibEnable() par les nouvelles fonctions de AutoIt (respectivement : AdlibRegister() et AdlibUnRegister() ).
Je vous conseil vivement la dernière solution.
Pour moi, cela signifie que vous utilisez la dernière version de AutoIt, or pour celui-ci ces deux fonctions ne sont plus sensée exister (Voir les news de ce lien : http://www.autoitscript.fr/forum/viewto ... =22&t=4317).
Donc ou vous faites abstraction de ces erreurs, mais dans une future version de AutoIt ces fonctions ne seront plus du tout supportées, ou bien vous mettez à jour votre script pour remplacer l'utilisation de l'UDF _AdlibEnable() par les nouvelles fonctions de AutoIt (respectivement : AdlibRegister() et AdlibUnRegister() ).
Je vous conseil vivement la dernière solution.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
- TommyDDR
- Modérateur

- Messages : 2116
- Enregistré le : mar. 22 juil. 2008 21:55
- Localisation : Nantes
- Status : Hors ligne
Re: [R] Multitache sous AutoIt
J'ai voulu implémenté ces fonctions mais j'ai besoin de passer des paramètres aux fonctions appelés et je n'ai pas trouver comment faire avec AdlibRegistrer :/
Les 2 persos peuvent bouger dans la même direction et donc une variable global ne peut convenir.
Les 2 persos peuvent bouger dans la même direction et donc une variable global ne peut convenir.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
- Tlem
- Site Admin

- Messages : 11798
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [R] Multitache sous AutoIt
C'est par-ce que vous n'avez pas bien cherché. 
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Re: [R] Multitache sous AutoIt
Vous pouvez mettre votre jeu dans la partie Exemples. C'est un super exemple pour d'autres qui seraient tenté de faire un jeu en Autoit.

