CMD - commande pour donner un nom aléatoire

Résolu
PlayFox -  
 PlayFox -
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

  1. jee pee Messages postés 9439 Date d'inscription   Statut Modérateur Dernière intervention   9 977
     
    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
    1. PlayFox
       
      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
  2. jee pee Messages postés 9439 Date d'inscription   Statut Modérateur Dernière intervention   9 977
     
    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
    1. PlayFox
       
      MON DIEU, merci beaucoup !
      0