Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 2
Aller à la page: 1, 2  >
Morpion Invincible
Auteur Message
Répondre en citant
Message Morpion Invincible 
Bonjour , voici un morpion très intelligent avec la possibilité de sauvegarde les parties :

Nouveau Morpion: http://batch.xoo.it/t2819-Morpion-Graphique-Avec-bug.htm

Code:


@Echo Off
If not exist Sauvegardes Md Sauvegardes
Cd Sauvegardes

:Reset

   Cls
   Color 9E
   mode con LINES=28 COLS=44
   Set Pion=X
   Set nbT=0
   For %%A in (11,12,13,21,22,23,31,32,33) do Set C%%A=ú

:Menu
   
   Cls
   Set choix=
   Call :Logo
   Echo - Jouer une nouvelle partie    = 1
   Echo - Jouer une partie enregistree = 2
   Echo - Quitter                      = 3
   Echo.
   Set/P choix=Choix :
   If not defined choix Goto menu
   If %choix%==1 Goto com
   If %choix%==2 (
      If not exist *.Sauv (
         cls
         Echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
         Echo º Aucune sauvegard existante !! º
         Echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
         Pause>Nul
         goto Menu
      )
      Goto lecture
   )
   If %choix%==3 Exit
   Goto menu
   
:com
   
   Cls
   Set choix=
   Call :Logo
   Echo Voulez vous commencer en premier: - Oui = 1
   Echo                                   - Non = 2
   Echo.
   Set/P choix=Choix :
   If not defined choix Goto com
   If %choix%==1 Goto affiche
   If %choix%==2 (
      Set/A nbT+=1
      Call :Supert
      Goto IA
   )
   Goto com

:affiche

   :comsauv
   
   Cls
   Set choix=
   Call :Supert
   Echo     1     2     3     Tour(s): %nbT%
   Echo        º     º
   Echo  A  %C11%  º  %C12%  º  %C13%
   Echo        º     º
   Echo   ÍÍÍÍÍÎÍÍÍÍÍÎÍÍÍÍÍ
   Echo        º     º
   Echo  B  %C21%  º  %C22%  º  %C23%
   Echo        º     º
   Echo   ÍÍÍÍÍÎÍÍÍÍÍÎÍÍÍÍÍ
   Echo        º     º
   Echo  C  %C31%  º  %C32%  º  %C33%
   Echo        º     º
   Echo.
   Echo Ligne + Colonne
   Echo.
   Set/P choix=Entrer les coordonnees :
   If not defined choix Goto affiche
   Set choix=%choix:SAUVER=OUI%
   Set choix=%choix:sauver=OUI%
   Set choix=%choix:a=1%
   Set choix=%choix:A=1%
   Set choix=%choix:b=2%
   Set choix=%choix:B=2%
   Set choix=%choix:c=3%
   Set choix=%choix:C=3%
   Set choix1=%choix:~0,1%
   Set choix2=%choix:~1,1%
   If not defined choix2 Goto affiche
   If %choix%==OUI Goto sauve
   Set T=0
   For %%B in (%choix1%,%choix2%) do (
      For %%A in (1,2,3) do If %%B==%%A Set/A T+=1
   )
   If not %T%==2 Goto affiche
   Setlocal Enabledelayedexpansion
   If not !C%choix%!==ú Goto affiche
   Setlocal Disabledelayedexpansion
   Set C%choix%=O
   Call :Supert
   Set/A nbT+=2
   
:IA
   
   :AttaqueDefenseSimple
   
   If %C22%==ú (
      Set C22=X
      Goto affiche
   )
   Setlocal Enabledelayedexpansion
   For %%C in (X,O) do (
      For %%B in (1,2,3) do (
         If !H%%B!==%%C%%Cú (
            Set C%%B3=X
            Goto affiche
         )
      )
      For %%B in (1,2,3) do (
         If !H%%B!==ú%%C%%C (
            Set C%%B1=X
            Goto affiche
         )
      )
      For %%B in (1,2,3) do (
         If !H%%B!==%%Cú%%C (
            Set C%%B2=X
            Goto affiche
         )
      )
      For %%B in (1,2,3) do (
         If !V%%B!==%%C%%Cú (
            Set C3%%B=X
            Goto affiche
         )
      )
      For %%B in (1,2,3) do (
         If !V%%B!==ú%%C%%C (
            Set C1%%B=X
            Goto affiche
         )
      )
      For %%B in (1,2,3) do (
         If !V%%B!==%%Cú%%C (
            Set C2%%B=X
            Goto affiche
         )
      )
      If %D1%==%%C%%Cú (
         Set C33=X
         Goto affiche
      )
      
      If %D1%==ú%%C%%C (
         Set C11=X
         Goto affiche
      )
      
      If %D2%==%%C%%Cú (
         Set C31=X
         Goto affiche
      )
      
      If %D2%==ú%%C%%C (
         Set C13=X
         Goto affiche
      )
      
      For %%B in (%D1%,%D2%) do (
         If %%B==%%Cú%%C (
            Set C22=X
            Goto affiche
         )
      )
   )
   Setlocal Disabledelayedexpansion
   
   :AttaqueDefenseComplexe
   
         For %%A in (caseL,caseC) do (
            For %%B in (1,2,3) do (
               Set %%A%%B=0
            )
         )
         Set caseD1=0
         Set caseD2=0
         For %%A in (%C11%,%C12%,%C13%) do (
            If %%A==%Pion% Set/A caseL1+=2
            If %%A==ú Set/A caseL1+=1
         )
         For %%A in (%C21%,%C22%,%C23%) do (
            If %%A==%Pion% Set/A caseL2+=2
            If %%A==ú Set/A caseL2+=1
         )
         For %%A in (%C31%,%C32%,%C33%) do (
            If %%A==%Pion% Set/A caseL3+=2
            If %%A==ú Set/A caseL3+=1
         )   
         For %%A in (%C11%,%C21%,%C31%) do (
            If %%A==%Pion% Set/A caseC1+=2
            If %%A==ú Set/A caseC1+=1
         )
         For %%A in (%C12%,%C22%,%C32%) do (
            If %%A==%Pion% Set/A caseC2+=2
            If %%A==ú Set/A caseC2+=1
         )
         For %%A in (%C13%,%C23%,%C33%) do (
            If %%A==%Pion% Set/A caseC3+=2
            If %%A==ú Set/A caseC3+=1
         )
         For %%A in (%C11%,%C22%,%C33%) do (
            If %%A==%Pion% Set/A caseD1+=2
            If %%A==ú Set/A caseD1+=1
         )
         For %%A in (%C13%,%C22%,%C31%) do (
            If %%A==%Pion% Set/A caseD2+=2
            If %%A==ú Set/A caseD2+=1
         )
         
      :1
      
         If %caseL1%%caseL3%%caseC1%%caseC3%==4444 (
            If %Pion%==O Goto aleaB
            If %Pion%==X Goto aleaD
         )
         
      :2
      
         :Test1
         
            If not %C22%==ú (
               If %caseL1%%caseL2%%caseC1%%caseC2%==4444 If %C11%%C22%==%Pion%%Pion% (
                  Call :alea2 C13 C31
                  Goto affiche
               )
               If %caseL1%%caseL2%%caseC2%%caseC3%==4444 If %C13%%C22%==%Pion%%Pion% (
                  Call :alea2 C11 C33
                  Goto affiche
               )
               If %caseL2%%caseL3%%caseC1%%caseC2%==4444 If %C31%%C22%==%Pion%%Pion% (
                  Call :alea2 C11 C33
                  Goto affiche
               )
               If %caseL2%%caseL3%%caseC2%%caseC3%==4444 If %C33%%C22%==%Pion%%Pion% (
                  Call :alea2 C13 C31
                  Goto affiche
               )
            )
            
         :Test2
         
            If %caseL1%%caseL2%%caseC1%%caseC2%==4444 If %C21%%C12%==XX (
               Call :alea2 C13 C31
               Goto affiche
            )
            If %caseL1%%caseL2%%caseC2%%caseC3%==4444 If %C12%%C23%==XX (
               Call :alea2 C11 C33
               Goto affiche
            )
            If %caseL2%%caseL3%%caseC1%%caseC2%==4444 If %C21%%C32%==XX (
               Call :alea2 C11 C33
               Goto affiche
            )
            If %caseL2%%caseL3%%caseC2%%caseC3%==4444 If %C32%%C23%==XX (
               Call :alea2 C13 C31
               Goto affiche
            )
            
      :3
      
         Setlocal Enabledelayedexpansion
         For %%A in (1,2,3) do (
            For %%B in (1,2,3) do (
               If !caseL%%A!!caseC%%B!==44 If !C%%A%%B!==ú (
                  Set C%%A%%B=X
                  Goto affiche
               )
            )
         )
      Setlocal Disabledelayedexpansion
      If %Pion%==X (
         Set Pion=O
         Goto AttaqueDefenseComplexe
      )
      Set nbA=0
      For %%A in (%C11%,%C13%,%C31%,%C33%) do If %%A==ú Set/A nbA+=1
      If not %nbA%==0 (
      Goto aleaD
      ) else (
      Goto aleaB
      )
      
   :alea2
   
      Call :alea 2 alea2
      If %alea2%==1 set %~1=X
      If %alea2%==2 set %~2=X
      Goto :eof
      
   :aleaD
      
      Call :alea 5 aleaD
      If %aleaD%==1 If %C11%==ú (
      Set C11=X
      Goto affiche
      )
      If %aleaD%==2 If %C13%==ú (
      Set C13=X
      Goto affiche
      )
      If %aleaD%==3 If %C22%==ú (
      Set C22=X
      Goto affiche
      )
      If %aleaD%==4 If %C31%==ú (
      Set C31=X
      Goto affiche
      )
      If %aleaD%==5 If %C33%==ú (
      Set C33=X
      Goto affiche
      )
      Goto aleaD
   
   :aleaB
      
      Call :alea 4 aleaB
      If %aleaB%==1 If %C12%==ú (
      Set C12=X
      Goto affiche
      )
      If %aleaB%==2 If %C21%==ú (
      Set C21=X
      Goto affiche
      )
      If %aleaB%==3 If %C23%==ú (
      Set C23=X
      Goto affiche
      )
      If %aleaB%==4 If %C32%==ú (
      Set C32=X
      Goto affiche
      )
      Goto aleaB

:alea

   Set aleaNB=0
   Set Max=%1
   
   :Random
   
      If %aleaNB%==10 (
         Set %~2=%aleaT%
         Goto :eof
      )
      Set/a aleaNB+=1
      Set/A aleaT=1+%Random%*%Max%/32767
      Goto Random

:fin
   
   Cls
   If %1==G Color 9A
   If %1==P Color 9C
   If %1==M Color 98
   Echo     1     2     3     Tour: %nbT%
   Echo        º     º
   Echo  A  %C11%  º  %C12%  º  %C13%
   Echo        º     º
   Echo   ÍÍÍÍÍÎÍÍÍÍÍÎÍÍÍÍÍ
   Echo  B  %C21%  º  %C22%  º  %C23%
   Echo        º     º
   Echo   ÍÍÍÍÍÎÍÍÍÍÍÎÍÍÍÍÍ
   Echo        º     º
   Echo  C  %C31%  º  %C32%  º  %C33%
   Echo        º     º
   Echo.
   Echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍ»
   If %1==G Echo º TU AS GAGNE º
   If %1==P Echo º TU AS PERDU º
   If %1==M Echo º  MATCH Nul  º
   Echo ÈÍÍÍÍÍÍÍÍÍÍÍÍͼ
   Pause>Nul
   Goto Reset
   
:sauve

   Cls
   Set nom=
   Echo Sauvegarde existantes :
   Echo.
   If exist *.Sauv Dir /B *.Sauv
   If not exist *.Sauv Echo Aucune sauvegard cree !!
   Echo.
   Set/P nom=Ecriver le nom de votre sauvegarde:
   If not defined nom goto sauve
   Set nom=%nom%.Sauv
   If not exist %nom% Goto crypto
   :ED
   Echo Cette Sauvegarde existe deja .
   Echo Voulez-vous la remplacer: - Oui = 1
   Echo                           - Non = 2
   Set/P choix=Choix :
   If not defined choix Goto ED
   If %choix%==1 Goto crypto
   If %choix%==2 Goto sauve
   Goto ED
   
   :crypto
      
      Setlocal Disabledelayedexpansion
      Set crypto=
      For %%A in (%C11%,%C12%,%C13%,%C21%,%C22%,%C23%,%C31%,%C32%,%C33%) do (
         If %%A==O Call :aleaJ crypto
         If %%A==X Call :aleaO crypto
         If %%A==ú Call :aleaV crypto
      )
      Echo %crypto%%nbT%>%nom%
      Cls
      Echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
      Echo º  Partie sauvegard‚e !! º
      Echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
      Pause>Nul
      Goto Reset
      
   :aleaJ
      
      ::Nombre Paire
      Call :alea 9 aleaJ
      Set/A modulo=%aleaJ% %% 2
      If not %modulo%==0 Goto aleaJ
      Set crypto=%crypto%%aleaJ%
      Set %~1=%crypto%
      Goto :eof
      
   :aleaO
      
      ::Nombre Inpaire
      Call :alea 8 aleaO
      Set/A modulo=%aleaO% %% 2
      If %modulo%==0 Goto aleaO
      Set crypto=%crypto%%aleaO%
      Set %~1=%crypto%
      Goto :eof
   
   :aleaV
      
      ::Lettres
      Call :alea 5 aleaV
      Set aleaV=%aleaV:1=Z%
      Set aleaV=%aleaV:2=X%
      Set aleaV=%aleaV:3=W%
      Set aleaV=%aleaV:4=Y%
      Set aleaV=%aleaV:5=F%
      Set crypto=%crypto%%aleaV%
      Set %~1=%crypto%
      Goto :eof
      
:lecture

   Setlocal Disabledelayedexpansion
   Cls
   set nom=
   Echo Sauvegarde existantes :
   Echo.
   If exist *.Sauv Dir /B *.Sauv
   Echo.
   Set/P nom=Ecriver le nom de la sauvegarde a charger:
   If not defined nom goto lecture
   Set nom=%nom%.Sauv
   If not exist %nom% goto lecture
   Set/P sauv=<%nom%
   Set nbT=%sauv:~-1%
   Set nbL=1
   Set nbC=1
   
   :BF
      
      Set/A tB=%sauv:~0,1%
      If %tB%==0 (
         Set tBF=ú
         Goto finBF
      )
      Set/A tB=%sauv:~0,1%%%2
      If %tB%==0 Set tBF=O
      If not %tB%==0 Set tBF=X
      
      :finBF
      
         Set C%nbC%%nbL%=%tBF%
         Set sauv=%sauv:~1%
         If %nbL%%nbC%==33 Goto comsauv
         If %nbL%==3 (
            Set nbL=0
            Set/A nbC+=1
         )
         Set/A nbL+=1
         Set tBF=%sauv:~0,1%
      
         Goto BF
         
:Logo

   Echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
   Echo º                                 º
   Echo º             MORPION             º
   Echo º                                 º
   Echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
   Echo.
   Goto :eof
   
:Supert
   
   Set H1=%C11%%C12%%C13%
   Set H2=%C21%%C22%%C23%
   Set H3=%C31%%C32%%C33%
   Set V1=%C11%%C21%%C31%
   Set V2=%C12%%C22%%C32%
   Set V3=%C13%%C23%%C33%
   Set D1=%C11%%C22%%C33%
   Set D2=%C13%%C22%%C31%
   For %%A in (%H1%,%H2%,%H3%,%V1%,%V2%,%V3%,%D1%,%D2%) do (
      If %%A==XXX Call :fin P
      If %%A==OOO Call :fin G
   )
   If not %C11%==ú If not %C12%==ú If not %C13%==ú (
      If not %C21%==ú If not %C22%==ú If not %C23%==ú (
         If not %C31%==ú If not %C32%==ú If not %C33%==ú (
            set nbT=9
            Call :fin M
         )
      )
   )
   Goto :eof





Dernière édition par LG le Lun 30 Juil 2012 - 11:46; édité 9 fois

______________________________________________________
Clickez sur Saturne pour voir mes tutoriels et sur la Terre pour voir mon Forum:


Skype
Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message Morpion Invincible 
Salut Mr. Green

J'aime, bien joué Okay




______________________________________________________
│Øδ@π.
Visiter le site web du posteur Skype
Répondre en citant
Message Morpion Invincible 
Super Bravo !

mais l' IA est facile a battre !




______________________________________________________
hey C'est moi où le batch c'est génial ? Il me surprend de plus en plus !
Visiter le site web du posteur MSN Skype
Répondre en citant
Message Morpion Invincible 
Comment as-tu fait pour le battre ,nathsou ?




______________________________________________________
Clickez sur Saturne pour voir mes tutoriels et sur la Terre pour voir mon Forum:


Skype
Répondre en citant
Message Morpion Invincible 
salut Mr. Green

Avec une technique que j'ai appris (merci rekah), une IA ne pourrais pas la contrer sachant que même un humain se fait avoir, sauf si bien sur la technique est travailler sur le développement de celle-ci.

Ce qu'il faut faire c'est développer l'IA sur toutes les possibilités possibles !

Si tu a besoin.. MP Okay




______________________________________________________
│Øδ@π.
Visiter le site web du posteur Skype
Répondre en citant
Message Morpion Invincible 
Comment puis-je amélioré le morpion si la technique n'est même pas expliquéé !!




______________________________________________________
Clickez sur Saturne pour voir mes tutoriels et sur la Terre pour voir mon Forum:


Skype
Répondre en citant
Message Morpion Invincible 
Je serais toi, je ferais une recherche sur internet pour trouver toutes les techniques possibles.

Ensuite réfléchit à un conditionnement pour la contrer.

Wink




______________________________________________________
│Øδ@π.
Visiter le site web du posteur Skype
Répondre en citant
Message Morpion Invincible 
Super je vois que j'ai de la concurrence Shocked Twisted Evil .

Sinon il y a beaucoup plus de possibilité que sur le mien et la grille pour jouer est 2 x mieux Embarassed Wink .

Mis a part quelques bugs et que je gagne a tous les coups (j'ai une techniques pas mal Twisted Evil , meme sur le mien je gagne a tous les coups .. Crying or Very sad ) Bien joué ! Okay Mr. Green .




______________________________________________________
Pause momentanée de programmation..
Répondre en citant
Message Morpion Invincible 
Justement, trouver un conditionnement pour contrer cette technique dés le départ.




______________________________________________________
│Øδ@π.
Visiter le site web du posteur Skype
Répondre en citant
Message Morpion Invincible 
Désolé je n'est pas réussi à trouver cette technique sur internet




______________________________________________________
Clickez sur Saturne pour voir mes tutoriels et sur la Terre pour voir mon Forum:


Skype
Répondre en citant
Message Morpion Invincible 
Re Very Happy

Je vais t'aider un peu ..

Donc tout d'abord on vas prendre par exemple ma technique :


Qui consiste donc a jouer d'abord dans 2 diagonales opposés (1 et 2), automatiquement l'adversaire vous bloquera par le milieu,

mais tout n'est pas perdu puisqu'il ne vous reste plus qu'à jouer sur une autre diagonale (3) et enfin finir par une des deux cases présentés sur la photo (les 4).


Ensuite une fois que tu connais une technique il ne te reste plus qu'à trouver des conditionnement pour essayer de la bloquer
(ex : si le joueur commence tout au départ par jouer une diagonale il serait préférable de le bloquer par l'autre diagonale..).


EDIT :

Il faudrait aussi que tu commence à construire la stratégie de l'IA (c'est à dire le rendre un peu plus intelligent avec des conditionnements, ex : Si a1 = une croix et b2 = une croix, bloquez en c3 avec un rond (par contre avec du vrai code là c'est juste pour expliquer mdr Laughing )).




______________________________________________________
Pause momentanée de programmation..
Répondre en citant
Message Morpion Invincible 
D'accord , alors O = ordinateur ,J = joueur

Tour Case Personne
1 A1 J
2 B2 O
3 C3 J
4 C2 O
5 A2 J
6 A3 O
7 C1 J
8 B1 O
9 B3 J

Matche nul




______________________________________________________
Clickez sur Saturne pour voir mes tutoriels et sur la Terre pour voir mon Forum:


Skype
Répondre en citant
Message Morpion Invincible 
Aucun technique n'est infaillible cependant tu t'es trompé pour le 5 : tu aurais du joué A3 plutôt que A2 ..




______________________________________________________
Pause momentanée de programmation..
Répondre en citant
Message Morpion Invincible 
Non , quand cases verticales sont occupé (B2 et C2) par l' ordinateur il est normale de jouer en A2 pour ne pas le laissé gagner !!




______________________________________________________
Clickez sur Saturne pour voir mes tutoriels et sur la Terre pour voir mon Forum:


Skype
Répondre en citant
Message Morpion Invincible 
Ah oui excuse moi je n'avais pas vus, dans se cas là c'est bien car l'ordinateur t'a bloqué en jouant autre part de sortes que tu sois obligé de le bloquer.

Mais réessaye avec cette technique tu vas voir tu vas plus gagner que avoir de match nul ou avoir perdu Wink .

Après il te faut dénicher de nouvelles techniques et ajouter des conditionnement si tu veux un IA un peu plus fort.




______________________________________________________
Pause momentanée de programmation..
Message Morpion Invincible 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 2
Aller à la page: 1, 2  >
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch