Création
d'entreprise
Posez votre question Signaler

Black jack en scheme [Résolu]

ily69 4Messages postés 22 mai 2010Date d'inscription 22 mai 2010Dernière intervention - Dernière réponse le 25 mai 2010 à 13:56
Bonjour, en faite je dois programmer le jeu de black jack et pour commencer je dois faire une fonction qui prend 2 arguments en paramètre ( le premier c'est la hauteur de la carte , as , 3 ,valet ....et le second c'est la couleur , pique , coeur ...
voila l'appelle de la fonction :
- (fonction '(12 3) -> ( dame pique)
comment puis -je attribuer un nom à chaque nombre ( 12 reçoit dame ...) j'ai essayé avec un let* mais j'y arrive pas , merci .
Lire la suite 

Black jack en scheme »

6 réponses
Réponse
+0
moins plus
Oh, du Scheme ! C'est pas souvent qu'on en voit sur ce forum. Allez, c'est chiant le Scheme mais je vais répondre sinon personne le fera ^^
Moi je verrais bien le truc avec une ou deux fonctions intermédiaires, genre :

(define hauteur
	(lambda (num)
		(cond ((= num 1) "as")
			((= num 11) "valet")
			((= num 12) "dame")
			((= num 13) "roi")
			(else num)
		)))

Y'aura ptêt deux-trois détails à revoir pour la syntaxe, je fais ça de mémoire.
Tu me suis ? Par contre des fois les fonctions intermédiaires ça plaît pas au prof... Le mien disait que c'était de la triche...
Ajouter un commentaire
Réponse
+0
moins plus
super c'est tout à fait ce que je voulais savoir , je savais pas qu'on pouvait faire ça avec un cons , merci beaucoup :) , je vais faire une autre fonction pour les couleurs et une troisième qui prend en argument ses deux fonction pour donner la valeur de la carte , merci encore .
Ajouter un commentaire
Réponse
+0
moins plus
j'ai un petit problème là ,voila ce que j'ai fais

(define hauteur
(lambda (num)
(cond ((= num 1) "as")
((= num 11) "valet")
((= num 12) "dame")
((= num 13) "roi")
(else num)
)))

(define couleur
(lambda (a)
(cond ((= a 1) "carreau")
((= a 2) "coeur")
((= a 3) "pique")
((= a 4) "trefle")
(else 'erreur)
)))
(define carte
(lambda(l)
(list(hauteur couleur))))

quand j'exécute ça me renvoie un message d'erreur comme quoi "as" et carreau ont le même nombre qui est 1 , alors que ce n'est la même fonction , normalement ça marche non ?
Ajouter un commentaire
Réponse
+0
moins plus
Pourquoi tu n'as qu'un seul paramètre dans la fonction carte ? C'est une liste ?
Je ne comprends pas ton message d'erreur mais tu devrais essayer car et cdr pour extraire les arguments de ta liste.
Ajouter un commentaire
Réponse
+0
moins plus
(define hauteur
(lambda (l)
(cond ((equal? (car l) 1) "as")
((equal? (car l) 11) "valet")
((equal? (car l) 12) "dame")
((equal? (car l) 13) "roi")
(else (car l)
))))



(define couleur
(lambda (l2)
(cond ((equal? (cadr l2) 1) "carreau")
((equal? (cadr l2) 2) "coeur")
((equal? (cadr l2) 3) "pique")
((equal? (cadr l2) 4) "trefle")
(else 'erreur)
)))
(define carte
(lambda(x)
(list(hauteur couleur))))


j'ai aussi fais avec le cdr l mais ça ne marche pas , je peux pas mettre la foncton couleur dans la première ?
Ajouter un commentaire
Réponse
+0
moins plus
Hm, tu ne pars pas dans la bonne direction ;)

Tu oublies les arguments quand tu appelles hauteur et couleur. Je ne te l'ai pas dit car je pensais que tu t'en rendrais compte assez vite...

(list (hauteur machin) (couleur truc))
À toi de trouver machin et truc ;)
Ajouter un commentaire
Ce document intitulé « black jack en scheme » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?