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
Partager