Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 2 sur 2
Aller à la page: <  1, 2
-- Morpion --
Auteur Message
Répondre en citant
Message -- Morpion -- 
Revue du message précédent :

Encore merci Logan Okay . J'ai suivi tes conseils sa me donne se petit bout de code :
Code:
:: if %a% / %b% / %c% ..=="un chiffre" sont là pour éviter de remplacer une case déjà cocher

::-- Pour Gagner --
if %a%==%S1% if %b%==%S1% if %c%==3 ( set c=%S1%
goto :verif
)
if %a%==%S1% if %c%==%S1% if %b%==2 ( set b=%S1%
goto :verif
)
if %c%==%S1% if %b%==%S1% if %a%==1 ( set a=%S1%
goto :verif
)
if %d%==%S1% if %e%==%S1% if %f%==6 ( set f=%S1%
goto :verif
)
if %d%==%S1% if %f%==%S1% if %e%==5 ( set e=%S1%
goto :verif
)
if %f%==%S1% if %e%==%S1% if %d%==4 ( set d=%S1%
goto :verif
)
if %g%==%S1% if %h%==%S1% if %i%==9 ( set i=%S1%
goto :verif
)
if %g%==%S1% if %i%==%S1% if %h%==8 ( set h=%S1%
goto :verif
)
if %i%==%S1% if %h%==%S1% if %g%==7 ( set g=%S1%
goto :verif
)
if %a%==%S1% if %d%==%S1% if %g%==7 ( set g=%S1%
goto :verif
)
if %a%==%S1% if %g%==%S1% if %d%==4 ( set d=%S1%
goto :verif
)
if %g%==%S1% if %d%==%S1% if %a%==1 ( set a=%S1%
goto :verif
)
if %b%==%S1% if %e%==%S1% if %h%==8 ( set h=%S1%
goto :verif
)
if %b%==%S1% if %h%==%S1% if %e%==5 ( set e=%S1%
goto :verif
)
if %h%==%S1% if %e%==%S1% if %b%==2 ( set b=%S1%
goto :verif
)
if %c%==%S1% if %f%==%S1% if %i%==9 ( set i=%S1%
goto :verif
)
if %c%==%S1% if %i%==%S1% if %f%==6 ( set f=%S1%
goto :verif
)
if %i%==%S1% if %f%==%S1% if %c%==3 ( set c=%S1%
goto :verif
)
if %a%==%S1% if %e%==%S1% if %i%==7 ( set i=%S1%
goto :verif
)
if %a%==%S1% if %i%==%S1% if %e%==5 ( set e=%S1%
goto :verif
)
if %e%==%S1% if %i%==%S1% if %a%==1 ( set a=%S1%
goto :verif
)

:: -- Pour Bloquer --
if %a%==%S2% if %b%==%S2% if %c%==3 ( set c=%S1%
goto :verif
)
if %a%==%S2% if %c%==%S2% if %b%==2 ( set b=%S1%
goto :verif
)
if %c%==%S2% if %b%==%S2% if %a%==1 ( set a=%S1%
goto :verif
)
if %d%==%S2% if %e%==%S2% if %f%==6 ( set f=%S1%
goto :verif
)
if %d%==%S2% if %f%==%S2% if %e%==5 ( set e=%S1%
goto :verif
)
if %f%==%S2% if %e%==%S2% if %d%==4 ( set d=%S1%
goto :verif
)
if %g%==%S2% if %h%==%S2% if %i%==9 ( set i=%S1%
goto :verif
)
if %g%==%S2% if %i%==%S2% if %h%==8 ( set h=%S1%
goto :verif
)
if %i%==%S2% if %h%==%S2% if %g%==7 ( set g=%S1%
goto :verif
)
if %a%==%S2% if %d%==%S2% if %g%==7 ( set g=%S1%
goto :verif
)
if %a%==%S2% if %g%==%S2% if %d%==4 ( set d=%S1%
goto :verif
)
if %g%==%S2% if %d%==%S2% if %a%==1 ( set a=%S1%
goto :verif
)
if %b%==%S2% if %e%==%S2% if %h%==8 ( set h=%S1%
goto :verif
)
if %b%==%S2% if %h%==%S2% if %e%==5 ( set e=%S1%
goto :verif
)
if %h%==%S2% if %e%==%S2% if %b%==2 ( set b=%S1%
goto :verif
)
if %c%==%S2% if %f%==%S2% if %i%==9 ( set i=%S1%
goto :verif
)
if %c%==%S2% if %i%==%S2% if %f%==6 ( set f=%S1%
goto :verif
)
if %i%==%S2% if %f%==%S2% if %c%==3 ( set c=%S1%
goto :verif
)
if %a%==%S2% if %e%==%S2% if %i%==7 ( set i=%S1%
goto :verif
)
if %a%==%S2% if %i%==%S2% if %e%==5 ( set e=%S1%
goto :verif
)
if %e%==%S2% if %i%==%S2% if %a%==1 ( set a=%S1%
goto :verif
)

Code:
@echo off
title Morpion
color f8

:: -----------------------------------------------------------------------------------------------------------------------
:: --------------------------------------------    PAR M@tHieu_44    ----------------------------------------------
:: -----------------------------------------------------------------------------------------------------------------------

:: -- Introduction --
echo.
echo.
echo.
echo    888b     d888                           d8b                   
echo    8888b   d8888                           Y8P                   
echo    88888b.d88888                                                 
echo    888Y88888P888  .d88b.  888d888 88888b.  888  .d88b.  88888b. 
echo    888 Y888P 888 d88""88b 888P"   888 "88b 888 d88""88b 888 "88b
echo    888  Y8P  888 888  888 888     888  888 888 888  888 888  888
echo    888   "   888 Y88..88P 888     888 d88P 888 Y88..88P 888  888
echo    888       888  "Y88P"  888     88888P"  888  "Y88P"  888  888
echo                                   888                           
echo                                   888                           
echo                                   888              BY M@tHieu_44             
echo.
echo.
echo.
echo Appuyez sur une touche pour accéder au jeu.
pause>nul

::-- Menu du jeu --
:menu
cls
echo --------------------------------------------------------------------------------
echo ----------------------------------  MORPION  -----------------------------------
echo --------------------------------------------------------------------------------
echo.
echo.
echo Veuillez choisir un mode de jeu :
echo.
echo.
echo 1 - 1 joueur (contre l'ordi)
echo.
echo 2 - 2 joueurs
echo.
echo.
set /P mode=Mode de jeu choisi (1 ou 2) :
cls
if not defined mode goto :erreur-menu
if %mode%==1 goto :1j
if %mode%==2 goto :2j

:erreur-menu
cls
echo --------------------------------------------------------------------------------
echo ----------------------------------  ERREUR  ------------------------------------
echo --------------------------------------------------------------------------------
echo.
echo Vous devez choisir entre le choix 1 (pour 1 joueur) et 2 (pour 2 joueurs).
echo.
echo Appuyez sur une touche pour revenir au jeu.
pause>nul
goto :menu

:1j
:: -- Attribution d'une valeur de 1 à 9 pour chaque variable qui sera ensuite présente dans le "tableau" du morpion --
:d1
set a=1
set b=2
set c=3
set d=4
set e=5
set f=6
set g=7
set h=8
set i=9
set t=1

:: -- Si la variable 't' (qui représente le nombre de tour) est un nombre impair,  on attribue la valeur  '1', on sais donc que c'est le joueur 1 qui joue --
:: -- Si c'est un nombre pair, on attribue la valeur  '2', on sais donc que c'est le l'ordinateur qui joue --
:: -- Si la variable 't' est égal a 10, la partie et fini et cela signifie que personne n'a gagné --
:p1
set ch=NULL
if %t%==2 goto :1j1
if %t%==4 goto :1j1
if %t%==6 goto :1j1
if %t%==8 goto :1j1
if %t%==10 goto :tmpis1
set S2=O
set J=1

goto :s1

:1j1
set ch=NULL
cls
set S1=X
set J=2

::-- Pour Gagner --
if %a%==%S1% if %b%==%S1% if %c%==3 ( set c=%S1%
goto :verif
)
if %a%==%S1% if %c%==%S1% if %b%==2 ( set b=%S1%
goto :verif
)
if %c%==%S1% if %b%==%S1% if %a%==1 ( set a=%S1%
goto :verif
)
if %d%==%S1% if %e%==%S1% if %f%==6 ( set f=%S1%
goto :verif
)
if %d%==%S1% if %f%==%S1% if %e%==5 ( set e=%S1%
goto :verif
)
if %f%==%S1% if %e%==%S1% if %d%==4 ( set d=%S1%
goto :verif
)
if %g%==%S1% if %h%==%S1% if %i%==9 ( set i=%S1%
goto :verif
)
if %g%==%S1% if %i%==%S1% if %h%==8 ( set h=%S1%
goto :verif
)
if %i%==%S1% if %h%==%S1% if %g%==7 ( set g=%S1%
goto :verif
)
if %a%==%S1% if %d%==%S1% if %g%==7 ( set g=%S1%
goto :verif
)
if %a%==%S1% if %g%==%S1% if %d%==4 ( set d=%S1%
goto :verif
)
if %g%==%S1% if %d%==%S1% if %a%==1 ( set a=%S1%
goto :verif
)
if %b%==%S1% if %e%==%S1% if %h%==8 ( set h=%S1%
goto :verif
)
if %b%==%S1% if %h%==%S1% if %e%==5 ( set e=%S1%
goto :verif
)
if %h%==%S1% if %e%==%S1% if %b%==2 ( set b=%S1%
goto :verif
)
if %c%==%S1% if %f%==%S1% if %i%==9 ( set i=%S1%
goto :verif
)
if %c%==%S1% if %i%==%S1% if %f%==6 ( set f=%S1%
goto :verif
)
if %i%==%S1% if %f%==%S1% if %c%==3 ( set c=%S1%
goto :verif
)
if %a%==%S1% if %e%==%S1% if %i%==7 ( set i=%S1%
goto :verif
)
if %a%==%S1% if %i%==%S1% if %e%==5 ( set e=%S1%
goto :verif
)
if %e%==%S1% if %i%==%S1% if %a%==1 ( set a=%S1%
goto :verif
)

:: -- Pour Bloquer --
if %a%==%S2% if %b%==%S2% if %c%==3 ( set c=%S1%
goto :verif
)
if %a%==%S2% if %c%==%S2% if %b%==2 ( set b=%S1%
goto :verif
)
if %c%==%S2% if %b%==%S2% if %a%==1 ( set a=%S1%
goto :verif
)
if %d%==%S2% if %e%==%S2% if %f%==6 ( set f=%S1%
goto :verif
)
if %d%==%S2% if %f%==%S2% if %e%==5 ( set e=%S1%
goto :verif
)
if %f%==%S2% if %e%==%S2% if %d%==4 ( set d=%S1%
goto :verif
)
if %g%==%S2% if %h%==%S2% if %i%==9 ( set i=%S1%
goto :verif
)
if %g%==%S2% if %i%==%S2% if %h%==8 ( set h=%S1%
goto :verif
)
if %i%==%S2% if %h%==%S2% if %g%==7 ( set g=%S1%
goto :verif
)
if %a%==%S2% if %d%==%S2% if %g%==7 ( set g=%S1%
goto :verif
)
if %a%==%S2% if %g%==%S2% if %d%==4 ( set d=%S1%
goto :verif
)
if %g%==%S2% if %d%==%S2% if %a%==1 ( set a=%S1%
goto :verif
)
if %b%==%S2% if %e%==%S2% if %h%==8 ( set h=%S1%
goto :verif
)
if %b%==%S2% if %h%==%S2% if %e%==5 ( set e=%S1%
goto :verif
)
if %h%==%S2% if %e%==%S2% if %b%==2 ( set b=%S1%
goto :verif
)
if %c%==%S2% if %f%==%S2% if %i%==9 ( set i=%S1%
goto :verif
)
if %c%==%S2% if %i%==%S2% if %f%==6 ( set f=%S1%
goto :verif
)
if %i%==%S2% if %f%==%S2% if %c%==3 ( set c=%S1%
goto :verif
)
if %a%==%S2% if %e%==%S2% if %i%==7 ( set i=%S1%
goto :verif
)
if %a%==%S2% if %i%==%S2% if %e%==5 ( set e=%S1%
goto :verif
)
if %e%==%S2% if %i%==%S2% if %a%==1 ( set a=%S1%
goto :verif
)
set /a ch=%random% %% 9 + 1
::-- On vérifie que %ch% choisi au hasard n'est  pas déjà égal à un nombre déjà choisi --
if %ch%==1 if %a%==X goto :1j1
if %ch%==1 if %a%==O goto :1j1
if %ch%==2 if %b%==X goto :1j1
if %ch%==2 if %b%==O goto :1j1
if %ch%==3 if %c%==X goto :1j1
if %ch%==3 if %c%==O goto :1j1
if %ch%==4 if %d%==X goto :1j1
if %ch%==4 if %d%==O goto :1j1
if %ch%==5 if %e%==X goto :1j1
if %ch%==5 if %e%==O goto :1j1
if %ch%==6 if %f%==X goto :1j1
if %ch%==6 if %f%==O goto :1j1
if %ch%==7 if %g%==X goto :1j1
if %ch%==7 if %g%==O goto :1j1
if %ch%==8 if %h%==X goto :1j1
if %ch%==8 if %h%==O goto :1j1
if %ch%==9 if %i%==X goto :1j1
if %ch%==9 if %i%==O goto :1j1
echo L'ordinateur a joué.
if %ch%==1 set a=%S1%
if %ch%==2 set b=%S1%
if %ch%==3 set c=%S1%
if %ch%==4 set d=%S1%
if %ch%==5 set e=%S1%
if %ch%==6 set f=%S1%
if %ch%==7 set g=%S1%
if %ch%==8 set h=%S1%
if %ch%==9 set i=%S1%
goto :sss

:: -- Début du jeu --
:: -- Partie "graphique"
:s1
echo --------------------------------------------------------------------------------
echo ------------------------ = = = = =  JOUEUR  = = = = = ------------------------
echo --------------------------------------------------------------------------------
echo.
echo.
echo          %a% │ %b% │ %c%
echo         ───┼───┼───
echo          %d% │ %e% │ %f%
echo         ───┼───┼───
echo          %g% │ %h% │ %i%
echo.
echo.
set /P ch=Quelle case voulez-vous cocher ? (un nombre : 1, 2, 3 ..)
:: --Si la variable 'ch' n'est pas défini ou est inférieur à 1 ou supérieur à  9, on se rend à l'étiquette :erreur1 --
if not defined ch goto :erreur1
if %ch% GTR 9 goto :erreur1
if %ch% LSS 1 goto :erreur1

::-- Vérifie si la case choisi n'est pas dékà coché --
if %ch%==1 if %a%==X goto :erreur1
if %ch%==1 if %a%==O goto :erreur1
if %ch%==2 if %b%==X goto :erreur1
if %ch%==2 if %b%==O goto :erreur1
if %ch%==3 if %c%==X goto :erreur1
if %ch%==3 if %c%==O goto :erreur1
if %ch%==4 if %d%==X goto :erreur1
if %ch%==4 if %d%==O goto :erreur1
if %ch%==5 if %e%==X goto :erreur1
if %ch%==5 if %e%==O goto :erreur1
if %ch%==6 if %f%==X goto :erreur1
if %ch%==6 if %f%==O goto :erreur1
if %ch%==7 if %g%==X goto :erreur1
if %ch%==7 if %g%==O goto :erreur1
if %ch%==8 if %h%==X goto :erreur1
if %ch%==8 if %h%==O goto :erreur1
if %ch%==9 if %i%==X goto :erreur1
if %ch%==9 if %i%==O goto :erreur1

:verif
:: -- Si el choix est 1, on  redéfini la variable 'a' en lui attribuant la valeur de 'S' (qui est soit une croix (X), soit un rond (O) selon si c'est au joueur 1 ou 2 de jouer) --
if %ch%==1 set a=%S2%
if %ch%==2 set b=%S2%
if %ch%==3 set c=%S2%
if %ch%==4 set d=%S2%
if %ch%==5 set e=%S2%
if %ch%==6 set f=%S2%
if %ch%==7 set g=%S2%
if %ch%==8 set h=%S2%
if %ch%==9 set i=%S2%

:sss
:: -- La variable 't' représente le nombre de tour, on lui attribue +1 à chaque tour --
set /A t+=1

:: -- On vérifie que le joueur n'a pas gagné (en vérifiant si trois variable alignés (cf. tableau) horizontalement, verticalement ou diagonalement ont la même valeur (X et O)) --
if %a%==%b% if %b%==%c% goto :gagne1
if %a%==%d% if %d%==%g% goto :gagne1
if %a%==%e% if %e%==%i% goto :gagne1
if %i%==%f% if %f%==%c% goto :gagne1
if %i%==%h% if %h%==%g% goto :gagne1
if %d%==%e% if %e%==%f% goto :gagne1
if %b%==%e% if %e%==%h% goto :gagne1

:: -- Si les conditions ci-dessus ne sont pas réalisés, on retourne au jeu --
goto :p1

:: -- Si personne n'a gagné, on affiche le message ci-dessous --
:tmpis1
cls
echo Pas de chance, personne n'a gané ..
echo.
echo.
echo.
echo          %a% │ %b% │ %c%
echo         ───┼───┼───
echo          %d% │ %e% │ %f%
echo         ───┼───┼───
echo          %g% │ %h% │ %i%
echo.
echo.
pause
goto :rejouer

:: -- Si un joueur a gagné, on affiche le message ci-dessous --
:gagne1
cls
if %J%==1 echo Bravo, vous avez gagné !
if %J%==2 echo Dommage, vous avez été battu par l'ordinateur..
echo.
echo.
echo.
echo          %a% │ %b% │ %c%
echo         ───┼───┼───
echo          %d% │ %e% │ %f%
echo         ───┼───┼───
echo          %g% │ %h% │ %i%
echo.
echo.
pause
goto :rejouer

:: --Si la variable 'ch' précédante n'a pas été défini ou est inférieur à 1 ou supérieur à  9, on se rend ici pour afficher un message d'erreur --
:erreur1
cls
echo --------------------------------------------------------------------------------
echo ----------------------------------  ERREUR  ------------------------------------
echo --------------------------------------------------------------------------------
echo.
echo Vous devez choisir un nombre entre 1 et 9 non déjà choisi.
echo.
echo Appuyez sur une touche pour revenir au jeu.
pause>nul
cls
goto :s1

:2j
:j1
:: -- Attribution d'une valeur de 1 à 9 pour chaque variable qui sera ensuite présente dans le "tableau" du morpion --
:d
set a=1
set b=2
set c=3
set d=4
set e=5
set f=6
set g=7
set h=8
set i=9
set t=1

:: -- Si la variable 't' (qui représente le nombre de tour) est un nombre impair,  on attribue la valeur  '1', on sais donc que c'est le joueur 1 qui joue --
:: -- Si c'est un nombre pair, on attribue la valeur  '2', on sais donc que c'est le joueur 2 qui joue --
:: -- Si la variable 't' est égal a 10, la partie et fini et cela signifie que personne n'a gagné --
:p
set ch=NULL
if %t%==10 goto :tmpis
if %t%==1 goto :j1
if %t%==3 goto :j1
if %t%==5 goto :j1
if %t%==7 goto :j1
if %t%==9 goto :j1
set S=O
set J=2

goto :s

:j1
set S=X
set J=1

:: -- Début du jeu --
:: -- Partie "graphique"
:s
cls
echo --------------------------------------------------------------------------------
echo ------------------------ = = = = =  JOUEUR %J%  = = = = = ------------------------
echo --------------------------------------------------------------------------------
echo.
echo.
echo          %a% │ %b% │ %c%
echo         ───┼───┼───
echo          %d% │ %e% │ %f%
echo         ───┼───┼───
echo          %g% │ %h% │ %i%
echo.
echo.
set /P ch=Quelle case voulez-vous cocher ? (un nombre : 1, 2, 3 ..)
:: --Si la variable 'ch' n'est pas défini ou est inférieur à 1 ou supérieur à  9, on se rend à l'étiquette :erreur --
if not defined ch goto :erreur
if %ch% GTR 9 goto :erreur
if %ch% LSS 1 goto :erreur

::-- Vérifie si la case choisi n'est pas dékà coché --
if %ch%==1 if %a%==X goto :erreur
if %ch%==1 if %a%==O goto :erreur
if %ch%==2 if %b%==X goto :erreur
if %ch%==2 if %b%==O goto :erreur
if %ch%==3 if %c%==X goto :erreur
if %ch%==3 if %c%==O goto :erreur
if %ch%==4 if %d%==X goto :erreur
if %ch%==4 if %d%==O goto :erreur
if %ch%==5 if %e%==X goto :erreur
if %ch%==5 if %e%==O goto :erreur
if %ch%==6 if %f%==X goto :erreur
if %ch%==6 if %f%==O goto :erreur
if %ch%==7 if %g%==X goto :erreur
if %ch%==7 if %g%==O goto :erreur
if %ch%==8 if %h%==X goto :erreur
if %ch%==8 if %h%==O goto :erreur
if %ch%==9 if %i%==X goto :erreur
if %ch%==9 if %i%==O goto :erreur

:: -- Si el choix est 1, on  redéfini la variable 'a' en lui attribuant la valeur de 'S' (qui est soit une croix (X), soit un rond (O) selon si c'est au joueur 1 ou 2 de jouer) --
if %ch%==1 set a=%S%
if %ch%==2 set b=%S%
if %ch%==3 set c=%S%
if %ch%==4 set d=%S%
if %ch%==5 set e=%S%
if %ch%==6 set f=%S%
if %ch%==7 set g=%S%
if %ch%==8 set h=%S%
if %ch%==9 set i=%S%

:: -- La variable 't' représente le nombre de tour, on lui attribue +1 à chaque tour --
set /A t+=1

:: -- On vérifie que le joueur n'a pas gagné (en vérifiant si trois variable alignés (cf. tableau) horizontalement, verticalement ou diagonalement ont la même valeur (X et O)) --
if %a%==%b% if %b%==%c% goto :gagne
if %a%==%d% if %d%==%g% goto :gagne
if %a%==%e% if %e%==%i% goto :gagne
if %i%==%f% if %f%==%c% goto :gagne
if %i%==%h% if %h%==%g% goto :gagne
if %d%==%e% if %e%==%f% goto :gagne
if %b%==%e% if %e%==%h% goto :gagne

:: -- Si les conditions ci-dessus ne sont pas réalisés, on retourne au jeu --
goto :p

:: -- Si personne n'a gagné, on affiche le message ci-dessous --
:tmpis
cls
echo Pas de chance, personne n'a gané ..
echo.
echo.
echo.
echo          %a% │ %b% │ %c%
echo         ───┼───┼───
echo          %d% │ %e% │ %f%
echo         ───┼───┼───
echo          %g% │ %h% │ %i%
echo.
echo.
pause
goto :rejouer

:: -- Si un joueur a gagné, on affiche le message ci-dessous --
:gagne
cls
echo Bien joué ! Le joueur %J% a gagné !
echo.
echo.
echo.
echo          %a% │ %b% │ %c%
echo         ───┼───┼───
echo          %d% │ %e% │ %f%
echo         ───┼───┼───
echo          %g% │ %h% │ %i%
echo.
echo.
pause
goto :rejouer

:: --Si la variable 'ch' précédante n'a pas été défini ou est inférieur à 1 ou supérieur à  9, on se rend ici pour afficher un message d'erreur --
:erreur
cls
echo --------------------------------------------------------------------------------
echo ----------------------------------  ERREUR  ------------------------------------
echo --------------------------------------------------------------------------------
echo.
echo Vous devez choisir un nombre entre 1 et 9 non déjà choisi.
echo.
echo Appuyez sur une touche pour revenir au jeu.
pause>nul
goto :s

:: -- Demande au joueur s'il veut rejouer --
:rejouer
cls
echo Voulez vous rejouer ?
echo.
echo 1 - OUI
echo.
echo 2 - NON
echo.
set /P choix=CHOIX : (tapez un nombre) 

:: -- Si le choix est 1, on rejoue, si c'est 2, on quitte le jeu --
:: -- Si la variable 'choix' n'est pas défini, on se rend à l'étiquette :erreur-fin --
if not defined choix goto :erreur-fin
if %choix% EQU 1 goto :menu
if %choix% EQU 2 goto :eof

:: -- Si la variable 'choix' n'est pas défini ou si elle n'est ni de 1 ou de 2, on se rend ici --
:erreur-fin
cls
echo --------------------------------------------------------------------------------
echo ----------------------------------  ERREUR  ------------------------------------
echo --------------------------------------------------------------------------------
echo.
echo Ce choix n'est pas disponible.
echo.
echo Appuyez sur une touche pour revenir en arrière.
pause>nul
goto :rejouer



EDIT : je vais corriger le code je crois avoir compris mon erreur Neutral
EDIT 2 : Erreur corrigé et sa marche ! Mr. Green meme si quelques fois l'ordinateur ne nous bloque pas ..

Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message -- Morpion -- 
Derien Wink

Si tu te corrige tout seul c'est que tu devrais avoir compris le fonctionnement ^^

A toi de jouer Mr. Green




______________________________________________________
│Øδ@π.
Visiter le site web du posteur Skype
Répondre en citant
Message -- Morpion -- 
Re Mr. Green

J'ai testé ton code, il ne manquerais pas un conditionnement pour gagner en diagonale?

Vu que j'ai gagner mais que ça na pas été pris en compte ^^

Voici ce qu'il manque :

Code:
if %c%==%e% if %e%==%g% goto :gagne1


A mon avis si l'ordinateur ne te bloque pas dans certains cas, tu devrais revoir le conditionnement pour bloquer, c'est que tu n'a pas mit toutes les possibilités.




______________________________________________________
│Øδ@π.
Visiter le site web du posteur Skype
Répondre en citant
Message -- Morpion -- 
Encore une fois Logan : Merci ! Mr. Green J'avais effectivement complètement zappé se conditionnement Shocked
Donc maintenant c'est corrigé et c'est super l'ordinateur ne se laisse plus du tout avoir avec les diagonales Okay même si se n'est encore pas trop compliqué de gagner Cool Very Happy ..

EDIT :
○ Ajout de quelques couleurs en plus.
○ Correction de quelques détails de l'interface graphique.

EDIT 2 :
○ Correction d'un tout petit bug dans le mode contre l'ordi.

Code:
@echo off
title Morpion
color f3

:: -----------------------------------------------------------------------------------------------------------------------
:: --------------------------------------------    PAR M@tHieu_44    ----------------------------------------------
:: -----------------------------------------------------------------------------------------------------------------------

:: -- Introduction --
echo.
echo.
echo.
echo          888b     d888                           d8b                   
echo          8888b   d8888                           Y8P                   
echo          88888b.d88888                                                 
echo          888Y88888P888  .d88b.  888d888 88888b.  888  .d88b.  88888b. 
echo          888 Y888P 888 d88""88b 888P"   888 "88b 888 d88""88b 888 "88b
echo          888  Y8P  888 888  888 888     888  888 888 888  888 888  888
echo          888   "   888 Y88..88P 888     888 d88P 888 Y88..88P 888  888
echo          888       888  "Y88P"  888     88888P"  888  "Y88P"  888  888
echo                                         888                           
echo                                         888                           
echo                                         888              BY M@tHieu_44             
echo.
echo.
echo.
echo     Appuyez sur une touche pour accéder au jeu.
pause>nul

::-- Menu du jeu --
:menu
cls
echo --------------------------------------------------------------------------------
echo ----------------------------------  MORPION  -----------------------------------
echo --------------------------------------------------------------------------------
echo.
echo.
echo  Veuillez choisir un mode de jeu :
echo.
echo.
echo  1 - 1 joueur (contre l'ordi)
echo.
echo  2 - 2 joueurs
echo.
echo.
set /P mode=.Mode de jeu choisi (1 ou 2) :
cls
if not defined mode goto :erreur-menu
if %mode%==1 goto :1j
if %mode%==2 goto :2j

:erreur-menu
cls
echo --------------------------------------------------------------------------------
echo ----------------------------------  ERREUR  ------------------------------------
echo --------------------------------------------------------------------------------
echo.
echo  Vous devez choisir entre le choix 1 (pour 1 joueur) et 2 (pour 2 joueurs).
echo.
echo  Appuyez sur une touche pour revenir au jeu.
pause>nul
goto :menu

:1j
color f8
:: -- Attribution d'une valeur de 1 à 9 pour chaque variable qui sera ensuite présente dans le "tableau" du morpion --
:d1
set a=1
set b=2
set c=3
set d=4
set e=5
set f=6
set g=7
set h=8
set i=9
set t=1

:: -- Si la variable 't' (qui représente le nombre de tour) est un nombre impair,  on attribue la valeur  '1', on sais donc que c'est le joueur 1 qui joue --
:: -- Si c'est un nombre pair, on attribue la valeur  '2', on sais donc que c'est le l'ordinateur qui joue --
:: -- Si la variable 't' est égal a 10, la partie et fini et cela signifie que personne n'a gagné --
:p1
set ch=NULL
if %t%==2 goto :1j1
if %t%==4 goto :1j1
if %t%==6 goto :1j1
if %t%==8 goto :1j1
if %t%==10 goto :tmpis1
set S2=O
set J=1

goto :s1

:1j1
set ch=NULL
cls
set S1=X
set J=2

::-- Pour Gagner --
if %a%==%S1% if %b%==%S1% if %c%==3 ( set c=%S1%
goto :verif
)
if %a%==%S1% if %c%==%S1% if %b%==2 ( set b=%S1%
goto :verif
)
if %c%==%S1% if %b%==%S1% if %a%==1 ( set a=%S1%
goto :verif
)
if %d%==%S1% if %e%==%S1% if %f%==6 ( set f=%S1%
goto :verif
)
if %d%==%S1% if %f%==%S1% if %e%==5 ( set e=%S1%
goto :verif
)
if %f%==%S1% if %e%==%S1% if %d%==4 ( set d=%S1%
goto :verif
)
if %g%==%S1% if %h%==%S1% if %i%==9 ( set i=%S1%
goto :verif
)
if %g%==%S1% if %i%==%S1% if %h%==8 ( set h=%S1%
goto :verif
)
if %i%==%S1% if %h%==%S1% if %g%==7 ( set g=%S1%
goto :verif
)
if %a%==%S1% if %d%==%S1% if %g%==7 ( set g=%S1%
goto :verif
)
if %a%==%S1% if %g%==%S1% if %d%==4 ( set d=%S1%
goto :verif
)
if %g%==%S1% if %d%==%S1% if %a%==1 ( set a=%S1%
goto :verif
)
if %b%==%S1% if %e%==%S1% if %h%==8 ( set h=%S1%
goto :verif
)
if %b%==%S1% if %h%==%S1% if %e%==5 ( set e=%S1%
goto :verif
)
if %h%==%S1% if %e%==%S1% if %b%==2 ( set b=%S1%
goto :verif
)
if %c%==%S1% if %f%==%S1% if %i%==9 ( set i=%S1%
goto :verif
)
if %c%==%S1% if %i%==%S1% if %f%==6 ( set f=%S1%
goto :verif
)
if %i%==%S1% if %f%==%S1% if %c%==3 ( set c=%S1%
goto :verif
)
if %a%==%S1% if %e%==%S1% if %i%==9 ( set i=%S1%
goto :verif
)
if %a%==%S1% if %i%==%S1% if %e%==5 ( set e=%S1%
goto :verif
)
if %e%==%S1% if %i%==%S1% if %a%==1 ( set a=%S1%
goto :verif
)
if %c%==%S1% if %e%==%S1% if %g%==7 ( set g=%S1%
goto :verif
)
if %c%==%S1% if %g%==%S1% if %e%==5 ( set e=%S1%
goto :verif
)
if %g%==%S1% if %e%==%S1% if %c%==3 ( set g=%S1%
goto :verif
)
:: -- Pour Bloquer --
if %a%==%S2% if %b%==%S2% if %c%==3 ( set c=%S1%
goto :verif
)
if %a%==%S2% if %c%==%S2% if %b%==2 ( set b=%S1%
goto :verif
)
if %c%==%S2% if %b%==%S2% if %a%==1 ( set a=%S1%
goto :verif
)
if %d%==%S2% if %e%==%S2% if %f%==6 ( set f=%S1%
goto :verif
)
if %d%==%S2% if %f%==%S2% if %e%==5 ( set e=%S1%
goto :verif
)
if %f%==%S2% if %e%==%S2% if %d%==4 ( set d=%S1%
goto :verif
)
if %g%==%S2% if %h%==%S2% if %i%==9 ( set i=%S1%
goto :verif
)
if %g%==%S2% if %i%==%S2% if %h%==8 ( set h=%S1%
goto :verif
)
if %i%==%S2% if %h%==%S2% if %g%==7 ( set g=%S1%
goto :verif
)
if %a%==%S2% if %d%==%S2% if %g%==7 ( set g=%S1%
goto :verif
)
if %a%==%S2% if %g%==%S2% if %d%==4 ( set d=%S1%
goto :verif
)
if %g%==%S2% if %d%==%S2% if %a%==1 ( set a=%S1%
goto :verif
)
if %b%==%S2% if %e%==%S2% if %h%==8 ( set h=%S1%
goto :verif
)
if %b%==%S2% if %h%==%S2% if %e%==5 ( set e=%S1%
goto :verif
)
if %h%==%S2% if %e%==%S2% if %b%==2 ( set b=%S1%
goto :verif
)
if %c%==%S2% if %f%==%S2% if %i%==9 ( set i=%S1%
goto :verif
)
if %c%==%S2% if %i%==%S2% if %f%==6 ( set f=%S1%
goto :verif
)
if %i%==%S2% if %f%==%S2% if %c%==3 ( set c=%S1%
goto :verif
)
if %a%==%S2% if %e%==%S2% if %i%==9 ( set i=%S1%
goto :verif
)
if %a%==%S2% if %i%==%S2% if %e%==5 ( set e=%S1%
goto :verif
)
if %e%==%S2% if %i%==%S2% if %a%==1 ( set a=%S1%
goto :verif
)
if %c%==%S2% if %e%==%S2% if %g%==7 ( set g=%S1%
goto :verif
)
if %c%==%S2% if %g%==%S2% if %e%==5 ( set e=%S1%
goto :verif
)
if %g%==%S2% if %e%==%S2% if %c%==3 ( set c=%S1%
goto :verif
)
set /a ch=%random% %% 9 + 1
::-- On vérifie que %ch% choisi au hasard n'est  pas déjà égal à un nombre déjà choisi --
if %ch%==1 if %a%==X goto :1j1
if %ch%==1 if %a%==O goto :1j1
if %ch%==2 if %b%==X goto :1j1
if %ch%==2 if %b%==O goto :1j1
if %ch%==3 if %c%==X goto :1j1
if %ch%==3 if %c%==O goto :1j1
if %ch%==4 if %d%==X goto :1j1
if %ch%==4 if %d%==O goto :1j1
if %ch%==5 if %e%==X goto :1j1
if %ch%==5 if %e%==O goto :1j1
if %ch%==6 if %f%==X goto :1j1
if %ch%==6 if %f%==O goto :1j1
if %ch%==7 if %g%==X goto :1j1
if %ch%==7 if %g%==O goto :1j1
if %ch%==8 if %h%==X goto :1j1
if %ch%==8 if %h%==O goto :1j1
if %ch%==9 if %i%==X goto :1j1
if %ch%==9 if %i%==O goto :1j1
if %ch%==1 set a=%S1%
if %ch%==2 set b=%S1%
if %ch%==3 set c=%S1%
if %ch%==4 set d=%S1%
if %ch%==5 set e=%S1%
if %ch%==6 set f=%S1%
if %ch%==7 set g=%S1%
if %ch%==8 set h=%S1%
if %ch%==9 set i=%S1%
goto :sss

:: -- Début du jeu --
:: -- Partie "graphique"
:s1
echo --------------------------------------------------------------------------------
echo ------------------------ = = = = =  JOUEUR  = = = = = ------------------------
echo --------------------------------------------------------------------------------
echo.
echo.
echo          %a% │ %b% │ %c%
echo         ───┼───┼───
echo          %d% │ %e% │ %f%
echo         ───┼───┼───
echo          %g% │ %h% │ %i%
echo.
echo.
set /P ch=.Quelle case voulez-vous cocher ? (un nombre : 1, 2, 3 ..)
:: --Si la variable 'ch' n'est pas défini ou est inférieur à 1 ou supérieur à  9, on se rend à l'étiquette :erreur1 --
if not defined ch goto :erreur1
if %ch% GTR 9 goto :erreur1
if %ch% LSS 1 goto :erreur1

::-- Vérifie si la case choisi n'est pas dékà coché --
if %ch%==1 if %a%==X goto :erreur1
if %ch%==1 if %a%==O goto :erreur1
if %ch%==2 if %b%==X goto :erreur1
if %ch%==2 if %b%==O goto :erreur1
if %ch%==3 if %c%==X goto :erreur1
if %ch%==3 if %c%==O goto :erreur1
if %ch%==4 if %d%==X goto :erreur1
if %ch%==4 if %d%==O goto :erreur1
if %ch%==5 if %e%==X goto :erreur1
if %ch%==5 if %e%==O goto :erreur1
if %ch%==6 if %f%==X goto :erreur1
if %ch%==6 if %f%==O goto :erreur1
if %ch%==7 if %g%==X goto :erreur1
if %ch%==7 if %g%==O goto :erreur1
if %ch%==8 if %h%==X goto :erreur1
if %ch%==8 if %h%==O goto :erreur1
if %ch%==9 if %i%==X goto :erreur1
if %ch%==9 if %i%==O goto :erreur1

:verif
:: -- Si el choix est 1, on  redéfini la variable 'a' en lui attribuant la valeur de 'S' (qui est soit une croix (X), soit un rond (O) selon si c'est au joueur 1 ou 2 de jouer) --
if %ch%==1 set a=%S2%
if %ch%==2 set b=%S2%
if %ch%==3 set c=%S2%
if %ch%==4 set d=%S2%
if %ch%==5 set e=%S2%
if %ch%==6 set f=%S2%
if %ch%==7 set g=%S2%
if %ch%==8 set h=%S2%
if %ch%==9 set i=%S2%

:sss
:: -- La variable 't' représente le nombre de tour, on lui attribue +1 à chaque tour --
set /A t+=1

:: -- On vérifie que le joueur n'a pas gagné (en vérifiant si trois variable alignés (cf. tableau) horizontalement, verticalement ou diagonalement ont la même valeur (X et O)) --
if %a%==%b% if %b%==%c% goto :gagne1
if %a%==%d% if %d%==%g% goto :gagne1
if %a%==%e% if %e%==%i% goto :gagne1
if %i%==%f% if %f%==%c% goto :gagne1
if %i%==%h% if %h%==%g% goto :gagne1
if %d%==%e% if %e%==%f% goto :gagne1
if %b%==%e% if %e%==%h% goto :gagne1
if %c%==%e% if %e%==%g% goto :gagne1

:: -- Si les conditions ci-dessus ne sont pas réalisés, on retourne au jeu --
goto :p1

:: -- Si personne n'a gagné, on affiche le message ci-dessous --
:tmpis1
cls
color f1
echo.
echo  Pas de chance, personne n'a gané ..
echo.
echo.
echo.
echo          %a% │ %b% │ %c%
echo         ───┼───┼───
echo          %d% │ %e% │ %f%
echo         ───┼───┼───
echo          %g% │ %h% │ %i%
echo.
echo.
pause
goto :rejouer

:: -- Si un joueur a gagné, on affiche le message ci-dessous --
:gagne1
cls
echo.
if %J%==1 (
color f2
echo  Bravo, vous avez gagné !
)
if %J%==2 (
color fc
echo  Dommage, vous avez été battu par l'ordinateur..
)
echo.
echo.
echo.
echo          %a% │ %b% │ %c%
echo         ───┼───┼───
echo          %d% │ %e% │ %f%
echo         ───┼───┼───
echo          %g% │ %h% │ %i%
echo.
echo.
pause
goto :rejouer

:: --Si la variable 'ch' précédante n'a pas été défini ou est inférieur à 1 ou supérieur à  9, on se rend ici pour afficher un message d'erreur --
:erreur1
cls
echo --------------------------------------------------------------------------------
echo ----------------------------------  ERREUR  ------------------------------------
echo --------------------------------------------------------------------------------
echo.
echo  Vous devez choisir un nombre entre 1 et 9 non déjà choisi.
echo.
echo  Appuyez sur une touche pour revenir au jeu.
pause>nul
cls
goto :s1

:2j
:j1
color f8
:: -- Attribution d'une valeur de 1 à 9 pour chaque variable qui sera ensuite présente dans le "tableau" du morpion --
:d
set a=1
set b=2
set c=3
set d=4
set e=5
set f=6
set g=7
set h=8
set i=9
set t=1

:: -- Si la variable 't' (qui représente le nombre de tour) est un nombre impair,  on attribue la valeur  '1', on sais donc que c'est le joueur 1 qui joue --
:: -- Si c'est un nombre pair, on attribue la valeur  '2', on sais donc que c'est le joueur 2 qui joue --
:: -- Si la variable 't' est égal a 10, la partie et fini et cela signifie que personne n'a gagné --
:p
set ch=NULL
if %t%==10 goto :tmpis
if %t%==1 goto :j1
if %t%==3 goto :j1
if %t%==5 goto :j1
if %t%==7 goto :j1
if %t%==9 goto :j1
set S=O
set J=2

goto :s

:j1
set S=X
set J=1

:: -- Début du jeu --
:: -- Partie "graphique"
:s
cls
echo --------------------------------------------------------------------------------
echo ------------------------ = = = = =  JOUEUR %J%  = = = = = ------------------------
echo --------------------------------------------------------------------------------
echo.
echo.
echo          %a% │ %b% │ %c%
echo         ───┼───┼───
echo          %d% │ %e% │ %f%
echo         ───┼───┼───
echo          %g% │ %h% │ %i%
echo.
echo.
set /P ch=.Quelle case voulez-vous cocher ? (un nombre : 1, 2, 3 ..)
:: --Si la variable 'ch' n'est pas défini ou est inférieur à 1 ou supérieur à  9, on se rend à l'étiquette :erreur --
if not defined ch goto :erreur
if %ch% GTR 9 goto :erreur
if %ch% LSS 1 goto :erreur

::-- Vérifie si la case choisi n'est pas dékà coché --
if %ch%==1 if %a%==X goto :erreur
if %ch%==1 if %a%==O goto :erreur
if %ch%==2 if %b%==X goto :erreur
if %ch%==2 if %b%==O goto :erreur
if %ch%==3 if %c%==X goto :erreur
if %ch%==3 if %c%==O goto :erreur
if %ch%==4 if %d%==X goto :erreur
if %ch%==4 if %d%==O goto :erreur
if %ch%==5 if %e%==X goto :erreur
if %ch%==5 if %e%==O goto :erreur
if %ch%==6 if %f%==X goto :erreur
if %ch%==6 if %f%==O goto :erreur
if %ch%==7 if %g%==X goto :erreur
if %ch%==7 if %g%==O goto :erreur
if %ch%==8 if %h%==X goto :erreur
if %ch%==8 if %h%==O goto :erreur
if %ch%==9 if %i%==X goto :erreur
if %ch%==9 if %i%==O goto :erreur

:: -- Si el choix est 1, on  redéfini la variable 'a' en lui attribuant la valeur de 'S' (qui est soit une croix (X), soit un rond (O) selon si c'est au joueur 1 ou 2 de jouer) --
if %ch%==1 set a=%S%
if %ch%==2 set b=%S%
if %ch%==3 set c=%S%
if %ch%==4 set d=%S%
if %ch%==5 set e=%S%
if %ch%==6 set f=%S%
if %ch%==7 set g=%S%
if %ch%==8 set h=%S%
if %ch%==9 set i=%S%

:: -- La variable 't' représente le nombre de tour, on lui attribue +1 à chaque tour --
set /A t+=1

:: -- On vérifie que le joueur n'a pas gagné (en vérifiant si trois variable alignés (cf. tableau) horizontalement, verticalement ou diagonalement ont la même valeur (X et O)) --
if %a%==%b% if %b%==%c% goto :gagne
if %a%==%d% if %d%==%g% goto :gagne
if %a%==%e% if %e%==%i% goto :gagne
if %i%==%f% if %f%==%c% goto :gagne
if %i%==%h% if %h%==%g% goto :gagne
if %d%==%e% if %e%==%f% goto :gagne
if %b%==%e% if %e%==%h% goto :gagne
if %c%==%e% if %e%==%g% goto :gagne1

:: -- Si les conditions ci-dessus ne sont pas réalisés, on retourne au jeu --
goto :p

:: -- Si personne n'a gagné, on affiche le message ci-dessous --
:tmpis
cls
color f1
echo.
echo  Pas de chance, personne n'a gané ..
echo.
echo.
echo.
echo          %a% │ %b% │ %c%
echo         ───┼───┼───
echo          %d% │ %e% │ %f%
echo         ───┼───┼───
echo          %g% │ %h% │ %i%
echo.
echo.
pause
goto :rejouer

:: -- Si un joueur a gagné, on affiche le message ci-dessous --
:gagne
cls
color f2
echo.
echo  Bien joué ! Le joueur %J% a gagné !
echo.
echo.
echo.
echo          %a% │ %b% │ %c%
echo         ───┼───┼───
echo          %d% │ %e% │ %f%
echo         ───┼───┼───
echo          %g% │ %h% │ %i%
echo.
echo.
pause
goto :rejouer

:: --Si la variable 'ch' précédante n'a pas été défini ou est inférieur à 1 ou supérieur à  9, on se rend ici pour afficher un message d'erreur --
:erreur
cls
echo --------------------------------------------------------------------------------
echo ----------------------------------  ERREUR  ------------------------------------
echo --------------------------------------------------------------------------------
echo.
echo  Vous devez choisir un nombre entre 1 et 9 non déjà choisi.
echo.
echo  Appuyez sur une touche pour revenir au jeu.
pause>nul
goto :s

:: -- Demande au joueur s'il veut rejouer --
:rejouer
color f8
cls
echo.
echo  Voulez vous rejouer ?
echo.
echo  1 - OUI
echo.
echo  2 - NON
echo.
set /P choix=.CHOIX : (tapez un nombre) 

:: -- Si le choix est 1, on rejoue, si c'est 2, on quitte le jeu --
:: -- Si la variable 'choix' n'est pas défini, on se rend à l'étiquette :erreur-fin --
if not defined choix goto :erreur-fin
if %choix% EQU 1 goto :menu
if %choix% EQU 2 goto :eof

:: -- Si la variable 'choix' n'est pas défini ou si elle n'est ni de 1 ou de 2, on se rend ici --
:erreur-fin
cls
echo --------------------------------------------------------------------------------
echo ----------------------------------  ERREUR  ------------------------------------
echo --------------------------------------------------------------------------------
echo.
echo  Ce choix n'est pas disponible.
echo.
echo  Appuyez sur une touche pour revenir en arrière.
pause>nul
goto :rejouer


Reste plus que batbox .. il vas falloir que tu m'explique parce que là je sais plus du tout comment faire Shocked Mr. Green .



Dernière édition par M@tHieu_44 le Ven 20 Juil 2012 - 13:51; édité 1 fois

______________________________________________________
Pause momentanée de programmation..
Répondre en citant
Message Re: -- Morpion -- 
Super code avec l'ordi assez fort !!

Bon travail , continu !!




______________________________________________________
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 -- 
Merci nathsou je pensais justement à le rendre encore un tout petit peu plus fort il sera plus dur a battre Twisted Evil

Sinon mis a part sa j'ai fait un petit Edit de mon code pour corriger un conditionnement dans mon code (visible en première page).




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


Montrer les messages depuis:
Répondre au sujet Page 2 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