CMD - commande pour donner un nom aléatoire

Résolu/Fermé
PlayFox - Modifié le 19 juil. 2018 à 19:54
 PlayFox - 20 juil. 2018 à 10:59
Bonjours,

J'essaye de créer un petit : "feuille,caillou,ciseau" mais j'ai un problème avec mon code qui génère une réponse aléatoire à son choix d'avant.
:loop
set /a num=%random% %% 2
if %num% equ 0 (echo Rock - DRAW) else (echo Paper - YOU LOOSE)
pause
goto :loop

Le problème c'est qu'il peut me donner uniquement que 2 possibilités. si je rajoute ça
:loop
set /a num=%random% %% 2
if %num% equ 0 (echo Rock - DRAW) else (echo Paper - YOU LOOSE) else (echo Scissor - YOU WIN)
pause
goto :loop

La commande ne fonctionne plus.

Comment faire ?

2 réponses

jee pee Messages postés 39557 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 11 avril 2024 9 213
Modifié le 19 juil. 2018 à 19:24
Salut,

Déjà il manque le reste du code car au vu des messages c'est qu'avant d'arriver dans la boucle on sait déjà ce qu'a choisi le joueur : ROCK ???

Après le goto loop va boucler sur le test sans que l'utilisateur fasse un nouveau choix, c'est sans fin.

Puis pour avoir 0, 1 ou 2, donc 3 réponses, il faut un paramètre 3 sur round

Et le test serait alors :

set /a num=%random% %% 3 
IF "%num%" equ 0 (
   echo Rock - DRAW
) ELSE (
    IF "%num%" equ 1 (
        echo Paper - YOU LOOSE
    ) ELSE (
    echo Scissor - YOU WIN
    )
)



0
Hey merci pour ton commentaire,

Cependant t'as commande ne fonctionne pas car elle me propose uniquement le ciseaux alors que cela devrait être aléatoire.


Pour te préciser sur une chose, dans le "jeu" tu as le choix de prendre soit caillou, papier ou ciseau donc c'est pour ça que on connait ce que le joueur à choisi. peut-être que cela va plus de parler

--------------------------------------------------------------------------------------------------

echo.
echo.
echo. Rock (1)
echo.
echo.
echo. Paper (2)
echo.
echo.
echo. Scisossrs (3)
echo.
echo.
set /p joueur=
if %joueur%==1 goto Rock
if %joueur%==2
if %joueur%==2 goto Papergoto Scisossrs
) else (
goto nbrjr
:Rock
cls
echo.

--------------------------------------------------------------------------------------------------

la suite serai ta ligne de code mais elle n'est pas aléatoire. Elle choisi toujours le ciseau.


Si tu veux le code complet demande, pas de soucis

;)
0
jee pee Messages postés 39557 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 11 avril 2024 9 213
Modifié le 20 juil. 2018 à 10:58
La syntaxe exacte est
set /a num=%random%%%3


Des vues partielles ce n'est pas terrible, j'ai réécris le tout

@echo off
CLS
:debut
echo.
echo.      Rock     (1)
echo.      Paper    (2)
echo.      Scissors (3)
echo.
set /p choix=Your choice ?  
echo.
if %choix%==1 set joueur=Rock& goto suite
if %choix%==2 set joueur=Paper& goto suite
if %choix%==3 set joueur=Scissors& goto suite
if %choix%==0 exit
goto debut
:suite
set /a num=%random%%%3+1
if %num%==1 set ordi=Rock
if %num%==2 set ordi=Paper
if %num%==3 set ordi=Scissors
echo. | set /p Dummy=Match %joueur% VS %ordi% - 
IF %joueur% equ %ordi% (echo DRAW
) ELSE (
 IF %joueur% equ Rock     if %ordi% equ Paper (echo YOU LOOSE
  ) ELSE echo YOU WIN
 IF %joueur% equ Paper    if %ordi% equ Rock  (echo YOU WIN
  ) ELSE echo YOU LOOSE
 IF %joueur% equ Scissors if %ordi% equ Rock  (echo YOU LOOSE
  ) ELSE echo YOU WIN
)
echo.
goto debut




0
MON DIEU, merci beaucoup !
0