Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 2
Aller à la page: 1, 2  >
-- Morpion --
Auteur Message
Répondre en citant
Message -- Morpion -- 
Salut tout le monde ! Very Happy

Un petit morpion :

EDIT :
○ Ajout du mode contre l'ordinateur avec IA.
○ Ajout de la grille du morpion à la fin pour voir le résultat final quand sa marque "Le joueur 1 à gagné" ou encore "Dommage, vous avez eté battu par l'ordinateur".
○ Ajout de quelques couleurs en plus.
○ Correction d'erreurs dans le code et de bug mineur.
○ Correction de quelques détails de l'interface graphique.

EDIT 2 :
○ Correction d'un conditionnement erroné.

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


Merci de commenter, me donner des idées pour l'améliorer et éventuellement m'aider à le raccourcir

Bonnes parties et @++ Wink !



Dernière édition par M@tHieu_44 le Ven 20 Juil 2012 - 14:09; édité 4 fois

______________________________________________________
Pause momentanée de programmation..
Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message -- Morpion -- 
Hey, pas mal, bien joué Okay
Tu nous fais une version contre le PC ?




______________________________________________________


L'ignorance est un fléau qui engendre la haine et la mort
La connaissance est une arme qui surpasse toutes les autres
Partagez votre savoir, sinon il sera perdu à jamais
Répondre en citant
Message -- Morpion -- 
Merci Stryk !! Very Happy [Avec un peu de retard Embarassed ]

En suivant ton idée de faire un mode contre le PC, je m'y suis mis et j'ai en même temps rajouté 2, 3 détails.

○ Ajout d'une introduction.
○ Ajout d'un menu pour choisir le modes de jeu souhaité (1 (contre l'ordi) ou 2 joueurs).
○ Ajout du mode 1 joueur (contre le PC) avec les commentaires.

J'ai cependant BEAUCOUP Shocked de bug :

Mode 1 joueur :

○ A certains tours, quand c'est a nous ou a l'ordi de jouer, notre tour n'est pas pris en compte (on ne voit pas de ROND (O) ou de CROIX (X) apparaître dans la grille).

○ On peut rejouer une case déjà jouée (s'il y a déjà une CROIX (X) et que vous avez les RONDS (O), pouvez remplacer la croix par un rond)
(sa marche aussi de jouer un rond (O) sur un autre rond même si cela ne sera pas visible..) >> et je ne sais pas comment y remédier Neutral

○ Se n'est pas un bug mais plutôt une suggestion pour améliorer le mode contre le PC : que le PC soit intelligent car là il choisit ou mettre les CROIX (X) complètement au hasard ..
Et je n'ai franchement AUCUNE idée de comment faire ?? Car en fait je ne n'avait jamais essayer de faire un mode contre l'ordinateur dans un quelconque jeu Sad Surprised

Mode 2 joueurs :

○ Même bug que dans le mode 1 joueur :
○ On peut rejouer une case déjà jouée (s'il y a déjà une CROIX (X) et que vous avez les RONDS (O), pouvez remplacer la croix par un rond)
(sa marche aussi de jouer un rond (O) sur un autre rond même si cela ne sera pas visible..)
Et je ne sais pas non plus comment faire Neutral

Voilà maintenant le code source :
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 S=O
set J=1

goto :s1

:1j1
set ch=NULL
cls
set S=X
set J=2
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%==%a% if %a%==X goto :1j1
if %ch%==%a% if %a%==O goto :1j1
if %ch%==%b% if %b%==X goto :1j1
if %ch%==%b% if %b%==O goto :1j1
if %ch%==%c% if %c%==X goto :1j1
if %ch%==%c% if %c%==O goto :1j1
if %ch%==%d% if %d%==X goto :1j1
if %ch%==%d% if %d%==O goto :1j1
if %ch%==%e% if %e%==X goto :1j1
if %ch%==%e% if %e%==O goto :1j1
if %ch%==%f% if %f%==X goto :1j1
if %ch%==%f% if %f%==O goto :1j1
if %ch%==%g% if %g%==X goto :1j1
if %ch%==%g% if %g%==O goto :1j1
if %ch%==%h% if %h%==X goto :1j1
if %ch%==%h% if %h%==O goto :1j1
if %ch%==%i% if %i%==X goto :1j1
if %ch%==%i% if %i%==O goto :1j1
echo Le joueur 2 a joué.
goto :verif

:: -- 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

: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=%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 :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.
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.
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.
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

:: -- 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.
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.
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.
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


Si vous pouvez m'aidez à corriger tous ses bugs ou avez des suggestions à me faire pour améliorer le jeu et le code je vous serez énormément reconnaissant !! Razz Very Happy Wink




______________________________________________________
Pause momentanée de programmation..
Répondre en citant
Message -- Morpion -- 
Bravo pour le jeu, ce type fait toujours passé le temps

mathieu peux tu réduire la taille de ta signature merci elle déforme le forum sur ecran de petite taille




______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message -- Morpion -- 
Merci Lady Smile
Désolé et voilà j'ai réduit ma signature Wink (Dis moi si tu veux que je la réduise encore..)




______________________________________________________
Pause momentanée de programmation..
Répondre en citant
Message -- Morpion -- 
Re,
nickel merci pour ta réactivité. Okay

Bonne continuation et developpement Cool




______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message -- Morpion -- 
Salut Mr. Green

Bien joué pour ton Morpion, mis à part les bug, je jéterais un oeil quand j'en aurais l’occasion Parce-que là, je n'est pas le temps Confused

Dit moi, pourquoi ne pas Utiliser batbox.exe pour pouvoir utiliser la sourie? Sa serais encore plus sympa Laughing

Arrow Pour le bug de pouvoir choisir un choix déjà pris, tu à fait un conditionnement des variables pour que si choix est égal au conditionnement (à la variable) alors "goto erreur"?

Bref sinon bien codé c'est nickel Okay

A+




______________________________________________________
│Øδ@π.
Visiter le site web du posteur Skype
Répondre en citant
Message -- Morpion -- 
Merci énormément Logan je n'ai plus aucun bug !! Okay Mr. Green En fait un bout de code n'étais pas bon dans le mode contre l'ordinateur, c'étais les lignes de codes pour faire en sorte que l'ordinateur ne choisisse pas un nombre déjà choisi auparavant .. donc du coup j'ai également copié se bout de code pour quand c'est a nous de jouer dans le mode 1 joueur, qu'on ne puisse pas choisir un nombre déjà choisi. Bout de code ajoutés également dans le mode 2 joueurs Mr. Green .

Code:
:: Lignes de code qui m'a résolu BEAUCOUP de problèmes !! (Du coup je suis content ! =P)

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


Donc voilà tout est corrigé Very Happy :

Mode 1 joueur :

○ A certains tours, quand c'est a nous ou a l'ordi de jouer, notre tour n'est pas pris en compte (on ne voit pas de ROND (O) ou de CROIX (X) apparaître dans la grille).

○ On peut rejouer une case déjà jouée (s'il y a déjà une CROIX (X) et que vous avez les RONDS (O), pouvez remplacer la croix par un rond)
(sa marche aussi de jouer un rond (O) sur un autre rond même si cela ne sera pas visible..)


○ Se n'est pas un bug mais plutôt une suggestion pour améliorer le mode contre le PC : que le PC soit intelligent car là il choisit ou mettre les CROIX (X) complètement au hasard ..
Et je n'ai franchement AUCUNE idée de comment faire ?? Car en fait je ne n'avait jamais essayer de faire un mode contre l'ordinateur dans un quelconque jeu

Mode 2 joueurs :

○ On peut rejouer une case déjà jouée (s'il y a déjà une CROIX (X) et que vous avez les RONDS (O), pouvez remplacer la croix par un rond)
(sa marche aussi de jouer un rond (O) sur un autre rond même si cela ne sera pas visible..)


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 S=O
set J=1

goto :s1

:1j1
set ch=NULL
cls
set S=X
set J=2
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 Le joueur 2 a joué.
goto :verif

:: -- 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=%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 :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.
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.
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.
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.
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


Reste plus que de rendre l'ordinateur un peu plus intelligent Embarassed

Idea Mais c'est bon maintenant j'ai compris comment faire ! Mort de Rire

Et pour se qu'il est de batbox.exe je ne connaissais pas du tout (je suis pas trop fort avec les commandes externes Embarassed ), alors du coup j'ai fait quelques recherches sur le forum et je trouve vraiment sa super Very Happy . J'ai déjà essayé de faire 2, 3 trucs avec et je pense que je vais refaire mon morpion avec la souris Razz .

Donc voilà je vais m'y remettre et je reposte le code dès que j'ai fini Wink .




______________________________________________________
Pause momentanée de programmation..
Répondre en citant
Message -- Morpion -- 
J'ai donc essayé d'ajouter l'utilisation de la souris pour cliquer sur les cases avec "batbox.exe" mais au moment de cliquer sur les cases le programme se ferme d'un coup .. j'ai essayé de trouver mon erreur mais comme je ne suis pas encore très fort avec batbox.exe, je ne l'ai pas trouvé Crying or Very sad . Si quelqu'un peut m'éclairer ?? Mr. Green

Code ajouté pour l'utilisation de la souris
Code:
FOR /F "tokens=1,2 delims=:" %%A in ('BatBox /m') DO (
SET Y=%%B
SET X=%%A
)
if %X%==9 if %Y%==7 (
set a=%S%
goto :sv
)
if %X%==13 if %Y%==7 (
set b=%S%
goto :sv
)
if %X%==17 if %Y%==7 (
set c=%S%
goto :sv
)
if %X%==9 if %Y%==9 (
set d=%S%
goto :sv
)
if %X%==13 if %Y%==9 (
set e=%S%
goto :sv
)
if %X%==17 if %Y%==9 (
set f=%S%
goto :sv
)
if %X%==9 if %Y%==11 (
set g=%S%
goto :sv
)
if %X%==13 if %Y%==11 (
set h=%S%
goto :sv
)
if %X%==17 if %Y%==11 (
set i=%S%
goto :sv


Code source entier
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


::--- UN JOUEUR (contre l'ordi) ---

:1j
:: -- Attribution d'une valeur de 1 à 9 pour chaque variable qui sera ensuite présente dans le "tableau" du morpion --
:d1
set a=
set b=
set c=
set d=
set e=
set f=
set g=
set h=
set i=
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 S=O
set J=1

goto :s1

:1j1
set ch=NULL
cls
set S=X
set J=2
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
goto :sv

:: -- 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.

FOR /F "tokens=1,2 delims=:" %%A in ('BatBox /m') DO (
SET Y=%%B
SET X=%%A
)
if %X%==9 if %Y%==7 (
set a=%S%
goto :sv1
)
if %X%==13 if %Y%==7 (
set b=%S%
goto :sv1
)
if %X%==17 if %Y%==7 (
set c=%S%
goto :sv1
)
if %X%==9 if %Y%==9 (
set d=%S%
goto :sv1
)
if %X%==13 if %Y%==9 (
set e=%S%
goto :sv1
)
if %X%==17 if %Y%==9 (
set f=%S%
goto :sv1
)
if %X%==9 if %Y%==11 (
set g=%S%
goto :sv1
)
if %X%==13 if %Y%==11 (
set h=%S%
goto :sv1
)
if %X%==17 if %Y%==11 (
set i=%S%
goto :sv1
)
cls
goto :s1

:sv1
:: -- 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.
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.
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


:: --- DEUX JOUEURS ---

: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=
set b=
set c=
set d=
set e=
set f=
set g=
set h=
set i=
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.

FOR /F "tokens=1,2 delims=:" %%A in ('BatBox /m') DO (
SET Y=%%B
SET X=%%A
)
if %X%==9 if %Y%==7 (
set a=%S%
goto :sv
)
if %X%==13 if %Y%==7 (
set b=%S%
goto :sv
)
if %X%==17 if %Y%==7 (
set c=%S%
goto :sv
)
if %X%==9 if %Y%==9 (
set d=%S%
goto :sv
)
if %X%==13 if %Y%==9 (
set e=%S%
goto :sv
)
if %X%==17 if %Y%==9 (
set f=%S%
goto :sv
)
if %X%==9 if %Y%==11 (
set g=%S%
goto :sv
)
if %X%==13 if %Y%==11 (
set h=%S%
goto :sv
)
if %X%==17 if %Y%==11 (
set i=%S%
goto :sv
)
cls
goto :s

:sv
:: -- 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.
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.
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





______________________________________________________
Pause momentanée de programmation..
Répondre en citant
Message -- Morpion -- 
Hey Mr. Green

Pour batbox dit toi que X et Y sont des coordonnées, toi tu demande qu'il soit égal à ton nombre, il faut que tu donne la coordonnée ou se trouve ton nombre.

X= colonnes & Y= lignes.

je voi ça ce soir avec toi, fin en fin d'aprem, A toute à l'heure Wink

tu va voir c'est pas compliqué ! Okay




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

Il y a pas de quoi pour les bug Wink

Sinon:



Pour ce qui est d'une intelligence artificielle, perso sachant que ton code n'est pas très long, je ferais un conditionnement de toutes les possibilités pour gagner.

Le seul hic c'est que tu devra revoir le conditionnement de %S% pour différencier à qui est la variable %S%, au joueur 1 ou 2.

Exclamation Imaginons que tu est reconditionné %S% par: Joueur1(X)=%S1% et Joueur2(0)=%S2%

Arrow Tu pourra ensuite faire ton conditionnement des possibilités pour gagner, et si tu veu même aller plus loing tu pourrais mettre en place des conditionnement pour bloquer l'adversaire.

Pour Gagner:
Faire ceci pour TOUTES les possibilités!
Code:
if %a%==%S1% if %b%==%S1% set %c%=%S1%
REM si a et b ont le signe X, nous mettons le signe X à c pour obtenir une ligne complète et gagner.


Pour Bloquer:
Faire ceci pour toutes les possibilités!
Code:
if %a%==%S2% if %c%==%S2% set %b%=%S1%
REM si a et b ont le signe 0, nous mettons le signe x pour bloquer la ligne S2


Il faudra aussi le conditionnement pour quand il y a un début de ligne ou quand une ligne est over, pour pouvoir commencer une nouvelle ligne.

Tu rentre dans une partie assez complexe mais néanmoins très intéressante Okay Okay




Pour ce qui est de batbox.exe je vais voir et je te redirais Wink

Voilà, A tal Okay




______________________________________________________
│Øδ@π.
Visiter le site web du posteur Skype
Répondre en citant
Message -- Morpion -- 
Si on fait l'IA comme tu as dit Logan, elle ne risque pas d'être imbattable ? Il faudrait inclure des probabilités d'erreur.




______________________________________________________
Mon site web : http://textquestrpg.weebly.com/
Un petit jeu sympa : http://teacher-story.com/t/kT81
Visiter le site web du posteur
Répondre en citant
Message -- Morpion -- 
Logiquement c'est toujours batable, en gros c'est comme si tu te battais avec un humain Mr. Green

Il faut le coincer ^^

Et en plus si tu met des probabilités d'erreurs tu pourra gagner tout le temps de la même façon, ça sera une fail...


Ne t'inquiette pas, il sera batable, il y aura le même fonctionnement qu'un humain, voir moins puisqu'il va chercher à te bloquer avant de gagner, donc tu gagne un tour ^^

Sauf si on arrive à coder un conditionnement pour éviter cela.

C'est une des parties complexes qui me plait dans la prog Okay

Ps: Pour batbox, utilise le dernier msg de darkbatcher sur ce lien -> http://batch.xoo.it/t2243-Commande-Externe-Batbox-v1-0.htm




______________________________________________________
│Øδ@π.
Visiter le site web du posteur Skype
Répondre en citant
Message -- Morpion -- 
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 ..



Dernière édition par M@tHieu_44 le Jeu 12 Juil 2012 - 17:40; édité 1 fois

______________________________________________________
Pause momentanée de programmation..
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
Message -- Morpion -- 


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