Black jack en scheme

Résolu
ily69 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -  
Groarh Messages postés 682 Date d'inscription   Statut Membre Dernière intervention   -
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 .

6 réponses

Groarh Messages postés 682 Date d'inscription   Statut Membre Dernière intervention   185
 
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...
0
ily69 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
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 .
0
ily69 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
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 ?
0
Groarh Messages postés 682 Date d'inscription   Statut Membre Dernière intervention   185
 
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ily69 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
(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 ?
0
Groarh Messages postés 682 Date d'inscription   Statut Membre Dernière intervention   185
 
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 ;)
0