[Ex] Script jouant au démineur
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.
-
- Niveau 4
- Messages : 65
- Enregistré le : sam. 22 déc. 2007 15:46
- Status : Hors ligne
[Ex] Script jouant au démineur
Salut !
voilà un script qui joue au démineur tout seul
il est basé sur la détection de pixel, les chiffres sont reconnus grâce aux couleurs
il va cependant chercher quelques informations dans la mémoire, notamment en début de partie, pour connaitre le nombre de cases découvertes.
Avant de le lancer, veuillez lire ce qui suit :
il faut le configurer !
les lignes les plus importantes sont
$startx = 22
$starty = 111
ces variables correspondent aux coordonnées du milieu de la première case du jeu (la case du coin en haut à gauche)
si vous avez le thème officiel d'XP, les coordonnées à utiliser sont déjà mises.
si votre thème n'est ni XP, ni LSD, utilisez "Autoit Window Info", et soyez précis dans votre mesure !
-Toutes les variables pouvant être changées se trouvent en début de script
-Ne lancez pas 2 fois le script !
en effet la touche PAUSE ne fonctionne que sur 1 script
j'ai laissé l'icône en bas comme indicateur, pensez bien à quitter le précédent avant de relancer le script
enfin, si le script plante (ce qui n'arrive normalement pas si vous avez bien configuré ce qui est indiqué au dessus), il vous suffit d'appuyer sur la touche {PAUSE} pour quitter le script.
Le script fonctionne dans tous les modes (débutant, intermédiaire, personnalisé), avec le nombre de colonnes, de lignes et de mines que vous voulez.
En expert il arrive souvent que le jeu soit bloqué, et que la seule solution soit de découvrir une case au hasard
le script vous en informe, attend que vous ayez découvert une case qui fasse avancer le problème, puis continue tout seul.
Le niveau intermédiaire peut être finit la plupart du temps sans action de votre part
je pense que tout est dit..
Tout est stocké à la fin du post
Vous trouverez :
"demineur v3.au3" le programme en lui même
"NomadMemory.au3" include nécessaire pour la lecture dans la mémoire
winmine.exe c'est le démineur de XP pour les personnes étant sous vista et voulant tester quand même ..
voilà a++
Edit : les fichiers peuvent être récupérés ici :
http://codename44.free.fr/autoit-fr/
et sont : NomadMemory.au3 ; demineur v3.au3 ; et winmine.exe si vous n'êtes pas sous XP
Téléchargements précédent : 388
voilà un script qui joue au démineur tout seul
il est basé sur la détection de pixel, les chiffres sont reconnus grâce aux couleurs
il va cependant chercher quelques informations dans la mémoire, notamment en début de partie, pour connaitre le nombre de cases découvertes.
Avant de le lancer, veuillez lire ce qui suit :
il faut le configurer !
les lignes les plus importantes sont
$startx = 22
$starty = 111
ces variables correspondent aux coordonnées du milieu de la première case du jeu (la case du coin en haut à gauche)
si vous avez le thème officiel d'XP, les coordonnées à utiliser sont déjà mises.
si votre thème n'est ni XP, ni LSD, utilisez "Autoit Window Info", et soyez précis dans votre mesure !
-Toutes les variables pouvant être changées se trouvent en début de script
-Ne lancez pas 2 fois le script !
en effet la touche PAUSE ne fonctionne que sur 1 script
j'ai laissé l'icône en bas comme indicateur, pensez bien à quitter le précédent avant de relancer le script
enfin, si le script plante (ce qui n'arrive normalement pas si vous avez bien configuré ce qui est indiqué au dessus), il vous suffit d'appuyer sur la touche {PAUSE} pour quitter le script.
Le script fonctionne dans tous les modes (débutant, intermédiaire, personnalisé), avec le nombre de colonnes, de lignes et de mines que vous voulez.
En expert il arrive souvent que le jeu soit bloqué, et que la seule solution soit de découvrir une case au hasard
le script vous en informe, attend que vous ayez découvert une case qui fasse avancer le problème, puis continue tout seul.
Le niveau intermédiaire peut être finit la plupart du temps sans action de votre part
je pense que tout est dit..
Tout est stocké à la fin du post
Vous trouverez :
"demineur v3.au3" le programme en lui même
"NomadMemory.au3" include nécessaire pour la lecture dans la mémoire
winmine.exe c'est le démineur de XP pour les personnes étant sous vista et voulant tester quand même ..
voilà a++
Edit : les fichiers peuvent être récupérés ici :
http://codename44.free.fr/autoit-fr/
et sont : NomadMemory.au3 ; demineur v3.au3 ; et winmine.exe si vous n'êtes pas sous XP
Téléchargements précédent : 388
- Fichiers joints
-
- Demineur.zip
- (83.01 Kio) Téléchargé 698 fois
Modifié en dernier par codename44 le mer. 12 mars 2008 18:44, modifié 3 fois.
-
- Niveau 4
- Messages : 65
- Enregistré le : sam. 22 déc. 2007 15:46
- Status : Hors ligne
Re: Script jouant au démineur
script mis à jour, il y avait une erreur qui créait un message d'erreur de temps en temps
désolé
normalement c'est bon
faites moi signe si vous avez encore des erreurs
désolé
normalement c'est bon
faites moi signe si vous avez encore des erreurs
-
- Niveau 4
- Messages : 65
- Enregistré le : sam. 22 déc. 2007 15:46
- Status : Hors ligne
Re: Script jouant au démineur
merci beaucoup pour ton feedback complet, c'est exactement ce que j'attendais !
pour le 1. c'est ok, je ferais ça bientôt
le 2. je ne vois pas du tout ce que tu veux dire
tu peux l'afficher en ajoutant :
_ArrayDisplay($plan)
en dessous de (ligne 116)
;recuperer le "plan" du jeu (tableau a 2 entrées)
$plan = plan()
$plan est mis à jour régulièrement dans le programme
j'y avais pensé mais c'est justement l'algorithme en question que je ne voyais pas du tout ! :p
je vais regarder attentivement ce que tu as mis dans ton message et traduire ça en algo
si tu as d'autres astuces mathématiques comme celle la n'hésites pas !
4. oui ça c'est vrai que c'est embêtant, j'avais pris l'habitude de faire pause une fois que j'avais perdu mais t'as raison, autant le faire automatiquement ça sera plus propre
voilà merci en tous cas, et je repost dès qu'il y a des améliorations
pour le 1. c'est ok, je ferais ça bientôt
le 2. je ne vois pas du tout ce que tu veux dire
la matrice dont tu parles existe, c'est un tableau à double entrée lignes\colonnesSi tu crée une matrice de la taille de ton demineur (en case) tu pourrais appliquer des algorithmes pour pouvoir indiquer les mines ! Un exemple ?
tu peux l'afficher en ajoutant :
_ArrayDisplay($plan)
en dessous de (ligne 116)
;recuperer le "plan" du jeu (tableau a 2 entrées)
$plan = plan()
$plan est mis à jour régulièrement dans le programme
j'y avais pensé mais c'est justement l'algorithme en question que je ne voyais pas du tout ! :p
je vais regarder attentivement ce que tu as mis dans ton message et traduire ça en algo
si tu as d'autres astuces mathématiques comme celle la n'hésites pas !
4. oui ça c'est vrai que c'est embêtant, j'avais pris l'habitude de faire pause une fois que j'avais perdu mais t'as raison, autant le faire automatiquement ça sera plus propre
voilà merci en tous cas, et je repost dès qu'il y a des améliorations
Re: Script jouant au démineur
Le 2 se resoudra grace au 1. Mais au cas ou tu ne fais pas le 1, essaye ton programme en mettant une fenetre sous la fenêtre du démineur. Le probléme est la.
Pour l'algorithme, sa marche pour toutes les cases ! Le chiffre au milieu de la case indique la probabilité des huits cases autour de tomber sur une mine. Ce n'est pas facile à expliquer. Si tu ne saisis pas la chose je ferais des parties avec des schémas
pS: Quant tu remettras à jour n'oublie pas le lien du premier posts et ajoute un post car l'edition ne compte pas comme un nouveau message.
Pour l'algorithme, sa marche pour toutes les cases ! Le chiffre au milieu de la case indique la probabilité des huits cases autour de tomber sur une mine. Ce n'est pas facile à expliquer. Si tu ne saisis pas la chose je ferais des parties avec des schémas
pS: Quant tu remettras à jour n'oublie pas le lien du premier posts et ajoute un post car l'edition ne compte pas comme un nouveau message.
-
- Niveau 4
- Messages : 65
- Enregistré le : sam. 22 déc. 2007 15:46
- Status : Hors ligne
Re: Script jouant au démineur
je suis pas sur d'avoir bien compris la technique mais en l'appliquant sur cet exemple, j'obtiens plus d'1 en chances .. ?
les mines se trouvent en fait en face du 3, et en face du 1
les mines se trouvent en fait en face du 3, et en face du 1
Re: Script jouant au démineur
Erreur de logique !
tu as oublié de diviser chaque opération par 4 ! car tu as 4 cases inconnues donc 1 chance sur 4 d'avoir une chance sur...
ce qui donne en partant de la case du haut
->0.083
->0.25
->0.375
->0.291
Apparement la mine avait plus de chance de se trouver en face du 1 et du 2 !
Bon c'est comme au loto tu peux avoir 99% de chance de perdre et tomber sur le 1%...donc dans ce cas la il faut sauter et revenir quand les probabilitées seront satisfaisantes !
tu as oublié de diviser chaque opération par 4 ! car tu as 4 cases inconnues donc 1 chance sur 4 d'avoir une chance sur...
ce qui donne en partant de la case du haut
->0.083
->0.25
->0.375
->0.291
Apparement la mine avait plus de chance de se trouver en face du 1 et du 2 !
Bon c'est comme au loto tu peux avoir 99% de chance de perdre et tomber sur le 1%...donc dans ce cas la il faut sauter et revenir quand les probabilitées seront satisfaisantes !
-
- Niveau 4
- Messages : 65
- Enregistré le : sam. 22 déc. 2007 15:46
- Status : Hors ligne
Re: Script jouant au démineur
J'ai mis à jour le téléchargement du premier post
le script se quitte quand on perd
--
j'avoue avoir du mal à imaginer comment mettre ça sous forme de script
il faut arriver à déterminer la zone où effectuer les calculs de probas
pourrais tu me donner un autre exemple ?
merci
le script se quitte quand on perd
--
j'avoue avoir du mal à imaginer comment mettre ça sous forme de script
il faut arriver à déterminer la zone où effectuer les calculs de probas
pourrais tu me donner un autre exemple ?
merci
Re: Script jouant au démineur
Bien, on imagine que on lance ton script et la il "bloque". Tu appelles alors une fonction manifique qui va mettre en place l'algorithme trouvé sur le forum de la communauté
Voila le screen:
Soit 1-2-3 les cases connues et A-B-C les cases cachées.
Voila le screen:
Soit 1-2-3 les cases connues et A-B-C les cases cachées.
- On analyse du point de vue de la case 2:
- Dans les 8 cases qui entourent la case 2, 3 sont cachées. Si on isole cette partie on considére que on a une 2 chance sur 3 de tomber sur une mine ! Donc pour A et B et C la chance globale est 2/3. Si on prend une case en particulier vu qu'il y a 3 cases on a 2/6=1/3.
Ce qui correspond bien puisque 1/3 * 3 cases = 1. Si on decouvre toutes les cases, forcement on perd.
Donc nous avons A=B=C=1/3.
On peut raisonner aussi avec la case 1. Celle si n'a que une seul case et une seule mine donc donne à la case A la probabilité de 1/3 de contenir une mine. De même pour la case C. Car nous sommes toujours du point de vue de 2. Donc 1 mine pour 3 cases cachées = 1/3.
- Dans les 8 cases qui entourent la case 2, 3 sont cachées. Si on isole cette partie on considére que on a une 2 chance sur 3 de tomber sur une mine ! Donc pour A et B et C la chance globale est 2/3. Si on prend une case en particulier vu qu'il y a 3 cases on a 2/6=1/3.
- On analyse la case 1 et 3:
- La case 1 n'a qu'une seule case dans son entourage et n'est pas influencée par une autre probabilité comme la case 2. Donc la probabilité est de 1. De meme pour la case 3. Ce qui nous donne 2 mines sur.
- On revient à la case 2:
- 2 des cases (A et C) sont maintenant repertoriées comme minées. Donc la case B est sur..on clique...
-
- Niveau 4
- Messages : 65
- Enregistré le : sam. 22 déc. 2007 15:46
- Status : Hors ligne
Re: Script jouant au démineur
dans ton exemple, ce qui a permis de cliquer à coup sûr sur la case B, était le fait qu'on avait 100% de chance qu'il y ait : une mine en A et une mine en C, après l'étude des cases 1 et 3.
Or ceci est déjà fait par le script, toutes les probabilités de 1/1 sont déja gérées, et ce cas n'aurait pas été considéré comme "bloqué" par le script actuel
Voilà comment fonctionne le script :
-il découvre dans un premier temps un certain nombre de cases, au hasard.
-il fait le plan du jeu (tableau à double entrée) en le remplissant avec les symboles suivants :
1,2,3,4,5,6 pour le nombre de mines, 0 pour case découverte sans rien, * pour case non découverte et ! pour mine déclarée sur cette case
-ensuite il va étudier tous les nombres de la manière suivante :
prenons exemple sur le 1
il cherche le premier "1" du tableau
il compte le nombre de case non decouvertes autour
il compte le nombre de mines deja déclarées autour
donc si le nombre de mines deja déclarées est de 1, il va découvrir toutes les autres
si le nombre de cases non decouvertes est de 1, et qu'il n'ya pas de mines deja signalées, il va mettre une mine sur cette case restante.
dès qu'il met une mine, il fais une vérification avec le clic molette sur les cases alentours pour découvrir tout ce qui est "decouvrable".
en suite il passe au 1 suivant, etcc..
ensuite il s'occupe des 2,3,4,5,6
une fois qu'il a finit de vérifier tous les nombres, il y a 2choix :
-soit le nombre de cases decouvertes ou de mines à changé depuis le lancement de la boucle et dans ce cas il recommence la même chose
-soit il n'ya pas eu d'avancement dans la derniere boucle, et dans ce cas il considère le jeu comme bloqué
une fois bloqué, il lance la fonction "check" qui vérifie que toutes les cases pouvant être decouvertes le sont bien
c'est à dire qu'il compte le nombre de mines et le nombre de cases non decouvertes autour de chaque case afin de vérifier, par exemple, qu'un 2 qui aurait 2 mines signalées n'ait pas de cases non decouvertes autour de lui.
si la fonction check n'a pas découvert de cases, alors il demande à l'utilisateur de debloquer le jeu
si la fonction check a découvert au moins une case, il se considère comme débloqué et refait la boucle principale en vérifiant tous les nombres
etc.. jusqu'à gagner ou perdre
donc, une fois les 2 mines placées en étudiant les 1, la case B sera forcement découverte à un moment ou un autre
ce que je te propose :
tu fais tourner le script en mode expert, et dès qu'il est bloqué et que tu as une solution, même l'ajout d'UNE mine sûre, tu m'expliques comment tu as raisonné
je vois bien que tu as un fait un bel effort d'explication dans ton dernier message, mais l'exemple n'est pas imaginable malheureusement
voilà désolé d'être long à comprendre et merci pour toutes tes réponses !
Or ceci est déjà fait par le script, toutes les probabilités de 1/1 sont déja gérées, et ce cas n'aurait pas été considéré comme "bloqué" par le script actuel
Voilà comment fonctionne le script :
-il découvre dans un premier temps un certain nombre de cases, au hasard.
-il fait le plan du jeu (tableau à double entrée) en le remplissant avec les symboles suivants :
1,2,3,4,5,6 pour le nombre de mines, 0 pour case découverte sans rien, * pour case non découverte et ! pour mine déclarée sur cette case
-ensuite il va étudier tous les nombres de la manière suivante :
prenons exemple sur le 1
il cherche le premier "1" du tableau
il compte le nombre de case non decouvertes autour
il compte le nombre de mines deja déclarées autour
donc si le nombre de mines deja déclarées est de 1, il va découvrir toutes les autres
si le nombre de cases non decouvertes est de 1, et qu'il n'ya pas de mines deja signalées, il va mettre une mine sur cette case restante.
dès qu'il met une mine, il fais une vérification avec le clic molette sur les cases alentours pour découvrir tout ce qui est "decouvrable".
en suite il passe au 1 suivant, etcc..
ensuite il s'occupe des 2,3,4,5,6
une fois qu'il a finit de vérifier tous les nombres, il y a 2choix :
-soit le nombre de cases decouvertes ou de mines à changé depuis le lancement de la boucle et dans ce cas il recommence la même chose
-soit il n'ya pas eu d'avancement dans la derniere boucle, et dans ce cas il considère le jeu comme bloqué
une fois bloqué, il lance la fonction "check" qui vérifie que toutes les cases pouvant être decouvertes le sont bien
c'est à dire qu'il compte le nombre de mines et le nombre de cases non decouvertes autour de chaque case afin de vérifier, par exemple, qu'un 2 qui aurait 2 mines signalées n'ait pas de cases non decouvertes autour de lui.
si la fonction check n'a pas découvert de cases, alors il demande à l'utilisateur de debloquer le jeu
si la fonction check a découvert au moins une case, il se considère comme débloqué et refait la boucle principale en vérifiant tous les nombres
etc.. jusqu'à gagner ou perdre
donc, une fois les 2 mines placées en étudiant les 1, la case B sera forcement découverte à un moment ou un autre
ce que je te propose :
tu fais tourner le script en mode expert, et dès qu'il est bloqué et que tu as une solution, même l'ajout d'UNE mine sûre, tu m'expliques comment tu as raisonné
je vois bien que tu as un fait un bel effort d'explication dans ton dernier message, mais l'exemple n'est pas imaginable malheureusement
voilà désolé d'être long à comprendre et merci pour toutes tes réponses !
Re: [Ex] Script jouant au démineur
Je te prendrais un screen en mode expert mais j 'ai pris le cas de la probabilité 1 parceque c'etait facile à expliquer. Tu appliques cette methode partout et sa marche !
Re: [Ex] Script jouant au démineur
Bonjour,
Désole d'écrire un post en Juillet pour une discussion datant de Janvier. Mais un cas "simple" a ajouter est le cas des case ne pouvant pas contenir de bombe
par exemple
1 ?
1 ?
3 ?
! !
Dans ce cas la première ligne ne contient pas de bombe. Un raisonnement par l'absurde le prouve
si elle en contient une alors la deuxième ligne ne peut pas en contenir (sinon les 1 sont faux) donc la troisième ligne a une bombe (sinon le 3 est faux) et par consequent pas de bombe en face du premier 1
Désole d'écrire un post en Juillet pour une discussion datant de Janvier. Mais un cas "simple" a ajouter est le cas des case ne pouvant pas contenir de bombe
par exemple
1 ?
1 ?
3 ?
! !
Dans ce cas la première ligne ne contient pas de bombe. Un raisonnement par l'absurde le prouve
si elle en contient une alors la deuxième ligne ne peut pas en contenir (sinon les 1 sont faux) donc la troisième ligne a une bombe (sinon le 3 est faux) et par consequent pas de bombe en face du premier 1
Re: [Ex] Script jouant au démineur
Bravo:) Je n'ai jamais joué à ce jeu alors je laisse les speicialistes te répondre
-
- Niveau 4
- Messages : 93
- Enregistré le : sam. 03 mai 2008 01:27
- Status : Hors ligne
Re: [Ex] Script jouant au démineur
mais http://www.autoitscript.fr/forum/viewto ... ?f=3&t=145
et le demineur est un jeu donc pourquoi vous le laissez comme ça
et le demineur est un jeu donc pourquoi vous le laissez comme ça
- Tlem
- Site Admin
- Messages : 11773
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [Ex] Script jouant au démineur
La différence est toute simple :
Dans ce cas précis, le programme dont il est question joue tout seul au démineur de Windows, et ne permet pas de tricher sur un jeu en ligne et donc de léser d'autres joueurs.
Il ne permet pas non plus de gagner quoi que ce soit en dehors de ce jeux qui est local !!!
Suite aux différents mails privés que j'ai reçu concernant la clôture de post en relation avec un bot, et les différents débats incessants concernant les scripts d'automations en rapport avec des jeux en ligne, je pense très sérieusement, à rajouter dans les règles l'exclusion de scripts en rapport direct avec un jeux quel qu'il soit.
Dans ce cas précis, le programme dont il est question joue tout seul au démineur de Windows, et ne permet pas de tricher sur un jeu en ligne et donc de léser d'autres joueurs.
Il ne permet pas non plus de gagner quoi que ce soit en dehors de ce jeux qui est local !!!
Suite aux différents mails privés que j'ai reçu concernant la clôture de post en relation avec un bot, et les différents débats incessants concernant les scripts d'automations en rapport avec des jeux en ligne, je pense très sérieusement, à rajouter dans les règles l'exclusion de scripts en rapport direct avec un jeux quel qu'il soit.
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: [Ex] Script jouant au démineur
Ca serait quand même dommage de ne pas différencier les jeux en locals des jeux en resaux.
Un jeu en local "botté" ne dérenge personne, mais si tu pense qu'il y aura après assez d'elements pour les malins pour qu'ils puissent reussir leur bot destiné à un jeu en réseau, alors je suis d'accord pour tout interdire, même si comme toujours 2 - 3 "emmerdeurs" pourissent la vie au plus grand nombre...
Un jeu en local "botté" ne dérenge personne, mais si tu pense qu'il y aura après assez d'elements pour les malins pour qu'ils puissent reussir leur bot destiné à un jeu en réseau, alors je suis d'accord pour tout interdire, même si comme toujours 2 - 3 "emmerdeurs" pourissent la vie au plus grand nombre...
- Tlem
- Site Admin
- Messages : 11773
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [Ex] Script jouant au démineur
Le problème n'est pas là.timmalos a écrit :mais si tu pense qu'il y aura après assez d'elements pour les malins pour qu'ils puissent reussir leur bot destiné à un jeu en réseau
Chacun est libre de faire ce qu'il veut (Y compris les Bots et même d'essayer d'infiltrer le KGB ou la CIA ).
La seule chose que je demande, c'est de poser les questions de telle manière qu'on ne puisse faire la corrélation avec les lignes de code en question et le développement d'un script malveillant ou assimilé à un bot de jeux en réseau.
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é".