2017-09-20 1 views
0
(define-struct make-no-pairs[]) 
(define-struct some-pairs[p ps]) 

Cette structure prend une "paire" (2 chiffres) et un "paires" (make-des paires [p ps])Effacer le dernier "paire" à partir d'une des paires définissent-struct

exemple

(make-some-pairs (make-pair 10 10) (make-no-pairs)) 




(check-expect (any-undo (make-some-pairs 10 10 (make-no-pairs))) make-no-pairs) 

Comment devrais-je concevoir la fonction «any-undo» pour rendre cela possible?

Nous faisons récursivité et je suis en train de faire une animation big-bang qui crée un cercle chaque fois qu'il ya un événement de souris et supprime le dernier cercle chaque fois qu'une touche est enfoncée.

Merci d'avance! Si vous avez besoin de plus de mon code pour m'aider à commenter et je vais poster l'ensemble du programme.

+0

Je pense que vous avez besoin de poster ce que font certaines paires et ce que any-undo fait –

+0

aussi pourquoi auriez-vous une structure pour représenter aucune paire ne pouvez-vous pas simplement utiliser vide? –

Répondre

0

Une idée que vous pouvez suivre est d'imposer une commande. Toujours ajouter à la fin de la liste ou au début de la liste, et toujours supprimer à la fin de la liste de l'avant de la liste.

Vous pourriez avoir votre fonction en ajoutant ne somethling comme

(define (handle-click x y aworld) 
    (... define logic to cons new (x, y) to front of 
    your list of points in your world)) 

(define (handle-key akey aworld) 
    (... define logic to remove the first element of the list 
    of (x, y) in your world (should be very simple))) 

Ensuite, il suffit de les utiliser dans votre grande fonction bang et il devrait fonctionner :) Je peux ajouter des détails de mise en œuvre de ces fonctions mais je aurais besoin de plus d'informations sur le monde que vous fournissez au big bang et à vos fonctions touche/souris

Aussi, je dirais que "Some-pairs" ne devrait pas être une structure en soi, mais une partie de votre monde qui est juste une liste de paires. Bien sûr, c'est sans voir tout votre code.