|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Étudiant Inscription : août 2012 Messages : 12 ![]() |
Bonjour,
Je dois réalisé un jeu de morpion dont la taille de la grille de jeu peut-être modifier et que l'on peut jouer soit à deux joueurs soit contre la machine. Je bloque sur la deuxième partie : "l'IA" ! Voici mon code complet : http://pastebin.com/46R2AEdp Je sais qu'il y a certainement beaucoup de choses à modifier. C'est ma première année alors soyez indulgent... Je souhaite juste faire marcher le programme et non le modifier entièrement. Le programme marche très bien en version joueur contre joueur. Donc le problème que je rencontre c'est pour faire jouer la machine, plus exactement pour dessiner son symbole (X ou O) dans la grille de jeu Tk. La fonction joue() permet d’enchaîner les tours de chaque joueurs. La fonction iaJoue() détermine la meilleure case à jouer par la machine. La fonction playOn() est sensée faire jouer la machine un peu comme la fonction joue permet au joueur humain de jouer. Mais le problème est que je ne sais pas comment faire pour dessiner le symbole. Dans joue() je me sers de w pour dessiner le symbole au bon endroit grâce aux fonctions fais_x() et fais_o() avec w = event.widget (event étant un clic de souris) Dans playOn() je n'utilise pas w est donc je ne sais pas comment faire. Donc du point de vue de M (la grille de jeu sous forme de tableau) ça fonctionne mais pas graphiquement... Si quelqu'un peut m'aiguiller car j'ai chercher des solutions mais je n'arrive jamais à faire fonctionner le jeu correctement. Merci d'avance. |
|
|
00
|
|
|
#2 | ||||
|
Expert Confirmé Sénior
![]() Inscription : juin 2008 Messages : 3 696 ![]() |
Salut,
Vu l'état de votre code, il m'est impossible de le corriger. Ceci dit, iaJoue retourne le (r, c) que le robot joue. playOn doit récupérer le canvas (r,c) pour avoir un bon "w" à passer à fais_x ou fais_o. Et si vous stockez (r,c) dans les canvas, il n'y a pas de map "inverse". Cela suggère d'ajouter "cells" genre: Code :
Code :
__________________
Architectures Post-Modernes |
||||
|
|
10
|
|
|
#3 |
|
Invité régulier
![]() Étudiant Inscription : août 2012 Messages : 12 ![]() |
Merci pour ta réponse je n'avais pas pensé à cette solution j'avais créé quelque chose du genre mais qui ne marchait pas pour toutes les tailles de grilles.
Aussi je suis désolé pour le code mais je n'ai fait qu'implémenter la possibilité de changer la taille de la grille, de stopper le jeu lorsque la partie est remportée et maintenant de pouvoir jouer contre la machine. Le reste du code est presque tel quel dans mon cours j'ai juste corrigé la présentation pour m'y retrouver. Donc j'ai ajouter les lignes que m'as conseillé et ça fonctionne. L'IA commet quelques erreurs de temps en temps, je pense qu'elles sont dû à la ligne et colonne que je passe à playOn() et qui sont sûrement parfois mal calculées. Je vais rectifier ça. Encore merci pour ton aide, j'étais passé pas loin de la solution sans y parvenir. |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com