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

Scheme Discussion :

Renvoie un Display au lieu d'un "black_jack"


Sujet :

Scheme

  1. #1
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 229
    Points : 168
    Points
    168
    Par défaut Renvoie un Display au lieu d'un "black_jack"
    Bonjour à tous
    Je me joins a vous car je débute en scheme et je n'arrive pas à résoudre ce problème

    La fonction ci_dessous est censé me renvoyer un "black_jack" (le nom de ma viariable) mais malheureusement me renvoie uniquement un "void"
    et je ne vois absolument pas comment regler le problème ...

    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
    (define tour_de_jeu ; affiche le jeu et écrit un message
      (lambda (black_jack) ; liste de 3 sous-listes
        (let(
             (jeu_en_cours (pioche_debut black_jack))
            )
           (if (< 21 (total_cartes (cartes_joueur jeu_en_cours)))
               (afficher_jeu jeu_en_cours)
               (if (or (< 21 (total_cartes (cartes_joueur jeu_en_cours)))(and (< (total_cartes (cartes_joueur jeu_en_cours)) (total_cartes (cartes_banque jeu_en_cours)))(> 22 (total_cartes (cartes_banque jeu_en_cours)))))
                   (begin (display "VOUS AVEZ PERDU !!!!"))
                   (if (= (total_cartes (cartes_joueur jeu_en_cours)) (total_cartes (cartes_banque jeu_en_cours)))
                       (begin (display "EGALITE!!!!"))
                       (begin (display "VOUS AVEZ GAGNEZ !!!!"))
                   )
               )
            )
        )
      )
    )
    Merci d'avance pour l'aide que vous pourrez m'apporter
    Cdlt
    DoDO

  2. #2
    Membre actif
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2013
    Messages : 152
    Points : 275
    Points
    275
    Par défaut
    Bonjour !

    Essaie ceci :

    Code Scheme : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    (define tour-de-jeu ; affiche le jeu et écrit un message
      (lambda (black-jack) ; liste de 3 sous-listes
        (let* ((jeu-en-cours (pioche-debut black-jack))
               (j (total-cartes (cartes-joueur jeu-en-cours)))
               (b (total-cartes (cartes-banque jeu-en-cours))))
          (cond ((< 21 j) (afficher-jeu jeu-en-cours))
                ((< j b 22) (display "VOUS AVEZ PERDU !!!!"))
                ((= j b) (display "EGALITE!!!!"))
                (otherwise (display "VOUS AVEZ GAGNEZ !!!!"))))))

    J'ai recopié le code, mais je crois qu'il doit faire la même chose. Si ça ne marche pas, peut-être y a t-il un bug dans afficher-jeu.

    Ah, j'ai aussi changé tous les « _ » en « - ». D'ordinaire on n'emploie pas de tirets bas en Lisp; en revanche, les tirets sont très « lispy ».

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    [chipotage]
    Code Scheme : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                (otherwise (display "VOUS AVEZ GAGNÉ !!!!"))))))
    [/chipotage]

  4. #4
    Membre actif
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2013
    Messages : 152
    Points : 275
    Points
    275
    Par défaut
    Mille pardons ! Je ne pouvais pas le tester. C'est Common Lisp qui m'est plus familier, il n'y a ni else ni otherwise là...

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Moi, c'est plutôt emacs-lisp (mais avant c'était Le_lisp (et encore avant c'était CL))...

    Euh... donc ce serait plutôt:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                (t (display "VOUS AVEZ GAGNÉ !!!!"))))))

  6. #6
    Membre actif
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2013
    Messages : 152
    Points : 275
    Points
    275
    Par défaut
    Alors #t, t c'est CL. Mais on peut aussi écrire else, ce qui me paraît plus idiomatique.

    Si tu fais allusion à l'orthographe, j'ai gardé celle de l'originale.

Discussions similaires

  1. Réponses: 8
    Dernier message: 05/05/2011, 13h44
  2. le formulaire renvoi des 00 au lieu des champs saisi
    Par mademoizel dans le forum ASP
    Réponses: 4
    Dernier message: 23/01/2008, 14h32

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