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

Caml Discussion :

problème de typage pour un jeu d'échec


Sujet :

Caml

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2008
    Messages : 28
    Points : 16
    Points
    16
    Par défaut problème de typage pour un jeu d'échec
    Bonjour à tous, j'ai un problème dans un programme que j'écris :
    il concernes l'arbre des coups :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    type abrDeCoup = PasDePlateau | int * case array array | Noeud of case array array * abrDeCoup list;;
    En fait je voudrai dire :
    soit il n'y a pas de coup à jouer
    soit l'ordi a un coup affecté d'une note pour ce coup, et ne vas pas plus loin dans la recherche de coup
    soit il a un coup qui débouche sur tous les autres coups possibles.

    c'est le type "int * case array array" qui pose problème. Je l'ai rajouté dans une nouvelle version de mon programme, mais maintenant ça ne marche plus
    Quelqu'un pourrait-il m'expliquer l'erreur ?
    Merci de votre attention !

  2. #2
    Membre émérite
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 704
    Points : 2 990
    Points
    2 990
    Par défaut
    ce genre de types s'appelle un type algébrique et en général on l'écrit en 3 étapes.

    étape n°1, tu énumère tous les constructeurs possibles (leur nom doit commencer par une lettre majuscule) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    type arithmetic =
      | Int
      | Neg
      | Add
      | Sub
      | Mul
      | Div
    étape n°2, tu complète chaque constructeur avec un type produit (qui est l'information dont chaque cas a besoin pour être déconstruit) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    type arithmetic =
      | Int of int
      | Neg of arithmetic
      | Add of arithmetic * arithmetic
      | Sub of arithmetic * arithmetic
      | Mul of arithmetic * arithmetic
      | Div of arithmetic * arithmetic
    étape n°3, ce même type peut être détruit (c'est-à-dire placé à gauche de l'opérateur → ) à l'aide de function (ou de match) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    let rec eval = function
      | Int n -> n
      | Neg a -> - eval a
      | Add(a,b) -> eval a + eval b
      | Sub(a,b) -> eval a - eval b
      | Mul(a,b) -> eval a * eval b
      | Div(a,b) -> eval a / eval b
    cette façon de concevoir est un peu analogue à la méthode UML (repérage des classes, puis des attributs-membres, puis des fonctions-membres).
    la principale différence c'est qu'en Caml la cohérence de ta conception est vérifiée par le système de typage.
    Du même auteur: mon projet, le dernier article publié, le blog dvp et le jeu vidéo.
    Avant de poser une question je lis les règles du forum.

  3. #3
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2008
    Messages : 28
    Points : 16
    Points
    16
    Par défaut
    merci pour ta réponse !

Discussions similaires

  1. Problème de plateforme pour un jeu de plateforme
    Par Guiguimon dans le forum SDL
    Réponses: 4
    Dernier message: 26/10/2009, 16h01
  2. Problème du brahmane et du jeu d'échecs
    Par biba13 dans le forum Pascal
    Réponses: 3
    Dernier message: 11/02/2008, 15h10
  3. Problème pour le jeu de la vie
    Par daninou dans le forum Débuter
    Réponses: 8
    Dernier message: 04/12/2007, 21h14
  4. Problème pour un jeu de pong
    Par Galip dans le forum C++Builder
    Réponses: 4
    Dernier message: 05/04/2007, 08h28
  5. Problème d'accelération pour un jeu
    Par jbidou88 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 6
    Dernier message: 08/05/2006, 10h16

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