Discuss Scratch

  • Discussion Forums
  • » Français
  • » Jeu de Dames. International Checkers Essayez de battre l'IA en mode amélioré si vous l'osez ! [RSS Feed]
Itharius
Scratcher
1000+ posts

Jeu de Dames. International Checkers Essayez de battre l'IA en mode amélioré si vous l'osez !

Bonjour,

J'ai le plaisirs et la fierté de vous présenter mon dernier projet: un jeu de Dames International.
J'ai vu pas mal de checkers sur Scratch mais je crois que c'est le premier International Checkers sur Scratch

Après 1 mois de Code, j'ai atteint les premiers objectifs que je m'étais fixé au début du projet et donc je me permets de le mettre en partage même si je compte encore développer plusieurs chose et notamment concernant l'IA.

Oui, il s'agit d'un mode 1 joueur, 1 mode 2 joueur et même un mode Edition !

Le programme gère toutes les règles du jeu international, notamment l'obligation de prise (évidemment) mais également la rafle la plus longue.
Pour le moment , le programme vous laisse jouer un coup qui n'est pas la rafle la plus longue possible à condition bien entendu qu'il s'agisse d'une prise si vous en avez l'opportunité.
Le programme détermine et joue la rafle la plus longue , jusqu'à 5 prises avec un pion et 4 avec une Dame!!
Celà ne veut pas dire que s'il a la possibilité après avoir déterminé et pris 5 pions il ne prendra pas un sixième pion possible mais que si il a la possibilité de prendre un chemin qui lui permettrai de prendre 7 pions et un autre 6 pions peut-être il choisira le chemin avec les 6 pions au lieu de choisir le chemin avec les 7 pions.
A ce stade de développement de l'IA, ces situations ne se produiront certainement pas en partie mode 1 joueur. L'IA reste malheureusement pour le moment assez faible mais j'ai encore quelques idées pour l'améliorer. Si vous jetez un coup d'oeil au code, vous verrez tout de même que l'IA possède une certaine hiérarchie des priorités, donc même si elle est faible on peut quand même parler d'IA ^^

Je me suis fait un petit carnet de bord au fur et à mesure du développement et je profite de ce post pour l'intégrer à cette présentation.
J'attends avec impatience votre visite. N'hésitez pas à cliquer sur le coeur ou l'étoile, je crois que c'est vraiment un projet qui le mérite

https://scratch.mit.edu/projects/128815647/




Mercredi : partie bloquée ajoutée . La première version du projet est prête à être partagée je crois 
Bug détecté et ajouté dans la partie du script déterminer un coup pour les Noirs. S’il n’y avait plus qu’une reine noire en avant dernière ligne. Le script ne s’exécutait pas parce que j’avais mis répéter jusqu’à id du pion noir cliqué = longueur de grade noir au lieu de répéter longueur de grade noir fois  ( j’étais en mode édition et je n’avais créer qu’une seule reine noire…)
Le script des déplacement reine rend hyper vulnérable un face à face reine vs reine il faudra améliorer ça.

Mardi : Bug détecté et corrigé dans le déterminer un coup pour les noirs. Si la case choisie au hasard était dans la liste des cases déjà testées, il rechoisissait une case qui n’était pas dans la liste et on dirait qu’il ne déterminait pas à nouveau un coup qui était possible. Espérons que c’était la raison d’un pion qui avait fait un mouvement de 2 cases SO sans passer par-dessus un pion …
Amélioration du déterminer une case de destination lorsqu’une case sélectionnée est possible avec la création de la liste case de destination sure après un coup obligatoire. Si cette liste est >0 la case de destination est choisie prioritairement dans cette liste. Cela consiste pour les dames lorsqu’elles ne peuvent plus faire une deuxième prise ( donc également pour les prises uniques) à choisir une case de destination avec danger=0.
Amélioration du scripte la case numéro de la case peut-elle être mangée par un pion couleur avec prise en compte des bords (sup à 0 et inf à 100 + bords détectés)
Calcul de + long parcours avec les pions bug détecté  après une dernière prise NO étant donné qu’en p4 il avait une possibilité de prise SE, il sautait de la position 5 à 6 , mouvement évidemment impossible.Bug corrigé en ajoutant un calcul à zéro en p5. Dans l’absolu il faudrait pour les blancs commencer par NO NE SE SO et pour les Noirs SE SO NO NE afin de privilégier les mouvements vers la ligne 1 pour le Noir et la ligne 10 pour le blanc.
Pas encor trouvé de truc qui marche à tt les coups pour détecter les parties bloqués.
Lundi : Bug détecté suite à l’amélioration de l’IA pour l’utilisation de la Dame. Modification des scripts déplacement blanc et Noir ( mettre le grade à l’élément ID du pion couleur du grade couleur)
Bug détecté et corrigé pour l’utilisation du script la case numéro peut-elle se faire manger par un pion couleur.
Bug détecté suite à l’amélioration de l’IA chercher un pion noir en danger, notamment en cas de reine sur l’ajout de la case sélectionnée possible( utiliser la longueur des cases possibles direction > 0 et non un pion Noir à prendre sup à Zéro.) reste à tester si un pion noir est vraiment en danger s’’il est détecté ou non en cas de danger par une reine ( il l’est. En revanche, rien n’est codé pour tenter de le faire sortir de la diagonale).

Les déterminer pion à prendre, je veux changer ça en rajoutant une variable et mettre le pn à prendre si la variable est bonne pour éviter les emballements sur les pn à prendre. J’ai modifié les script pour les déterminer pion noir à prendre en ajoutant la condition si sup à 20, mettre à zero et arrêter le script. C’est peut-être ce qu’il y a encore de mieux à faire pour éviter un rejouer d’une dame blanche sans prise de pion tout simplement parce que le pion noir à prendre correspondant à son déplacement s’est emballé. J’ai remarqué que les emballement sont également provoquer pendant le checking surement pas assez rapide pour déterminer la case à prendre correspondante.
Pour les dames en danger , se positionner sur une case sans danger. Ajouté.
La case numéro peut-elle se faire manger par un pion couleur ? il faut rajouter les bords du plateau. C’est fait.

Dimanche : Je pense que je vais remettre le supprimer du dernier coup des dames car en cas de prise supérieur à son calcul , ça pourrait ne pas aller sur une case qui permette une deuxième prise donc autant refaire le calcul des cases possibles à ce moment là.
IA améliorée. Si l’ordi possède une Dame, il doit l’utiliser pour se positionner dans l’optique de prendre un pion au prochain coup. Si cette position entraine le fait de se faire bouffer sa dame par un pion, il ne faut pas y aller. Script la case numéro de la case peut-elle se faire manger par un pion couleur

Samedi : Son souffler n’est pas jouer ajouté dans le mode 2 joueurs. Il faut réfléchir si j’oblige ou pas le calcul de la plus longue prise dans le mode 2 joueurs, pour l’instant, je laisse comme ça.
Il faut un son au blanc et un son au Noir. C’est fait. Son Victoire des Noirs en Mode 1 et 2 joueurs ajouté.
L’IA Noir est améliorée concernant les pions prêts à se promouvoir  !!
Il y a un truc sur la promotion des pions noirs elle ne se fait pas direct entre le moment des Noirs et des blancs mais pendant le moment des blancs.
Il faudra trouver un truc pour les fins de partie en mode bloqué.
IA Noir améliorée. Utilisation du coup obligatoire pour les blancs pour repérer les pions Noirs en danger. Le temps de réflexion pour les Noirs est du coup bcp plus long mais c’est forcément un début pour arrêter de choisir des coups au hasard. L’IA reste malheureusement encore très faible.
Bug détecté : si un pion Noir peut se faire manger par une reine, il n’est pas détecté corrigé.
Parfois lorsqu’il est supprimé le clone ne marque pas supprimé dans ses coordonnées :’(
Vendredi :
Un bug de plus de corrigé dans le script du calcul de la plus longue prise possible pour le Noir. Une dame qui prenait 2 pions se faisait doubler par une simple prise par un pion. Mauvaise variable, c’est rectifié  !!
Ajout des directions interdites en position X dans le calcul du nombre de pions couleur à manger pour les Dames.
Le je réfléchis lors de la suite du coup obligatoire pour les Noirs a été déplacé.
Bug repéré et corrigé dans le déterminer un mouvement possible pour le Noir. Du coup , le mode edition devient parfaitement fonctionnel ! 
La dame blanche n’a pas fini son mouvement SE alors qu’il aurait du aboutir à une fin de tour (mouvement normal sans prise de pion). Après réflexion, je me suis aperçu que le pion noir SE s’était emballé donc pas =0. Les emballements de pion à prendre sont surement le dernier bug à comprendre pour purger totalement le projet.
J’ai trouvé le bug du pourquoi il déterminait parfois correctement ou non le meilleur coup avec les Dames et ça n’avait donc rien à voir avec le dernier coup , j’ai donc corrigé le pb et supprimé le fait d’effacer le dernier coup de la liste best gps 
Calcul du nombre pions à manger en p3 par les Dames codé, j’espère qu’il n’a pas de bugs…à tester.

Jeudi 24/11: le changement des variables n’a rien à voir, c’est la condition pour effacer tout de la liste du calcul des pions mangés que j’avais hélas mal placé… il faudra également la modifier donc pour les dames. J’ai fait plusieurs tests maintenant ça marche bien et ça ne fait pas des parcours impossibles pour les pions….Non encor des sauts sur des pions qui ont déjà été mangés… :’(
Je pense que c’est plutôt une valeur de direction interdite en position X qu’il faut rajouter. C’est corrigé ! ouf !
Le calcul des reines est bien parti. Un bug corrigé pour le premier déplacement après avoir déterminé un meilleur calcul des reines. Il faut dans le rejouer déterminer chaque pion qui va être pris. Il manque également un mouvement lors de la copie du best gps. ( il est correctement déterminé la première fois ) c’est bizarre parfois selon les config, le dernier gps est bien déterminé et d’autre fois il est vide. J’ai résolu le truc en le supprimant mais il faudrait creuser ça. Il y a encore un bug qui se produit parfois lors d’un déterminer si un mouvement est possible pour les noirs avec une dame (noir donc). Le truc de la case 58 c’est à chaque fois que ça envoie vers une case 0 (coord 0,0) qui est dans la zone de la case 58. L’IA est vraiment très faible, il faut l’améliorer il y a donc encore quelques petits bugs mais le projet est redevenu assez …présentable 
Je pense qu’il y a également un truc à mettre dans le calcul de la plus longue prise pour les dames avec direction interdite en position x comme pour les pions.
Il faut également rajouter un coup de calcul pour les dames.
Le son victoire des noirs.
Des sons pour le mode 2 joueurs.
L’option mode édition dans le menu.
Déplacer le je réfléchis lors des coups obligatoire avant la prise de décision.
Pour améliorer l’IA faire jouer un pion qui peut se promouvoir en reine.
Quand j’aurais fait tout ça, le projet sera devenu présentable même si des bugs persisteront (genre le mystère de la case 58 lors des déplacement des dames bien que ça a surement avoir avec une case de destination qui devient vide ou une case sélectionnée qui devient vide)

Mercredi : amélioration du script sur la condition de victoire. Si le dernier pion avait l’ID 20, la victoire était attribuée sans qu’il soit encor pris. C’est corrigé 
Le déterminer le meilleur coup pour un pion a un bug il fait des chemins impossibles :’(
1ere modif, la réécriture des listes ne doit se faire qu’au moment d’écrire un nouveau pion mangé.
2eme modif tester les directions dans un mouvement horaire en commençant par le NO NE SE SO. 8Il faudra également le changer au niveau des reines si ça marche pour les pions.
Après avoir relancé une partie il semble que le déterminer le meilleur coup pour un pion fonctionne, ça ne marche pas pour les dames par contre  ça calcule les 2 premiers pions et ça s’arrête de calculer.Nan en fait il marche tjs pas et fait tjs des chemins impossible surtout qd il y a différents chemins à partir d’un meme pion :’(( Je vais devoir changer les variables NO/NE/SE/SO de chaque coup en variable spécifique NO en p1/NE en p1/SE en p1 etc….la galère.
Mardi : Toujours sur le calcul du meilleur coup avec les dames.
Lundi : Oui, miracle, j’ai réussi à m’en sortir de ce mode édition. On crée des clones à partir du mode scène, puis on les efface tous et on les recrée à partir des objets, seul façon de réellement affecté l’ID clone au bon sprite. Gros coup de chance en abandonnant l’option créer un clone de moi-même par créer un clone de tel lutin + le bidouillage sur le quand je commence comme un clone. La création des pions et des dames semble fonctionner. Il y a un truc qui marche pas bien sur les dames noires à mon avis lié au fait que je n’ai pas terminé le passage sur le calcul du meilleur coup concernant les dames. Amélioration également des scripts pour le checking des coups obligatoires. Une dame blanche est également restée bloquée après un déplacement NE qui n’aurait pas du conduire à 1 déterminer le pion NE à prendre ( vu qu’il n’y en avait pas) après le déplacement en revanche il y avait un pion juste en SE. Il y a également un gros bug avec les dames noires dès qu’elle se retrouve sur la case 58
Dimanche : Toujours bloqué sur le mode édition
Samedi :je voulais faire un mode edition. Malheureusement, je me rends compte que la création de clone par message est buguée, certainement la raison que ça finissait par s’effacer dans mon master mind. Au 3eme clone crée, il en crée 2 d’affilés et lorsqu’on lance le mode jeu au moment de déterminer une case de destination, il ne l’allume pas et reste planté à ce moment.

Vendredi : j’ai fusionné les variables case possible direction avec un pion noir/blanc en pion à prendre. Pas mal d’endroit à devoir rajouter des trucs pour utiliser les blocs recherche de case direction possible lorsque je vais les utiliser pour le calcul des pions mangés.

Jeudi 17/11: refaire l’arbre s’avère une vraie galère et ce des le 2 eme nœud, jai eu une autre idée, pour une profondeur de 5 coups avec seulement 5x4 possibilité au lieu de 4x3x3x3x3 !!!  et après plusieurs petites rectifications, l’utilisation de message et attendre ( je me demandais bien à quoi ça servait exactement), j’ai réussi !!! le meilleur coup possible pour une prise avec des pions est codé. Il va falloir que je réussisse à la faire avec les dames maintenant. Par ailleurs , j’ai remarqué que l’utilisation de variable propre à une brique custom ne peut s’utiliser à l’extérieur ( dans un message par exemple) du coup j’ai préféré créer une variable couleur que je set à Blanc ou Noir et que je remplace là ou j’espérais utiliser le string de la brique.

Mercredi : le problème avec l’algorithme de la plus longue prise possible, c’est qu’il étudie les possibilités tjs dans le même sens et qu’il prendra tjs le même chemin quitte à zapper le plus long qd sur une même case plusieurs chemin sont possibles.
Je vais refaire l’arbre manuellement. J’en suis à 2 coup possibles me reste à supprimer la dernière direction interdite.

Mardi : J’ai intégré un algorithme qui en cas de plusieurs prises possibles détermine quel coup choisir selon la plus longue prise possible. J’ai intégré à la brique une entrée lettre si bien que l’algo peut fonctionner pour les noirs comme pour les blancs juste en changeant la lettre !!!  l’algo n’est pas parfait et pour le moment ne concerne que les pions. Reste à coder la partie pour les Dames 
Il faut également changer le choix des coups qu’il fait lors des reprises pour emprunter les chemin les plus longs a vérifier ce que j’ai mis pour ça.

Lundi: J’ai corrigé /amélioré la détection des cases des Reines en cas de possibilité d’une nouvelle prise. Tout devrait se détecter correctement à présent. Cependant, En cas de Rejouer et de fin de prise, cela ne conduit pas à une fin de Tour->résolu

Dimanche un bug détecté et corrigé concernant la promotion des pions.
J'ai essayé de limiter les cases possibles pour une dame à celles qui permettent de poursuivre une prise comme pour les pions. J'ai résolu certains bugs, je ne sais pas si tout fonctionne notamment avec les noirs.
Je n'ai pas prévu le cas du (des) pion(s) coincé(s).

Samedi: le coup obligatoire pour une dame Noire est corrigé. en cas de rejouer. L'AI est très faible mais le mode 1 joueur est jouable!!. Si les blancs cliquent avant le début du checking celà peut conduire à 1 bug -résolu-. Son souffler n'est pas jouer pour les choix non autorisés ajouté. Son je réfléchis ajouté. Son A vous d'jouer ajouté.

Vendredi: Le check des coups obligatoires noirs est en place
J'ai réduit le temps de checking des coups obligatoire à 10secondes max !!!!
Le mode 2 joueurs est terminé. Me reste à développer l'IA Noirs.
La condition de victoire est implantée.
Il faut refaire le skin de la dame noire.
Le mode 1 joueur est jouable. l'IA est très pauvre mais opérationelle. Le coup obligatoire pour une Dame ne conduit pas à l'obligation d'une prise de pion blanc dans le mode 1 Joueur..

Jeudi 10/11: c'est bon les reines blanches déterminent correctement le pion à prendre quelques soit sa direction Y compris pour le cas de plusieurs pions sur une même ligne!!! la fonction rejouer pour les reines est implantée; les Noirs possèdent leurs reines en 1er coup et rejouer !!! Je suis très impressionné du résultat au bout d'une semaine. L'option pour obliger à manger est installée pour les blancs mais prend près de 40 secondes par tour. L'IA est bien partie ) J'ai remodifié le code pour le choix des pions afin de supprimer la possibilité de se déplacer si celui-ci peut manger. il faudra également mettre un petit son “souffler n'est pas jouer” pour la sélection d'une case non autorisée ^^

mercredi: j'ai trouvé une idée qui marche pour la recherche de pion à prendre par les dames puis la détections de cases libres derrière ce pion qui vont dans une liste pour ensuite les allumer une à une. J'ai découvert pourquoi ces incrémentations ne fonctionnaient pas. A cause des clones, chacun effectue son calcul et incrément les variables, ce qui expliquent tous ces affolements. il faut utiliser la scène pour ces incrémentations délicates et revenir sur le script des clones pour les ID propres au lutin. Là, j'ai fait un gros progrès…
Si une reine peut manger plusieurs pions sur une même ligne les cases derrières chaque pion s'allument. ce n'est pas bon seul la première devrait s'allumer et ça ça va être dur à corriger.
pour le rejouer des reines, il faudra penser à éliminer la direction possible de laquelle on vient ( créer une variable direction et empêcher sa possibilité lors du rejouer)
Quelque chose ne fonctionne pas dans la prise par les reines blanches d'un pion NO :,( euh…seul le NE fonctionne. il ne détermine rien pour un SO ou un SE ( pion noir à prendre qui s'emballe)

mardi: j'ai repris la grille car j'avais commencé sur une case blanche au lieu d'une noire. Les déplacements ont été revérifiés, corrigés. Le flag pour les dames est en place. Reste à trouver le code pour les déplacements. Il va falloir coder 9 si sinon successifs à la chaine car il y a pas moyen de réussir des détections de cases par incrémentation .
J'ai fait une liste à double entrée mais ça n'arrange rien

Lundi: les déplacements des noirs sont au même niveau que les blancs. Il a fallu que je crée 2 listes supplémentaires pour les coordonnées des pions blancs. Je dois d'abord faire un mode 2 joueurs avant de tenter une IA. Il faudra obliger à manger si c'est possible comme c'est le cas lors des rejouer. En plus je pense que ça permettra un début d'idée pour l'IA. La promotion est faite, reste les déplacements des reines.

Dimanche: j'ai tout repris ce que j'avais poursuivi en matinée. J'abandonne l'idée de la recherche de case par comparaison des listes de coordonnées (je la conserve pour déterminer l'id des pions noirs à manger). Celà entrainait trop de bugs dus aux vitesses de calculs. Je me suis aperçu qu'il suffit d'ajouter ou soustraire des valeurs fixes pour tomber sur le numéro des cases en diagonales. J'ai ajouté les possibilités des prises arrières, résolu les problèmes concernant l'affichage des cases. Tous les déplacements blancs sont résolus à l'exception des promotions et des déplacements des reines. Je vais pouvoir m'attaquer au déplacement des noirs …^^

Samedi: Je code le déplacement vers l'avant, la prise et le rejouer des pions blancs quelques soit leur colonnes.

Vendredi: Le même pion blanc est capable de prendre un pion noir placé juste devant lui et de le supprimer ^^ J'ai réussi à déterminer l'id du pion noir se trouvant sur la case à sauter. J'ai dû créer 2 listes supplémentaires des coordonnées des pions noirs.

Jeudi 03/11: Début du projet, je fais la grille, les pions. Lorsque je vais me coucher le pion blanc colonne 1 est capable de se déplacer d'une case ^^

Last edited by Itharius (Feb. 12, 2017 17:03:40)

nekokawaiii
Scratcher
24 posts

Jeu de Dames. International Checkers Essayez de battre l'IA en mode amélioré si vous l'osez !

Wow, j'ai pris dix minutes pour tout lire!! XD

written by a crybaby
Itharius
Scratcher
1000+ posts

Jeu de Dames. International Checkers Essayez de battre l'IA en mode amélioré si vous l'osez !

Merci de votre attention, en espérant que vous n'ayez pas perdu votre temps

Depuis hier, après avoir partagé le projet, j'ai fait une copie non partagée, j'ai continué à améliorer le code de l'IA et à présent , je souhaite savoir s'il y a un moyen simple de mettre à jour mon projet partagé au niveau de ma version non partagée ?

J'ai trouvé comment faire, on enregistre un version offline et on l'importe en remplaçant le current project.

Jeudi 1/12 : les pions savent désormais se défendre s'ils sont menacés par d'autres pions.

Last edited by Itharius (Dec. 3, 2016 00:19:32)

Florian_KJH
Scratcher
1000+ posts

Jeu de Dames. International Checkers Essayez de battre l'IA en mode amélioré si vous l'osez !

Itharius wrote:

Merci de votre attention, en espérant que vous n'ayez pas perdu votre temps

Depuis hier, après avoir partagé le projet, j'ai fait une copie non partagée, j'ai continué à améliorer le code de l'IA et à présent , je souhaite savoir s'il y a un moyen simple de mettre à jour mon projet partagé au niveau de ma version non partagée ?

J'ai trouvé comment faire, on enregistre un version offline et on l'importe en remplaçant le current project.

Jeudi 1/12 : les pions savent désormais se défendre s'ils sont menacés par d'autres pions.
bravo, tu as du avoir beaucoup de beug non ? Je voudrais la même chose mais avec un échec si t'es cap ^^

Votre cher moi (regardez en dessous pour en savoir plus !)

Itharius
Scratcher
1000+ posts

Jeu de Dames. International Checkers Essayez de battre l'IA en mode amélioré si vous l'osez !

ben justement , j'en repère encore et je les corrige
euh pour ce qui est des échecs, je passe mon tour lol ^^ il parait que c'est pas plus compliqué parce que dans les dames il y a les rebonds à gérer. mais moi, il y a un mois, je ne savais pas que j'étais capable de faire un truc comme ça et je continue le développement de mes Dames ! Il y a une partie que je n'ai pas encore programmer et qui est très importante pour un jeu de dames comme pour un jeu d'échec, c'est l'évaluation. je n'y pense que depuis hier, je ne sais pas combien de temps ça va me prendre mais pour que ce projet soit digne de son nom , il faut qu'il possède son évaluation. Quand on regarde l'autre checkers sur scratch ( qui n'est pas un jeu de dames international , c'est la version draughts) son évaluation est très impressionante.J'ai l'impression que le programme évalue jusqu'à 8 1/2 coups. Moi, je voudrais déjà réussir une évaluation à 3 1/2 coups…

Pourquoi si peu ? la version draught sur scratch ne gère pas les Dames de la même façon, ( le déplacement n'a rien àvoir et est beaucoup plus simple) c'est une version avec 12 +12 pions (=24) alors que les dames internationales 20+20= 40 et pour les cases 8x8 contre 10x10. En plus, il n'oblige pas les prises si elles sont possibles. Du coup son évaluation est très fluide alors que moi, le temps de réflexion est déjà très long ( et puis certainement comme c'est un peu mon premier très très gros projet, je suis pas aussi doué pour trouvé les algo les plus efficaces) .

J'ai donc MAJ une nouvelle fois mon projet

Dimanche : les pions Noirs savent désormais se protéger s’ils le peuvent et s’ils sont menacés d’être mangé par une reine. Il y a un bug qui s’est produit deux fois lors de mon test spécial, un pion noir s’est déplacé la première fois de 2 cases, cela n’a pas conduit à un rejouer et donc il s’est pris pour une reine. Lors de la deuxieme partie il me semble que le même pion Noir a effectué un très long mvt SO comme la première fois de plusieurs cases pour aller se positionner à l’attaque d’un pion. Donc comme s’il était une reine. - j’ai peut-être repéré le bug, dans le determiner un coup pour les Noirs , au passage des Reines, pour chercher la case qui possède la reine, je n’ai pas ajouté la condition de l’ordonnée. Du coup , si ces pions avait la même abscisse que celle de la Reine (et il me semble que ct le cas) il ont pu se prendre pour une reine…
J’ai également constaté malheureusement une reine qui après un coup obligatoire a été mangé un pion et qui avait la place pour aller se positionner sur une case sure et qui ne l’a pas fait . il faut vérifier tout ça pourquoi.- c’est corrigé/amélioré 

Samedi : Essai de modif de l’IA. Pour chaque mvt, j’ai tenté de regarder si la case est dangereuse ou pas et si elle l’est de jouer ailleurs si on le peut. Résultat catastrophique , je ne perds qu’un seul pion. Très mauvaise idée que j’avais écarté dès le départ, fallait la tester rmaintenant que l’IA savait faire d’autres trucs.
Il faut apprendre au pion à se dégager de la diagonale s’ils sont visé par une Dame, voire se protéger. Pas mal de config possibles. Gros taff en perspective.
J’ai pas mal réfléchi sur l’IA, je savais que j’avais atteint mes limites. Impossible d’associer à une liste le numero ID des pions aux cases. Je pense que pour perfectionner l’IA , il faut reprendre tout le code, du moins pour la réflexion. Utiliser des listes occupée en P1 P2 etc étudier si un pion qui saute remplace le numero de la case sautée par O puis rejoue sur la même position. Il faut étudier cas par cas les possibilités et au bout de X coups (2 pour commencer serait déjà énorme) calculer le nombre de pions N et B présent dans la liste P2 et déterminer le coup à choisir en P0.

Vendredi : Bug détecté en mode 1 notamment si l’utilisateur clique 2 fois sur la case de destination. Partie du code supprimé mais ça ne règle pas tout. Si l’utilisateur clique , désormais les cases s’éteignent et rien d’aussi strange qu’avant ne se produit mais il faudrait qu’elle s’éteignent tout seules.
Pb persistant pour les utilisateurs qui double clique sur les cases de destinations: en cas de prise d’1 pion noir, le pion noir supposé n’est pas supprimé, c’est un autre pion noir qui est supprimé.—> CORRIGE Avec attendre 1 sec en debut de si ce lutin est cliqué on dirait que c bon avec moins ça revient

Last edited by Itharius (Dec. 4, 2016 23:12:30)

el15617
Scratcher
1000+ posts

Jeu de Dames. International Checkers Essayez de battre l'IA en mode amélioré si vous l'osez !

Tu as l'air de passer un bon bout de temps sur scratch !! En tout cas tes projets sont très pros ! Bravo à toi ! En plus tu sors du lot car peu de gens ont l'idée de faire des jeux de société sur scratch ^^ Enfin bref bonne continuation à toi !

Last edited by el15617 (Dec. 5, 2016 19:55:47)



Vendeur de brouettes depuis 1895 :p
zelda_64
Scratcher
1000+ posts

Jeu de Dames. International Checkers Essayez de battre l'IA en mode amélioré si vous l'osez !

el15617 wrote:

Tu as l'air de passer un bon bout de temps sur scratch !! En tout cas tes projets sont très pros ! Bravo à toi ! En plus tu sors du lot car peu de gens ont l'idée de faire des jeux de société sur scratch ^^ Enfin bref bonne continuation à toi !

C'est vrai, je n'y pense jamais aux jeux de société ! Bravo !

Last edited by zelda_64 (Dec. 5, 2016 20:02:08)


Salut toi !


Je m'appelle Zelda (mais pas dans la vraie vie, hein) et j'ai actuellement 15ans derrière moi ! (argh, je suis aussi proche de ma naissance que de mes 30ans O.O)
Donc cette signature est provisoire, c'est juste le temps d'en créer une autre, plus au goût du jour
el15617
Scratcher
1000+ posts

Jeu de Dames. International Checkers Essayez de battre l'IA en mode amélioré si vous l'osez !

zelda_64 wrote:

el15617 wrote:

Tu as l'air de passer un bon bout de temps sur scratch !! En tout cas tes projets sont très pros ! Bravo à toi ! En plus tu sors du lot car peu de gens ont l'idée de faire des jeux de société sur scratch ^^ Enfin bref bonne continuation à toi !

C'est vrai, je n'y pense jamais aux jeux de société ! Bravo !

Dingue pas vrai ! mais je suis convaincu que scratch à du potentiel à ce sujet, de nombreux sujets restent inexplorés comme par exemple les histoires interactives (Les Bouquins ayant pour titre “le livre dont vous êtes le héros”) ce genre de truc personne ne l'a jamais fait (à ce que je sache) sur scratch pourtant ça pourrait avoir un réel intéret… peut être un futur projet donc ^^
mais bon en attendant en ce moment je bosse sur un concept de jeu vraiment génial je trouve (un jeu basé sur un os de smartphone mais chuuuuuut j'en dis trop !) par contre c'est vraiment chaud à faire !


Vendeur de brouettes depuis 1895 :p
zelda_64
Scratcher
1000+ posts

Jeu de Dames. International Checkers Essayez de battre l'IA en mode amélioré si vous l'osez !

el15617 wrote:

Dingue pas vrai ! mais je suis convaincu que scratch à du potentiel à ce sujet, de nombreux sujets restent inexplorés comme par exemple les histoires interactives (Les Bouquins ayant pour titre “le livre dont vous êtes le héros”) ce genre de truc personne ne l'a jamais fait (à ce que je sache) sur scratch pourtant ça pourrait avoir un réel intéret… peut être un futur projet donc ^^
mais bon en attendant en ce moment je bosse sur un concept de jeu vraiment génial je trouve (un jeu basé sur un os de smartphone mais chuuuuuut j'en dis trop !) par contre c'est vraiment chaud à faire !

Le livre dont vous êtes le héros ? Mais c'est mon projet actuel en plus il n'est absolument pas fini, je consacre surtout mon temps à la version 1.1 de mon Computer (en offline).

Salut toi !


Je m'appelle Zelda (mais pas dans la vraie vie, hein) et j'ai actuellement 15ans derrière moi ! (argh, je suis aussi proche de ma naissance que de mes 30ans O.O)
Donc cette signature est provisoire, c'est juste le temps d'en créer une autre, plus au goût du jour
Itharius
Scratcher
1000+ posts

Jeu de Dames. International Checkers Essayez de battre l'IA en mode amélioré si vous l'osez !

Lundi: Bug détecté et corrigé suite à l'amélioration de la défense des pions qui peuvent se faire manger par une Dame + 2 cas ajoutés auxquels je n'avais pas pensé hier.

Le temps ça c'est sûr que ça m'a pris un temps de fou. j'ai passé plus de temps à coder le jeu de Dames le mois dernier qu'au boulot. Je n'ai pas arrêté et je n'arrête pas d'y penser ! J'ai du y passer facilement 6 heures par jour 7j/7 depuis un mois.

Je ne sais pas si c'est pro mais je cherche à ce que ce soit propre. Le fait d'avoir passer tout ce temps d'avoir tenter d'améliorer l'IA et qu'elle soit si faible parce que j'ai zapper le plus évident concernant l'évaluation par exemple, ça fait surtout BIG amateurisme ^^.

l'évaluation du programme, c'est le prochain gros développement que je prépare. Je n'arrive pas encore à comprendre comment la version draught tient en si peu de lignes quand moi je suis obligé de pondre des pavés et des pavés.

Il y a un terme que je ne connaissais pas et c'est en écrivant le calcul du nombre de pions à manger que j'ai découvert ce mot: la récursivité. J'ai lu qu'il n'y a pas de récursivité avec retour de valeur sur scratch et pour le jeu de dames, ça m'a obligé à repondre un pavé à chaque position et maintenant pour l'évaluation, je ne vois pas d'autres choix que de recommencer la même galère. Il y a une liste qui s'appelle “occupée” chaque pion s'il touche une case inscrit à la valeur de la case sa couleur. Déjà pour la version draught, il n'a utilisé qu'un seul lutin pour les blancs ,les noirs , les pions , les rois et là je trouve ça déjà très malin comparé à ce que j'ai fait parce que ça lui a permis d'avoir dans la seule liste occupée le grade et la couleur alors que moi j'ai été obligé de rajouter 2 listes pour les grades de chaque couleur. Pour l'évaluation , je vais changer ça mais je ne trouve toujours pas le moyen d'inscrire la photo du damier à l'instant P dans la liste occupée indice P. Alors si vous voyez un moyen de coder ça,ce serait un énorme gain de temps et de place ….
Itharius
Scratcher
1000+ posts

Jeu de Dames. International Checkers Essayez de battre l'IA en mode amélioré si vous l'osez !

Petite MAJ pour tenter d'améliorer le temps de calcul.

J'avance sur le côté évaluation cependant je me confronte à une énorme difficulté, le temps de calcul, je ne l'ai pas activé dans le programme mais il est dedans. le programme évalue correctement mais il met 10 minutes par coup pour jouer “intelligemment” ce qui en l'état ne peut être acceptable au niveau jouabilité je ne sais pas quoi faire pour réduire ce temps de calcul pour le moment.
el15617
Scratcher
1000+ posts

Jeu de Dames. International Checkers Essayez de battre l'IA en mode amélioré si vous l'osez !

Itharius wrote:

Petite MAJ pour tenter d'améliorer le temps de calcul.

J'avance sur le côté évaluation cependant je me confronte à une énorme difficulté, le temps de calcul, je ne l'ai pas activé dans le programme mais il est dedans. le programme évalue correctement mais il met 10 minutes par coup pour jouer “intelligemment” ce qui en l'état ne peut être acceptable au niveau jouabilité je ne sais pas quoi faire pour réduire ce temps de calcul pour le moment.
c'est le quel script ? X')


Vendeur de brouettes depuis 1895 :p
Itharius
Scratcher
1000+ posts

Jeu de Dames. International Checkers Essayez de battre l'IA en mode amélioré si vous l'osez !

celui tout en bas dans la scene qui commence par “supprimer tout de la liste case ayant le meilleur score et qui fini par ”jouer le son bird“.Je l'ai détaché de ”quand la barre espace est pressée“ si on l'attache et qu'on le lance quand c'est au blanc de jouer pour simuler le temps que les noirs mettraient à évaluer les cases, ça prend 10 minutes avant d'entendre le son des oiseaux. le premier problême la copie de la liste ”occupee“ en ”occupée en p0“ nécéssaire pour avoir le grade en même temps que la couleur associé au numéro de la case, ça prend déjà plus d'une minute juste pour cette opération. Pour le moment, je n'ai pas réussi à ce que le lutin ”case“ détecte lorsqu'il est en contact avec le lutin ”pion blanc“ ou le lutin ”pion noir" à déterminer si celui-ci porte le costume 1 ou 2.
Itharius
Scratcher
1000+ posts

Jeu de Dames. International Checkers Essayez de battre l'IA en mode amélioré si vous l'osez !

Itharius wrote:

celui tout en bas dans la scene qui commence par “supprimer tout de la liste case ayant le meilleur score et qui fini par ”jouer le son bird“.Je l'ai détaché de ”quand la barre espace est pressée“ si on l'attache et qu'on le lance quand c'est au blanc de jouer pour simuler le temps que les noirs mettraient à évaluer les cases, ça prend 10 minutes avant d'entendre le son des oiseaux. le premier problême la copie de la liste ”occupee“ en ”occupée en p0“ nécéssaire pour avoir le grade en même temps que la couleur associé au numéro de la case, ça prend déjà plus d'une minute juste pour cette opération. Pour le moment, je n'ai pas réussi à ce que le lutin ”case“ détecte lorsqu'il est en contact avec le lutin ”pion blanc“ ou le lutin ”pion noir" à déterminer si celui-ci porte le costume 1 ou 2.

Je viens d'y arriver sur un projet à l'essai il n'y a pas de raison que ça marche pas sur celui-ci , c'est parti pour un changement de tout le code !!!

edit : arf j'ai parlé trop vite, j'ai fait l'essai mais pas sur un clone.
Confirmation:ça ne marche vraiment pas avec un clone…

Last edited by Itharius (Dec. 28, 2016 14:55:36)

ScratchClubFr
Scratcher
21 posts

Jeu de Dames. International Checkers Essayez de battre l'IA en mode amélioré si vous l'osez !

Enorme travail !
Peux-tu nous indiquer qu'elle est "la version draught sur scratch " que tu as étudié ?
On a trouvé plusieurs Draught mais aucun qui jouait correctement.

Autre remarque, pourquoi ne pas utiliser ton expérience pour programmer pour te détendre un jeu plus simple par exemple :
Le loup et les moutons sur un damier 10x10
L'ordinateur controlant le loup et le joueur les moutons le temps de réponse devrait etre court.
Le loup et les moutons
Voir les 2 dernières pages du PDF
Qu'en penses tu ?
A +
el15617
Scratcher
1000+ posts

Jeu de Dames. International Checkers Essayez de battre l'IA en mode amélioré si vous l'osez !

ScratchClubFr wrote:

Enorme travail !
Peux-tu nous indiquer qu'elle est "la version draught sur scratch " que tu as étudié ?
On a trouvé plusieurs Draught mais aucun qui jouait correctement.

Autre remarque, pourquoi ne pas utiliser ton expérience pour programmer pour te détendre un jeu plus simple par exemple :
Le loup et les moutons sur un damier 10x10
L'ordinateur controlant le loup et le joueur les moutons le temps de réponse devrait etre court.
Le loup et les moutons
Voir les 2 dernières pages du PDF
Qu'en penses tu ?
A +
progresser sur scratch c'est surtout relever des défis de plus en plus complexe… se reposer en faisant des choses faciles n'est pas une bonne manière de progresser ^^ et puis c'est moins challenge ^^


Vendeur de brouettes depuis 1895 :p
Itharius
Scratcher
1000+ posts

Jeu de Dames. International Checkers Essayez de battre l'IA en mode amélioré si vous l'osez !

Je n'ai pas spécialement “étudié” de version, j'ai juste regardé en tapant checkers sur scratch ce que ça donnait. La version à laquelle je fais référence est celle de pulljosh . Je ne suis plus vraiment sur qu'il effectue une évaluation supérieur à 1 coup ( car je comprend mieux à présent à quoi correspond sa liste matrix) mais il évalue bien toutes ses cases possibles en moins de 2 secondes. Il est clair que je n'ai pas le niveau et ça se voit de la façon dont j'ai tout programmé. D'ailleurs, je n'aurais pas du tout fait comme ça sur un damier de 8X8 cases car j'ai profité du fait de la base de 10 pour déterminer les coups en diagonales ( on ajoute ou retire toujours des multiples de 11 ou 9 pour tomber sur les cases en diagonales).

Pour ce qui est de mon “expérience” elle est vraiment toute relative lol Je me suis lancé dans les dames parce que j'avais envie de faire un jeu que tout le monde connait et accroitre ma chance de faire des vues ^^ ( c'est la raison numero 1). j'ai une idée future , toujours pour un jeu de plateau.
je suis d'accord avec el15617. j'avais cette idée future d'un jeu de plateau, j'ai commencé par un truc “simple” mon jeu de l'oie, puis je me suis lancé sur ce jeu de dames. lorsque j'aurais vraiment réussi mon objectif sur l'évaluation de mon jeu de dames alors je pourrais me lancer dans mon projet de départ qui sera encore un jeu de plateau.

Pour revenir à mon problême de détection de costume d'un clone, j'ai regardé ce que préconise le wiki en anglais. C'est je pense la méthode que j'avais opté avant de penser à cette partie sur l'évaluation: une variable id propre au clone, assigner des propriété dans des listes (pour mon jeu ce sont les listes grade des pions blancs, grade des pions noirs) pour déterminer quel id de clone est affectée et chercher la propriétée dans la liste correspondante. Mais tout ceci est trop lent et j'ai tourné en rond toute la journée. j'en viens presque à me dire que j'aurai mieux fait de créé 40 sprites, 1 pour chaque pion ( d'ailleurs c'est une idée à explorer)


Pour ce qui est du loup et des moutons, la programmation du loup a cet intérêt de calculer le nombre de coups nécéssaire pour passer la ligne des moutons. je pense que c'est une option améliorée pour une IA d'un jeu de dames afin de déterminer si un pion peut ou non passer pour aller faire une reine. Celà reste une implémentation moins nécéssaire que celle de l'évaluation qui est vraiment la base de l'IA améliorée. J'ai appris au programme à se servir d'une Dame , à défendre un pion en danger mais tout ça il l'aurait de toute façon déduit avec une évaluation efficace.

Last edited by Itharius (Dec. 28, 2016 19:54:05)

ScratchClubFr
Scratcher
21 posts

Jeu de Dames. International Checkers Essayez de battre l'IA en mode amélioré si vous l'osez !

Merci pour ta réponse.
La version de pulljosh joue vraiment mal .
Le jeu anglais est beaucoup plus facile à programmer.
Nous comprenons ta démarche qui te fait progresser dans la connaissance de Scratch.
Nous allons essayer de programmer au club le loup et les moutons.
Mais pour nous se sera difficile
Pour l'instant nous cherchons le Pb “les cadeaux du Père Noel” et ce n'est pas simple :
Pb Les cadeaux du Père Noel
Itharius
Scratcher
1000+ posts

Jeu de Dames. International Checkers Essayez de battre l'IA en mode amélioré si vous l'osez !

moi je ne trouve pas que sa version joue si mal car tu n'as pas intérêt à faire d'erreurs si tu ne veux pas perdre. Il m'est arrivé de faire des draws après avoir effectué tout les mouvements possibles.

Pour le loup et les moutons l'utilisateur sera-t-il le loup ou les moutons ? A mon avis , il ne faudra pas faire les deux mode en même temps. Si c'est l'ordi qui joue les moutons il suffira de lui faire déplacer ses pions en ligne l'un après l'autre avec quelques cas particuliers d'encerclement selon la position du joueur ( pour ne jamais ouvrir de porte), c'est comme ça que je ferai mais peut-être ce n'est pas la seule methode en tout cas, j'ai testé et c'est comme ça que je joue avec les moutons, j'ai fait quelques tests avec cette technique et il ‘n’y a aucunes chances pour le loup de passer en respectant ces principes. Si c'est l'ordi qui joue le loup ça ne sera pas facile de lui faire trouver un chemin il y aura un vrai travail sur l'IA de ce côté.

j'ai regardé les cadeaux du père Noël et j'ai mis du temps à comprendre ce que l'on demande. En plus temps de calcul inférieur à 1 minute !!!!
il faut dénombrer le nombre d'addition possible avec un total égal ou inférieur à 60, et ajouter 1 entre chaque addition avec une variable de départ égale ou supérieur à 3 hum….ça donne envie ^^

edit:j'ai commencé en essayant de trouver un truc pour dénombrer les 17 façons , c'est déjà très dur et vous avez quel âge dans votre club ?

Last edited by Itharius (Dec. 29, 2016 22:22:14)

Itharius
Scratcher
1000+ posts

Jeu de Dames. International Checkers Essayez de battre l'IA en mode amélioré si vous l'osez !

Meilleurs Voeux à tous, puissiez vous être productif et heureux pour cette nouvelle année 2017

J'ai amélioré la défense des pions lorsqu'il sont attaqués. Si celui conduit à se faire prendre deux fois en protégeant un pion attaqués, le programme ne défend plus le pion L'évaluation n'est toujours pas activée, je pense faire un mode IA basique et un mode IA améliorée pour laisser à l'utilisateur l'opportunité de jouer contre une IA plus performante mais très lente à calculer …

samedi 31: j'ai amélioré le problème concernant la défense des pions si celà conduit à se faireprendre en défendant un pion, celà ne sert àrien de le défendre au lieu de se faire manger deux pions coups après coups.

Vendredi 30: le programme évalue correctement a 3 1/2 coups. J'ai essayé de reduire au maximum entre les cases uniquement noires, réécrire le moins possibles de listes quand on a besoin que de occupée temp mais ça prend tjs plus de 6 minutes En plus il faut absolument rajouter au moins 1 demi coup pour voir si les blancs ont encore un coup obligatoire ou pas. Je ne me suis pas encore occupée des catalogues en cas de plusieurs rafles possibles avec le meme pion qui ne conduisent pas à la même destination , ni codé les dames dans la réflexion des coups à jouer. le programme à ce stade devrait pouvoir enfin jouer des coup jeperds un pion mais j'en gagne 2 derrière. Mais à cause de l'évaluation à 3 1/2 coups il y a encore des coups qu'il ne zappe pas. exemple il peut se faire prendre un pion il va jouer un autre pion qui va aller sur une case ou il peut se faire prendre mais qui menace à son tour une prise car les blancs prendront un des 2 pions noirs et leprogramme conclit qu'il va prendre lepion qui menace et comme l'evaluation sarrete la il ne voit pas qu'il se fait prendre le 2emepion derrière Par ailleurs l'évaluation ne permet pas de déjouer les pieges des joueurs qui vont saisir un eopportunité pour se faire prendre un pion parce que derriere le blanc en reprend 2 ou 3.
J'ai également constaté un mauvais choix de défense d'un pion par un autre le noir avait le choix entre défendre le pion menacé avec un autre derrière qui se déplaçait en SE mais qui se faisait prendre alors qu'un autre pion sur la diagonale pouvait renforcer le premier pion menacé et était protéger par celui que le noir a bougé il faudra que je vérifie pourquoi ce n''est pas le bon pion qui a été choisit pour défendre et corriger ça.

Lundi: j'ai réfléchis aux différentes possibilités pour tenter de réduire le temps de réflexion lors de l'évaluation. l'écriture de P1 sous temp ne devrait se faire qu'au moment du test en cas de plusieurs rafles les plus longues. On peut se servir de l'élement e de numero de case uniquement occupée par des Noirs pour réécrire la case sélectionnée et de l'element q de mouvement possible pour le noir pour réécrire la case de destination.
Le même principe devrait pouvoir s'appliquer au zappage de l'écriture de N2 en cas d'absence de coup obligatoire pour les Noirs.

Dimanche 18: Après avoir résolu le problême de stockage des rafles les plus longues en utlisant le stockage horizontal puis la retranscription verticale, le programme détermine enfin correctement le score des cases à 2 demi coups… 10 minutes de calculs pour évaluer 5 cases… Je persiste tout de même pour enchainer au moins 1 demi coup supplémentaire comme prévu à la base sinon en l'état l'évaluation ne sert strictement à rien.Il faudra également explorer la possibilité de n'utiliser que les cases noires ça pourrait éventuellement diviser par deux certaines boucles.
Les rafles les plus longues sont normalement opérationelles mais ne fonctionnent que pour les pions. Il faudra s'occupper des reines plus tard.
Idem pour determiner les coups obligatoires des blancs, seuls les pions fonctionnent.

Samedi 10/12: tentative d'améliorer l'iA avec l'évaluation. gros pb le temps de calcul. je pensais qu'il fallait envisager un coup Noir puis une réponse blanche. résultat +20 minutes de calcul pour envisager un coup. Donc changement d'idée, si le coup entraine un coup obligatoire , on l'explore , sinon on passe directement à l'évaluation. je dois faire des photos à chaque coup, des tas de parties du code sont à revoir et ne peuvent pas être réutilisées. Je dois déterminer le grade et la couleur dans des listes de positions. Je ne peux réutiliser le calcul du nombre de pions couleur à manger tel quel il faut que je le recopie pour qu'il opère sous une liste occupée temporaire. Il faudra également envisager toutes les rafles les plus longues et pas seulement en retenir que la première…
  • Discussion Forums
  • » Français
  • » Jeu de Dames. International Checkers Essayez de battre l'IA en mode amélioré si vous l'osez ! [RSS Feed]

Powered by DjangoBB