IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

"4 était inattendu"


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 8
    Par défaut "4 était inattendu"
    Salut à tous,

    Voilà ce que je dois faire:

    Travail à faire : Ecrire un script intitulé jeu qui consiste à faire trouver par l'utilisateur la valeur d'un entier x en un nombre limité de coups.

    Si l'utilisateur saisit une valeur supérieure à x on affichera "trop grand", si elle est inférieure on affichera "trop petit" et enfin si l'utilisateur trouve la valeur exacte on affichera "gagne !!". A chaque essai on affichera également le nombre d'essais restants. A la fin si l'utilisateur n'a pas trouvé x on affichera "perdu !!".

    Le nombre d'essais sera fixé par une variable nbcoups et la valeur de x sera tirée aléatoirement grâce à la variable système RANDOM. Utilisez le modulo pour réduire l'intervalle du tirage.

    Exemple: si x entre [0,20] alors nbcoups=5


    et voilà ce que j'ai fait:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    @écho off
    cls
    
    
    set x=%RANDOM%
    set nbcoups=5
    
    :début
    set /p val=Saisir un nombre entier entre 0 et 20 inclus:
    if i/ %val% GTR %x% echo Trop grand… & goto cprest
    if i/ %val% LSS %x% echo Trop petit & goto cprest
    if i/ %val% EQU %x% echo Gagné !!! & goto fin
    
    :cprest
    set /a nbcoups=%nbcoups%-1
    if i/ %nbcoups% GTR 0 echo Il vous reste %nbcoups% coups… & goto début
    if i/ %nbcoups% EQU 0 echo Perdu !!!
    
    :fin

    le problème, c'est que ça m'affiche "Trop grand..." ou "Trop petit" mais après ça m'affiche "4 était innatendu".

    Donc voilà, j'ai 2 problèmes en somme: le script bug au niveau de "set /a nbcoups=%nbcoups%-1" je pense, et j'aimerai aussi que random pioche dans l'intervalle [0 ; 20] et pas dans l'intervalle [0 : 32767]...

    Merci d'avance pour vos futurs réponses, bye

  2. #2
    Inactif  
    Avatar de Aitone
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    3 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 3 562
    Par défaut
    Salut,

    Au début tu déclare "coups" puis ensuite tu te sers de "nbcoups"

    Déclare nbcoups directement

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 8
    Par défaut
    excuse, j'ai fait une faute de frappe...En fait j'ai bien mis "nbcoups=5" au début, et d'ailleurs, il m'affiche bien le résultat du calcul %nbcoups%-1, mais il me 4 était inattendu...Et après du coup il retourne pas à l'étiquette début...
    Pourquoi?

  4. #4
    Membre émérite
    Avatar de maxim_um
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 895
    Par défaut
    salut Itach et bienvenue à toi sur le forum.

    tes erreurs se trouvaient essentiellement sur les paramètres de «if»

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    @echo off
    cls
    
    
    set /a x=%random%%%21
    set nbcoups=5
    
    :début
    set /p val=Saisir un nombre entier entre 0 et 20 inclus:
    if /i %val% GTR %x% echo Trop grand… & goto cprest
    if /i %val% LSS %x% echo Trop petit & goto cprest
    if /i %val% EQU %x% echo Gagné !!! & goto fin
    
    :cprest
    set /a nbcoups=%nbcoups%-1
    if /i %nbcoups% GTR 0 echo Il vous reste %nbcoups% coups… & goto début
    if /i %nbcoups% EQU 0 echo Perdu !!!, il fallait trouver %x%
    
    :fin
    Tu peux encore l'améliorer.

    Bonne continuation.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 8
    Par défaut
    Merci max pour ta réponse, mais il me met toujours 4 était innatendu...Je comprend pas pourquoi, pourtant il fait le calcul, car il écrit la valeur 4, mais je ne sais pas ce que ça veut dire "était innatendu", de plus, après plus rien ne ce passe...
    Une autre idée?

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 8
    Par défaut
    Petite précision étrange que je viens de constater:
    Ce fichier Jeu.bat que j'ai créé, je l'au fait avec l'éditeur de texte du DOS.
    Etrangement, quand je le fais avec le bloc_notes, cette erreur n'apparait plus, le programme revient bien au début, mais par contre, on a toujours 5 coups...
    Quelqu'un peut-il m'expliquer toutes ces bizarrerie...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. erreur "3 était inattendu" .bat ?
    Par yaumme dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 11/04/2008, 17h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo