[résolu] besoin de renseignement

Une difficulté, une précision posez vos questions

Modérateur : WIN32-[GG]

Répondre
vimper
Batcheur occasionnel
Messages : 7
Enregistré le : 01 juin 2019 14:34

[résolu] besoin de renseignement

Message par vimper » 01 juin 2019 14:51

bonjour je suis débutant en programmation et j'essaye de faire un petit jeu, feuille papier ,ciseau en batch voila ce que j'ai ecris mais le souci ca ne veux pas prendre en compte les if qui peu me donner un conseil , voici mon code. merci a vous de m'aider.

Code : Tout sélectionner

@echo off
mode con cols=65 lines=15
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º       Feuille-Pierre-Ciseau        º»
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼº
echo  ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ


set /a choix=%Random%%%3 
echo %choix%


: Question
echo.
set /p  item=choisissez entre feuille, pierre ou ciseau?
echo %item% 
pause
if  %item% == ciseau & %choix%==0 goto :egalite
if  %item% == ciseau & %choix%==1 goto :perdu
if  %item% == ciseau & %choix%==2 goto :gagne

if  %item% == pierre & %choix%==0 goto :gagne
if  %item% == pierre & %choix%==1 goto :egalite
if  %item% == pierre & %choix%==2 goto :perdu

if  %item% == feuille & %choix%==0 goto :perdu
if  %item% == feuille & %choix%==1 goto :gagne
if  %item% == feuille & %choix%==2 goto :egalite

:egalite
echo !! egalite !!

:perdu
echo -- perdu --

:gagne
echo ++ gagne ++
pause>nul
Modifié en dernier par vimper le 01 juin 2019 22:36, modifié 1 fois.

barnabe0057
King Of Batch
Messages : 84
Enregistré le : 24 janv. 2017 13:41

Re: besoin de renseignement

Message par barnabe0057 » 01 juin 2019 19:36

Bonjour,

Si tu veux faire un ET logique dans une condition alors il faut imbriquer les 2 conditions comme cela :

Code : Tout sélectionner

if /i %item%==ciseau (if %choix%==0 goto :egalite)

vimper
Batcheur occasionnel
Messages : 7
Enregistré le : 01 juin 2019 14:34

Re: besoin de renseignement

Message par vimper » 01 juin 2019 22:29

merci beaucoup barnabe0057 ca m'as été très utile ton explication.voila mon nouveau code je l'ai rectifier car j'avais un souci au niveau des réponses car quand c'était gagné ca me marquais gagné, quand j'avais perdu ca me marquais perdu et gagné, et quand c'était égalité ca me marquais égalité perdu et gagné, j'ai palier ca par " pause>nul" à chaque réponse est ce normal surtout est il correct de marquer ca (car apparemment le programme lisais le reste)?

Code : Tout sélectionner

@echo off
mode con cols=65 lines=15
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º       Feuille-Pierre-Ciseau        º»
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼº
echo  ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ


set /a choix=%Random%%%3 
echo %choix%


: Question
echo.
set /p  item=choisissez entre feuille, pierre ou ciseau?

if /i %choix%==2 (if %item% == pierre goto :gagne)
if /i %choix%==2 (if %item% == feuille goto :perdu)
if /i %choix%==2 (if %item% == ciseau goto :egalite)

if /i %choix%==1 (if %item% == feuille goto :gagne)
if /i %choix%==1 (if %item% == ciseau goto :perdu)
if /i %choix%==1 (if %item% == pierre goto :egalite)

if /i %choix%==0 (if %item% == ciseau goto :gagne)
if /i %choix%==0 (if %item% == pierre goto :perdu)
if /i %choix%==0 (if %item% == feuille goto :egalite)

:egalite
echo !! egalite !!    
pause>nul

:perdu
echo -- perdu --
pause>nul

:gagne
echo ++ gagne ++
pause>nul
encore merci du coup de main.

barnabe0057
King Of Batch
Messages : 84
Enregistré le : 24 janv. 2017 13:41

Re: [résolu] besoin de renseignement

Message par barnabe0057 » 02 juin 2019 01:00

C'est normal car tu fais un branchement GOTO pour afficher le résultat du jeu, ensuite le script continue comme si de rien n'était, ligne par ligne.

Je te suggère de remplacer tes labels et branchements GOTO par une fonction qui sera appelée par la commande CALL et qui se terminera par la commande GOTO :EOF

Voilà ce que je te propose :

Code : Tout sélectionner

@echo off
mode con cols=65 lines=15
chcp 1252 >nul

:debut
cls & chcp 850 >nul
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º       Feuille-Pierre-Ciseau        º»
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼº
echo  ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

set /a choix=%Random%%%3 
echo. & echo choix : %choix%

:Question
set "item="
echo.
set /p  item="choisissez entre feuille, pierre ou ciseau? "
if not defined item goto :debut
chcp 1252 >nul

if /i %choix% equ 2 (if %item% == pierre call :resultat "-- gagné --")
if /i %choix% equ 2 (if %item% == feuille call :resultat "-- perdu --")
if /i %choix% equ 2 (if %item% == ciseau call :resultat "!! egalite !!")

if /i %choix% equ 1 (if %item% == feuille call :resultat "-- gagné --")
if /i %choix% equ 1 (if %item% == ciseau call :resultat "-- perdu --")
if /i %choix% equ 1 (if %item% == pierre call :resultat "!! egalite !!")

if /i %choix% equ 0 (if %item% == ciseau call :resultat "-- gagné --")
if /i %choix% equ 0 (if %item% == pierre call :resultat "-- perdu --")
if /i %choix% equ 0 (if %item% == feuille call :resultat "!! egalite !!")

goto :debut

:resultat
echo %~1
echo. & pause
goto :eof

Répondre