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 :

Bases pour Scheme


Sujet :

Scheme

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 15
    Par défaut Bases pour Scheme
    bonjour, je dois creer une base pour un jeu de morpion en scheme. Ma base a l'air de fonctionner mais j'ai un soucis car la base ne renvoie pas ce que je veux. Le but de cette base est de faire rentrer au joueur sa liste de pions présents dans le jeu (les pions etant numéroté de 1 a 9 suivant leur position) et la liste des pions de l'ordi. Et la base doit leur renvoyer le plateau de jeu sous forme d'un tableau de 3 ligne 3 colonne avec les pions placés. Ma base ne renvoie pas la liste des pions sous forme de tableau et je pense que c'est parce que j'utilise "caadr". Pouvez vous m'aider?
    Voici ma base ainsi que les fonctions que j'utilise pour la faire fonctionner:

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    ;;FONCTION CONCAT QUI MET BOUT A BOUT DEUX LISTES 
    (define (concat l1 l2)
      (if (null? l1) l2
          (cons (car l1) (concat (cdr l1) l2))))
    
    ;;LISTEMAGIQUE QUI EST LA LISTE DU CARRE MAGIQUE
    (define listemagique '("4 " "9 " "2 " "3 " "5 " "7 " "8 " "1 " "6 "))
    
    ;;FONCTION TABLEAU QUI VA "DESSINER" LE JEU DU MORPION AVEC 3 LIGNES ET 3 COLONNES
    (define (tableau liste colonne)
      (cond ( (null? liste) (newline) )
            ( (eq? 1 colonne) ( begin (display (car liste)) (car liste) ) ( newline ) (tableau (cdr liste) 3))
     (else ( begin
         (display (car liste))
         (car liste)
         (tableau (cdr liste) (- colonne 1))))))
    
    
    ;; BASE 
    
    (begin (display "donnez la liste de vos pions ainsi que ceux de l'ordinateur présents sur le plateau de jeu correspondants aux nombres du carré magique ainsi que base1, base2 ou base3 suivant dans quel niveau de jeu vous voulez jouer, dans la formule (morpion listejoueur listeordinateur base)") 
     (newline)
     (tableau listemagique 3))
    
    ;;la base est sous la forme d'une liste de cases deja remplies dans le jeu pour le joueur et pour l'adversaire et elle va renvoyer un nouveau plateau de jeu dans lequel l'ordinateur aura posé son pion (de la forme ( (liste des pions du joueur) (liste des pions de l'ordinateur) )  -->  (tableau du nouveau plateau de jeu) 
                                  
    (define base1 '(
                    ((1) ( '("_ " "_ " "_ " "_ " "O " "_ " "_ " "X " "_ ")  ) ) ) )
                   
                 
    (define (moi liste1 liste2)  
      (concat liste1 liste2))
     
    (define (morpion etat1 etat2 rules) 
      ;; si plus de regles, reste dans le meme etat (ignore percept)
      (if (null? rules) '(etat1 etat2)
          ;; sinon on regarde la premiere regle
          (let* ( (first (car rules))
                  (reste (cdr rules))
                  (ok    (equal? (moi etat1 etat2) (car first) )))
            ;; si la premiere regle est applicable, on le fait
            ;; sinon on regarde les autres de regles
            (if ok (nextstate etat1 etat2 first) (morpion etat1 etat2 reste)))
          )
      )
    
    (define (nextstate etat1 etat2 list)
      (tableau (cadr list) 3 ) )
    
    ;; le tableau ne marche pas.

    merci

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Par défaut
    Commentaires généraux
    Je ne vois pas ce que tu veux dire par « le tableau ne marche pas » à la fin de ton programme. Tu ne l'as pas appelé c'est normal.
    Quand tu fais « (tableau listemagique 3) » elle fonctionne bien. Elle affiche ce qu'il y a dans ta liste... au passage c'est donc une mauvaise idée de l'appeler tableau. Tu devrais l'appeler afficher-tableau ou quelque chose du genre. Ça éviterait que tu dises LE tableau alors que c'est LA fonction tableau

    Par contre c'est quoi cette fonction moi ??
    C'est pas un nom de fonction ça.
    Et qu'est ce que base1 ?
    Finalement à quoi servent nextstate et morpion ?
    nextstate a deux arguments inutiles. À quoi servent-ils ?

    Commentaires pour ta question
    Comment tableau pourrait-elle afficher quoique ce soit d'autre que le contenue de la liste ? Quel est l'algorithme que tu voulais implémenter ?
    Parce que là je ne vois pas. Tu dis que c'est peut-être à cause du caadr mais je ne vois aucun appel à cette fonction.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 15
    Par défaut
    En fait le prof nous a donné une base en exemple avec les fonction moi, evolue (que j'ai renommée morpion) et nextate. Je les ai modifiée pour pouvoir les faire marcher avec mon jeu de morpion. Mon seul souci c'est qu'a la fin la base nous affiche le tableau de la liste et non ce qu'il y a dans la liste. Comme si on faisait (tableau '( 1 2 3 4 5 6 7 8 9) 3), la ça affiche la liste sous forme d'un "tableau".

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 15
    Par défaut
    En fait pour faire fonctionner la base, il faut lui donner la liste des pions dans le jeu.
    Pour l'instant je n'ai créé qu'une regle dans la base, celle ou il n'y a qu'un pion du joueur placé dans le jeu, situé dans la case 1. Pour appeler la base il faut faire (morpion '(1) '() base1). Et c'est la que ça affiche la liste et non pas le tableau de la liste.

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Par défaut
    Masi tu n'as pas répondu à beaucoup de mes questions.
    Par exemple, pourquoi nextstate a-t-il deux paramètres inutiles ?
    Et que doivent faire ces fonctions ?

    Je n'ai pas trop envie de me lancer sans avoir cette information pour ne pas chercher pour rien.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 15
    Par défaut
    Finalement je n'ai plus besoin de ce tableau, meme si j'aurais bien aimé comprendre pourquoi ça n'affichait pas la liste sous forme de tableau..
    Le prof nous a donné une base avec les fonction qui servent a l'utilisation de cette base, je n'ai fait que reprendre ces fonctions (moi, morpion et nexstate) qui apparement etaient indispensable au fonctionnement de la base, moi je ne sais pas si on en a reelement besoin, je les ai comprises mais je ne saurai pas les refaire .
    Maintenant j'ai changé de base donc plus besoin de tableau mais si quelqu'un a une reponse a ma question a propos de l'affichage du tableau qu'il m'en fasse part pour ma culture perso... Sinon ça va me perturber pendant des semaines

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

Discussions similaires

  1. Quelle base pour une application e-musique ?
    Par Sie O'Brian dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 25/04/2006, 09h49
  2. Réponses: 1
    Dernier message: 12/02/2006, 14h58
  3. [MySQL] Parcourir la liste des emails extraits de la base pour envois de mail
    Par Ylias dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 11/02/2006, 22h34
  4. Recherche base pour gérer un championnat de rugby
    Par linou dans le forum Décisions SGBD
    Réponses: 14
    Dernier message: 06/04/2005, 18h39
  5. [FMP]Exporter une base pour Excel2003
    Par Jack55 dans le forum Autres SGBD
    Réponses: 1
    Dernier message: 23/12/2004, 10h59

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