Je vous laisse essayer:
Code:
@Echo Off
If not exist Sauvegardes Md Sauvegardes
Cd Sauvegardes
timeout/? || Call :Timeout
Call :Info
:Reset
Cls
Color 9E
Set Pion=X
Set nbT=0
For %%A in (11,12,13,21,22,23,31,32,33) do Set C%%A=ú
:Menu
Set ToucheP=
Set choix=1
Set nbBMax=3
Set Echap=1
Set Barre=30
Set Mod=2
Call :Bouton %Echap%%Mod%%Barre% %choix% %nbBMax%
:Gui1
Cls
Echo %B1%
Echo %B2% Jouer une nouvelle partie %B2%
Echo %B3%
Echo %B4% Jouer une partie enregistree %B4%
Echo %B5%
Echo %B6% Quitter %B6%
Echo %B7%
Call :PosM %Echap%%Mod%%Barre% %choix% %nbBMax% choix ToucheP
If not defined ToucheP Goto Gui1
Set Choix=%ToucheP%
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
Set ToucheP=
Set choix=1
Set nbBMax=2
Set Echap=1
Set Barre=5
Set Mod=2
Call :Bouton %Echap%%Mod%%Barre% %choix% %nbBMax%
:Gui2
Cls
Echo Voulez vous commencer en premier:
Echo %B1%
Echo %B2% Oui %B2%
Echo %B3%
Echo %B4% Non %B4%
Echo %B5%
Call :PosM %Echap%%Mod%%Barre% %choix% %nbBMax% choix ToucheP
If not defined ToucheP Goto Gui2
Set Choix=%ToucheP%
If %choix%==1 Goto affiche
If %choix%==2 (
Set/A nbT+=1
Call :Supert
Goto IA
)
Goto com
:affiche
Call :Supert
:comsauv
Setlocal Enabledelayedexpansion
Set ToucheP=
Set choix=1
Set nbBMax=10
Set SpecialeEchap=1
Set CaseEchap=10
Set Echap=2
Set Barre=1
Set Mod=1
Call :Bouton %Echap%%Mod%%Barre% %choix% %nbBMax%
:Gui3
Call :SPEchap %SpecialeEchap%%Mod%%CaseEchap%
cls
Set choix=
Echo %B1% º %B4% º %B7%
Echo A %B2%%C11%%B2% º %B5%%C12%%B5% º %B8%%C13%%B8%
Echo %B3% º %B6% º %B9%
Echo ÍÍÍÍÍÎÍÍÍÍÍÎÍÍÍÍÍ
Echo %B10% º %B13% º %B16%
Echo B %B11%%C21%%B11% º %B14%%C22%%B14% º %B17%%C23%%B17%
Echo %B12% º %B15% º %B18%
Echo ÍÍÍÍÍÎÍÍÍÍÍÎÍÍÍÍÍ
Echo %B19% º %B22% º %B25%
Echo C %B20%%C31%%B20% º %B23%%C32%%B23% º %B26%%C33%%B26%
Echo %B21% º %B24% º %B27%
Echo %B28%
Echo %B29%X%B29% SAUVER
Echo %B30%
pause
Call :PosM %Echap%%Mod%%Barre% %choix% %nbBMax% choix ToucheP
If not defined ToucheP Goto Gui3
Set choix=%choix:1=C11%
Set choix=%choix:2=C12%
Set choix=%choix:3=C13%
Set choix=%choix:4=C21%
Set choix=%choix:5=C22%
Set choix=%choix:6=C23%
Set choix=%choix:7=C31%
Set choix=%choix:8=C32%
Set choix=%choix:9=C33%
If %choix%==10 Goto sauve
Setlocal Enabledelayedexpansion
If not !%choix%!==ú Goto affiche
Setlocal Disabledelayedexpansion
Set %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
: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
:PosM
Set P1=%1
Set B=%2
:BouclePos
Timeout /T -1 >nul
Timeout /T 1 > temp.ini
For /F "delims=" %%A in ('type temp.ini') do Set "temp1=%%A"
If not %temp1:~-1%==0 (
Set %~5=%B%
Goto :eof
)
If %B%==%3 (
Set B=1
) else (
Set/a B+=1
)
Call :Bouton %P1% %B% %3
Set %~4=%B%
Goto :eof
:Bouton
Set nbB=%1
Set P3=%nbB:~0,1%
Set P4=%nbB:~1,1%
Set P5=%nbB:~2%
Call :Mod%P4% %3 %2 P1 P2
If %P3%==1 (
Set "P3= > nul & Echo."
) Else (
Set "P3= "
)
Set nbB=1
If %P4%==1 (
Set BV1=1
Set BV2=3
) Else (
Set BV1=2
Set BV2=2
)
Goto BoucleVide1
:BoucleVide1
Set "B%nbB%=%P3%"
If %nbB% GEQ %P2% (
Set nbB=2
goto BoucleVide2
)
Set/A nbB+=2
Set "B%nbB%=%P3%"
Set/A nbB+=%BV1%
Goto BoucleVide1
:BoucleVide2
Set "B%nbB%= "
If %nbB% GEQ %P2% (
Set nbB=1
Set BV1=1
Set Bar=
goto BoucleBar
)
Set/A nbB+=%BV2%
Goto BoucleVide2
:BoucleBar
Set Bar=%Bar%Í
If %nbB%==%P5% goto FinBar
Set/A nbB+=1
Goto BoucleBar
:FinBar
Set B%P1%=É%Bar%»
Set/A P1+=1
Set B%P1%=º
Set/A P1+=1
Set B%P1%=È%Bar%¼
Goto :eof
:Mod1
Set nbB=%1
Set/A %~3=%2*3-2
Set/A %~4=%1*3
Goto :eof
:Mod2
Set nbB=%1
Set/A %~3=(%2-1)*2+1
Set/A %~4=(%1*2)+1
Goto :eof
:SPEchap
Set P1=%1
Call :Mod%P1:~1,1% %P1:~2% %P1:~2% P2
If defined B%P2% (
If "!B%P2%:~0,1!"=="É" Goto :eof
)
If %P1:~0,1%==1 (
Set "P3= Rien > nul & Echo."
) Else (
Set "P3= "
)
Set "B%P2%=%P3%"
Set/A P2+=2
Set "B%P2%=%P3%"
Goto :eof
:Timeout
Cls
Echo La commande "Timeout" n'est pas disponible sur votre version de windows !!
Echo Mais vous pouvez essaye de la telecharger et de la placer dans "%CD%\" !!
Pause>nul
exit
:Info
Cls
Echo Pour: - Deplacer le curseur, appuyez sur une touche et attendez 1 seconde
Echo - Valider, appuyez sur deux touches avec moins 1 seconde d'intervalle
Pause>nul
Goto :eof
Dernière édition par LG le Mar 31 Juil 2012 - 09:01; édité 3 fois
______________________________________________________
Clickez sur Saturne pour voir mes tutoriels et sur la Terre pour voir mon Forum: